别再只做生成后筛选了,ProteinGuide 正在把蛋白生成推向“目标感知采样”

📅 2026/8/13 11:39:01
别再只做生成后筛选了,ProteinGuide 正在把蛋白生成推向“目标感知采样”
导语在蛋白设计和抗体工程项目中我们现在已经不太缺“能生成序列”的模型。ProteinMPNN 可以基于骨架做反向设计ESM3 / ESMC 这类蛋白语言模型可以在序列空间中补全、改写和生成扩散模型和 flow matching 模型也开始进入蛋白结构与序列联合生成流程。真正困难的是另一件事企业研发并不需要一批“看起来像蛋白”的序列而是需要一批在真实任务中更可能成功的候选分子。比如酶工程里希望活性更高但稳定性不掉抗体工程里希望亲和力提升但可开发性风险不升高人源化项目里希望 humanness 提高但 CDR 构象和结合能力尽量保持。这些目标很少是单一指标也很少完全一致。更多时候它们彼此拉扯一个性质被优化另一个性质就可能变差。针对这个问题业界做了两种尝试。第一种是生成后筛选也就是先从预训练模型独立采样再由预测器排序。该方法实现简单但效率由目标序列在原始生成分布中的出现概率决定。第二种是模型微调即使用高性能或目标家族序列继续训练生成模型可以使模型更聚焦于目标数据附近但其统计结果不如贝叶斯条件化清晰。小规模实验数据还可能覆盖预训练模型从大规模数据中学到的通用知识出现遗忘同时微调往往将分布集中在训练样本附近因此适合插值却未必适合超越训练数据的外推任务。ProteinGuide 和很多“端到端训练一个更强生成模型”的工作不一样它的解决思路是能不能不重新训练大模型只在采样阶段把新的性质预测器接进去让已有生成模型朝目标性质偏移具体的核心思想是预训练生成模型负责“像不像蛋白”性质预测器负责“是否满足当前任务目标”两者不是简单串联筛选而是在采样过程中被统计意义上地融合起来。论文将这种方法称为一种 on-the-fly conditioning即在不重新训练生成模型的前提下对生成过程进行即插即用式引导。文献速递项目内容工作名称ProteinGuide: On-the-fly property guidance for protein sequence generative models / Nature Biotechnology 版本题名为 Property guidance for protein sequence generative models with ProteinGuide核心问题如何在不重新训练生成模型的情况下把实验数据、性质预测器或任务约束接入蛋白生成采样适配模型论文强调可适配 masked language models、order-agnostic autoregressive models、diffusion models 和 flow matching models例如 ESM3、ProteinMPNN、MultiFlow 等模型类型代表任务稳定性、活性、CATH fold 生成以及两个相互 tension 的性质联合优化实验验证作者在 adenine base editor 场景中结合 wet-lab 数据进行引导设计公开摘要称单轮 ProteinGuide 使用一个 2,000 variants 的 pooled library 数据实现了优于此前七轮 directed evolution 的编辑效率结果工具实现作者公开了实验代码并发布 ProteinGen Python package用于组织 ProteinGuide 与生成模型、预测模型和 library design workflow 的组合使用5分钟速览研究任务这项工作要解决的是如何在不重新训练大型蛋白生成模型的情况下把新获得的序列—实验性质数据加入生成过程使模型更倾向于提出满足稳定性、活性、功能类别或多目标要求的蛋白序列。核心方法ProteinGuide将预训练生成模型提供的蛋白合理性先验与性质预测器提供的目标性质似然通过贝叶斯条件化在采样阶段结合。它同时建立了掩码扩散、流匹配、生成式掩码语言模型和任意顺序自回归模型之间的训练与采样联系使同一套指导思想能够应用于ESM3、ProteinMPNN和MultiFlow等不同模型。主要输入系统需要一个预训练蛋白生成模型、一组序列—性质实验数据以及由这些数据训练出的分类或回归预测器。根据任务不同还可以加入固定蛋白骨架、蛋白家族、功能类别、允许设计的位点和目标性质阈值。主要输出输出是一组经过性质引导的候选蛋白序列。候选通常还需要附带性质得分、达到目标阈值的概率、结构一致性、与实验数据的距离、多样性和新颖性用于后续计算复核与实验筛选。关键结果作者在稳定性插值、功能类别生成、单性质外推、多性质Pareto优化和腺嘌呤碱基编辑器湿实验中验证了ProteinGuide。结果说明指导采样在目标序列较为稀少时能够比单纯后筛选或微调更有效地重新分配生成概率但这一优势取决于性质预测器的可靠性。ProteinGuide 解决的不是“生成模型能力”而是“生成模型如何被任务目标临时改写”如果从算法位置上看ProteinGuide 位于生成模型和实验验证之间。传统流程一般是这样的先用生成模型产生大量序列再用性质预测模型、结构预测模型、可开发性规则和人工经验层层过滤。这个流程能用但它有一个明显问题性质模型只是在最后“筛掉不好的结果”并没有参与“结果是怎么生成出来的”。这就像在一个巨大序列空间里随机撒网然后再挑鱼。筛选越严格留下来的序列越少如果生成模型本身没有朝目标性质方向偏移那么后端过滤会很低效。ProteinGuide 的思路不是把性质预测器放在生成之后而是把它放进采样过程之中。生成模型每一步要决定当前位置生成哪个氨基酸时不再只看“这个氨基酸在自然蛋白分布中是否合理”还要看“这个氨基酸是否让目标性质更可能满足”。用更直观的话说ProteinGuide 不是在生成之后给序列打分而是在生成过程中不断问一个问题如果当前位置填成这个氨基酸整条序列更像一个满足目标性质的蛋白还是更不像这就是 ProteinGuide 最值得公众号读者理解的地方。它不是一个新的 predictor也不是一个新的 ProteinMPNN而是一种把 predictor 接入 generator sampling 的方法。模型到底是如何采样的可以把 ProteinGuide 的采样理解成三层逻辑。第一层是生成模型自己的分布。对于 ProteinMPNN 来说这个分布来自结构条件下的反向折叠设计对于 ESM3 / ESMC 这类 masked language model 来说它来自“给定上下文后预测被 mask 位置氨基酸”的能力对于 diffusion 或 flow matching 模型来说它来自从噪声状态逐步去噪到完整序列的过程。论文的关键抽象是这些看起来不同的生成模型都可以被放到一个离散状态空间的生成 / 去噪 / 补全过程中理解。第二层是性质预测器。这个 predictor 接收一条完整或部分填充的序列输出某个性质是否满足目标。例如稳定性是否超过阈值活性是否进入高活性区间或者某个 fold label 是否属于目标类别。在企业落地里这个 predictor 可以来自公开数据训练也可以来自内部实验数据训练还可以来自每一轮 DBTL 中新获得的实验反馈。第三层是引导后的采样分布。ProteinGuide 的目标不是从原始生成模型的分布中采样而是从一个被性质条件约束后的分布中采样。抽象表达就是目标采样分布 ∝ 生成模型的蛋白先验 × 性质预测器给出的目标满足概率换句话说生成模型告诉我们“哪些序列像合理蛋白”性质预测器告诉我们“哪些序列更可能满足任务目标”。ProteinGuide 在每一步采样时把这两类信息融合到 token 概率里。在实现上可以把这个过程想象成“guided logits”。原始生成模型会给每个候选氨基酸一个 logit 或 log probabilityProteinGuide 额外计算这个候选氨基酸对目标性质的贡献然后把性质贡献作为引导项加进去。最后采样器不是从原始 logits 里抽样而是从被引导修正后的 logits 里抽样。这里有两种常见实现路径。一种是 TAG也就是 Taylor-Approximate Guidance。它用性质预测器 log probability 的一阶 Taylor 近似来估计每个位置、每个氨基酸变化对目标性质的影响。它的优点是效率较高因为每一步通常只需要一次 backward但它依赖梯度质量因此更适合小型可微 predictor、梯度稳定的模型以及不会严重梯度饱和的目标函数。ProteinGen 文档中也明确提示TAG 使用 predictor log-prob 的一阶 Taylor expansion每个采样步做一次 backward。另一种是 DEG也就是 Discrete Enumeration Guidance。它不强依赖梯度而是枚举当前位置所有可能的氨基酸候选分别看这些候选对性质预测器输出的影响再进行重加权。它更稳健尤其适合不太信任梯度大小、predictor sigmoid 过陡、或者 frozen language model probe 梯度传播不可靠的场景代价是计算更贵因为需要对候选 token 做更多 forward。ProteinGen 文档对 DEG 的描述也很直接它枚举每个位置的 vocabulary token 并进行重加权更依赖 predictor 的排序可靠性而非梯度幅度。这背后的工程含义非常重要企业端不应该只问“能不能接 predictor”而应该问“我的 predictor 适合用 TAG 还是 DEG”。如果 predictor 是一个简单、可微、校准良好的模型TAG 可能更高效如果 predictor 本身噪声较大或者梯度并不可信DEG 往往更稳妥尤其是在早期实验数据量有限的蛋白工程项目中。双性质引导不是把两个分数简单相加ProteinGuide 另一个值得重点写的地方是它面对两个互相 tension 的性质时不是简单做一个“综合分”。在真实研发里双性质目标很常见。比如酶设计希望 activity 高、stability 也高抗体设计希望 binding 更强、aggregation 风险更低人源化设计希望 humanness 提高、亲本结合构象保持pH 依赖性设计希望一个 pH 条件下结合增强另一个 pH 条件下结合减弱。最容易犯的错误是把两个 predictor 输出直接线性相加score a × property_1 b × property_2这种做法工程上简单但问题很多。不同性质的量纲不同分数分布不同噪声水平不同实验置信度也不同。一个 predictor 分数看起来提升 0.1未必等价于另一个 predictor 分数提升 0.1。更麻烦的是当两个性质冲突时简单加权很容易得到一个看似总分不错、但任何单项都不真正满足实验要求的“折中伪优解”。ProteinGuide 的更合理理解是把每个性质都转化为“是否落入目标区域”的概率或 log probability然后在条件分布层面进行组合。也就是说目标不是“分数越高越好”而是“序列同时满足多个性质约束的概率更高”。例如双性质目标可以写成目标采样分布 ∝ 生成模型先验 × P(性质 A 满足目标 | 序列) × P(性质 B 满足目标 | 序列)取 log 之后就变成生成模型项加上性质 A 的引导项再加上性质 B 的引导项。这样看双性质引导并不是把两个评价指标硬拼在一起而是把“目标是否满足”转化成采样分布的条件。这也是它在企业端有价值的地方。企业不是为了追求 predictor 分数最大化而是为了提高候选分子进入实验验证后满足项目门槛的概率。门槛可以是 activity 某个阈值Tm 不低于某个水平表达量不低于某个水平humanness 达到一定区间或者 aggregation patch 不超过某个风险等级。当然这里也要保持克制。双性质引导不是自动解决多目标优化的万能钥匙。两个 predictor 的误差会叠加一个性质模型的系统性偏差可能把采样过程带偏如果两个性质真的高度冲突引导强度过高还可能造成序列多样性下降甚至出现 reward hacking。论文证明了 ProteinGuide 可以处理 tension properties但企业落地时仍然需要把它放进一整套“预测—采样—过滤—实验—再训练”的闭环中而不是把它当成一次性生成神器。它和现有“引导生成”到底有什么不同为了避免把 ProteinGuide 写成又一个“生成模型 打分模型”的故事可以从四个对比角度理解它。第一它不同于普通的后筛选。后筛选是先生成再打分再过滤ProteinGuide 是在采样过程中改变生成概率。后筛选只能被动淘汰ProteinGuide 则主动改变搜索方向。第二它不同于重新训练或微调生成模型。很多条件生成方法需要对生成模型进行 fine-tuning、RL、DPO 或条件训练。这当然可能有效但企业端成本高大模型训练贵数据格式要求高模型版本管理复杂而且每换一个性质目标都可能需要重新训练。ProteinGuide 的主张是 plug-and-play生成模型不动新增的是性质预测器和采样引导逻辑。论文也明确强调它希望避免重新训练已有生成模型而是在采样时用辅助模型调制生成过程。第三它比单一模型类别的 guidance 更通用。过去很多 guidance 工作绑定在某类 diffusion 模型、某种隐空间梯度或某个特定生成框架上。例如 guided discrete diffusion 方向会把生成模型和判别模型结合起来让生成模型提供合理序列判别模型推动高 fitness 搜索NOS 这类方法则沿着 denoising network hidden states 的梯度进行序列空间设计。 ProteinGuide 的野心更偏“统一接口”把 masked language model、order-agnostic autoregressive model、diffusion model 和 flow matching model 放到统一统计视角下让 predictor guidance 可以更广泛地套到不同生成模型上。第四它更适合和实验闭环结合。企业端最重要的数据往往不是公开数据库而是自己项目中刚测出来的一小批活性、表达、稳定性、结合或功能数据。ProteinGuide 的价值在于它允许这批实验反馈被快速训练成 predictor然后直接接入下一轮 sampling而不是等待重新训练一个完整生成模型。这一点对 DBTL 闭环非常关键Design 不是一次性设计Build-Test-Learn 也不是做完实验再人工挑选而是让新实验数据尽快改变下一轮生成分布。所以ProteinGuide 的定位可以总结为一句话它不是替代 ProteinMPNN、ESM3 或 diffusion model而是给这些模型加了一个性质引导采样层。从抗体研发角度看ProteinGuide 最适合放在哪里如果把这个方法映射到抗体研发流程最自然的应用不是完全 de novo 生成抗体而是“在已有候选分子附近做目标性质引导优化”。例如在人源化任务中生成模型可以负责产生更像人源抗体 repertoire 的 FR 方案性质 predictor 可以负责 humanness、nativeness、回复突变风险或结构保持风险。此时引导目标不是“越人源越好”而是“在人源性提升的同时尽量不破坏 CDR 构象、Vernier 区域和 VH/VL interface”。在亲和力成熟任务中生成模型可以围绕 CDR 或界面位点提出突变predictor 可以来自 binding enrichment、SPR/BLI 数据、结构界面打分或深度突变扫描数据。ProteinGuide 的采样层可以让模型少生成那些“看起来合理但不支持结合提升”的突变组合。在可开发性优化任务中可以把 aggregation、solubility、PTM、pI、charge patch、humanness 等指标作为多个性质约束。但这里要格外谨慎可开发性指标之间并不总是同向且很多 predictor 更接近风险提示而非定量真值。因此更适合把它们作为分层过滤和软约束而不是全部作为强引导项一次性塞进采样。在 pH 依赖性抗体设计中双性质引导会更有想象力。理想目标不是“结合力最高”而是两个状态之间的差异最大pH 6.0 下结合概率高pH 7.4 下结合概率低。这类任务天然就是双状态、多性质问题。ProteinGuide 的思想可以启发我们把不同状态下的 predictor 分别建模再把“状态差异”转化为采样引导信号。不过这也要求企业有足够可靠的双 pH 实验数据或高可信计算标签否则 predictor 的不确定性会被引导过程放大。企业端真要落地不能从模型开始而要从“性质定义”和“数据闭环”开始如果企业想把 ProteinGuide 这类方法用于真实项目第一步不是部署代码而是定义清楚任务中的 property 到底是什么。很多团队会说“我们要优化 developability”但 developability 不是一个单一标签。它可能包括表达量、热稳定性、聚集风险、黏度、pI、charge patch、PTM、免疫原性、人源性、非特异性结合等多个层面。每个性质的数据来源、实验噪声、适用范围和业务门槛都不同。如果没有把性质拆开ProteinGuide 只会变成一个把模糊目标包装成数学公式的工具。第二步是准备可以训练 predictor 的数据。这里至少需要三类数据一类是序列或结构输入一类是实验测量标签一类是负样本或低活性样本。只有正样本而没有失败样本很难训练出能指导采样的 predictor。对于抗体项目还需要记录链型、编号体系、CDR/FR 划分、亲本来源、突变位置、表达体系、实验批次和 assay 条件否则模型学到的可能是实验批次偏差而不是分子性质规律。第三步是训练两个层次的 predictor。一个是用于指导采样的 noisy predictor它需要能处理部分 mask、局部突变或生成中间态另一个是相对独立的 oracle / evaluator用于评价生成结果是否真的可能满足目标。ProteinGen 文档中也建议训练用于 evaluation 的 oracle以及在 masked inputs 上训练的 noisy classifier并验证两者在 clean sequences 上的一致性。第四步是选择生成模型和引导策略。固定骨架反向设计可以从 ProteinMPNN 类模型开始序列补全、局部改造或蛋白语言模型采样可以从 ESMC / ESM3 类模型开始涉及结构 token 或 backbone generation 时再考虑 diffusion / flow matching 框架。引导策略上数据少、predictor 噪声大、梯度不可信时DEG 可能更稳predictor 较小、可微且校准较好时TAG 更高效。第五步是建立候选库设计规则。企业不能把所有位点都交给模型自由生成。抗体项目尤其需要设置 protected positions、CDR/FR 边界、Vernier 位点、界面残基、motif 黑名单、糖基化位点、Cys 风险、序列相似度上限、最大突变数和多样性约束。ProteinGuide 改变的是采样方向但不替代分子工程中的硬约束。第六步是把 in silico evaluation 和 wet-lab validation 接起来。生成序列需要经过结构预测、稳定性评估、聚集风险、人源性、免疫原性、表达风险、结合界面合理性等多层评价。最终进入实验的不是分数最高的一条而应该是一组覆盖不同突变模式、不同风险类型、不同机制假设的候选库。实验结果再回流训练 predictor形成下一轮 guided sampling。企业真正需要建设的不是一个“ProteinGuide 脚本”而是一套闭环系统实验数据 → 性质定义 → predictor 训练与校准 → 生成模型采样引导 → 候选库设计 → 多维计算评价 → 实验验证 → 数据回流与下一轮采样这套系统一旦建立ProteinGuide 的价值才会显现。否则它很容易变成另一个“跑得通 demo但进不了项目决策”的模型工具。落地时最容易踩的坑第一个坑是 predictor 不可靠。ProteinGuide 的引导质量上限首先由 predictor 决定。如果 predictor 只在某个蛋白家族、某个突变范围、某种实验体系中有效那么 guided sampling 一旦走出适用域就会生成高分但不可实验复现的候选。第二个坑是把模型分数当成实验真值。很多性质预测器输出的是概率、排序或风险提示不是物理真值。尤其在抗体 developability 中pI、charge、patch、aggregation、humanness 等指标需要综合解释而不是把某个分数最大化。第三个坑是引导过强。引导强度太高时模型可能牺牲自然性、多样性或结构合理性过度追逐 predictor 的漏洞。这个问题在所有 model-guided design 中都存在本质上是 reward hacking。解决办法不是完全不用 guidance而是设置温度、权重、约束、多样性采样和独立 evaluator。第四个坑是双性质目标没有校准。两个 predictor 的分数如果没有统一成“目标满足概率”或明确阈值简单相加会制造虚假的综合分。企业端应该优先定义实验门槛而不是追求抽象分数最大化。第五个坑是没有实验闭环。ProteinGuide 最适合用在 DBTL 中而不是一次性生成最终答案。没有实验回流模型无法知道自己上一轮采样到底偏到哪里也无法持续修正 predictor 的适用域。ProteinGuide 的产业价值是把“生成模型”变成“可被项目目标牵引的采样器”ProteinGuide 最值得关注的地方不是它证明了 AI 可以生成更好的蛋白序列而是它把蛋白生成问题重新表述为一个更接近研发现实的问题我们已经有很多强大的生成模型也有越来越多项目内实验数据。关键是如何把这些实验数据转化为下一轮生成的方向。在这个意义上ProteinGuide 的价值不是取代现有模型而是补上了生成模型和性质目标之间的接口层。生成模型负责保持蛋白空间的合理性性质预测器负责注入当前项目的目标偏好采样算法负责把两者合并成一个可执行的候选库设计过程。对于企业端来说这类方法的落地重点也不应该是“复现论文结果”而应该是回答四个更实际的问题我们有没有足够清晰的性质定义我们有没有能训练 predictor 的实验数据我们的 predictor 是否经过适用域和不确定性验证我们的采样结果是否能进入真实 DBTL 闭环只有这些问题回答清楚ProteinGuide 才不是一个漂亮的算法概念而会变成蛋白工程和抗体设计中真正可用的一层生成式设计基础设施。