拓冰建站拓冰建站
首页 / 资讯中心 / 正文

通用蛋白质语言模型如何驱动抗体定向进化与亲和力成熟

抗体发现和进化这个方向这些年给我的感觉一直很分裂一边是传统实验方法极其成熟、极其“能用”另一边是计算设计工具层出不穷但到了湿实验环节常常掉链子。直到我读到这篇论文——用通用蛋白质语言模型去干抗体定向进化这件事它第一次让我觉得语言模型在抗体工程里的角色终于从“看着很美的玩具”变成了“真能少做几轮筛选的发动机”。这篇论文的全称是“Human antibody efficient evolution from a general protein language model”人类抗体从通用蛋白质语言模型的高效进化。核心思路一句话就能说清不靠从头设计也不靠几十轮随机突变加筛选而是先用蛋白质语言模型把已有抗体序列的信息“读”进一个高维表示空间再从空间里低成本地采样下一代候选序列。本文从背景、方法、实验设计和复现要点几个角度拆一遍适合做抗体工程、计算生物学或者单纯想知道ESM这类通用模型怎么落地到具体药物发现任务的朋友。1. 抗体定向进化的老路为什么越走越累在聊这篇论文的价值之前必须先把抗体进化的历史包袱讲清楚。不然你很难理解为什么“用语言模型做进化”会让人觉得耳目一新。1.1 传统抗体的亲和力成熟一代又一代的“筛”抗体亲和力成熟是抗体发现里最磨人的环节。天然免疫系统产生的候选抗体亲和力通常在微摩尔到纳摩尔级别但治疗性抗体往往需要皮摩尔级别的亲和力这意味着要跨越至少两三个数量级的差距。经典做法是“反复突变筛选”的循环先对CDR区做随机突变或者定点饱和突变构建噬菌体展示或酵母展示文库然后通过多轮淘选panning把亲和力高的克隆富集出来。问题在于每一轮实验周期至少一两周每轮的克隆验证又极其耗时而且随机突变是盲目的大部分突变会让表达量下降、聚集度升高或者干脆什么也不改变。实验室里最常见的场景是做完了三四轮筛选发现富集出来的克隆还是老样子好不容易挑到一两个有提升的亲和力只提升了三四倍再想往上拉就怎么也推不动了。这不是操作问题而是随机突变策略的固有瓶颈——高通量筛选的上限被序列空间的搜索效率卡死了。1.2 理性设计试图“算”出路但总差一口气后来大家开始用理性设计替代盲目突变。基于结构的计算设计Rosetta、分子动力学模拟以及基于序列的统计方法SAS、SSM都试图提前预测哪些位置值得突变。这类方法对已知结构的高分辨率信息依赖很重而抗体-抗原复合物的结构往往难解CDR区的构象又高度柔性算出来的建议往往只能作为参考。还有一个更现实的问题理性设计的输出通常是一小批点突变组合比如“这个位置换成酪氨酸那个位置换成色氨酸”。这当然比随机突变高效但你也就探索了几百个变体对整个序列空间的覆盖依然极其有限。换句话说传统理性设计擅长“微调”不适合“大跨度探索”。1.3 人工智能前传从回归模型到生成模型的过渡AI进入这个领域不是今天才发生的事。早期大家用随机森林、支持向量机去拟合“序列-亲和力”关系效果一般因为特征工程实在难做手工设计的理化性质描述符根本表达不了抗体的复杂性。后来图神经网络在小分子领域大放异彩但抗体这种可变区序列的问题天然适合序列模型来处理——你面对的本质上是“一段序列的进化选择”。这就引出了蛋白质语言模型登场的逻辑基础它不需要你手工设计特征自己能从大规模无标注序列里学到残基间的类语法依赖。而这篇论文的创新之处恰恰是把这类模型放进了“效率”这个维度去考量——既然进化本身就是序列的迭代寻优语言模型能否成为一台更好用的“进化引擎”2. 论文核心路线拆解语言模型到底在进化流程里充当什么角色这篇论文的设计思路非常清晰可以归纳成一个三步闭环。先声明我这里描述的是论文框架层面的逻辑不是逐行复刻它的代码更侧重帮你建立“这个流程在干什么”的整体感。2.1 第一步用通用语言模型构建已知抗体的连续表示空间这里的“通用蛋白质语言模型”指的是ESMEvolutionary Scale Modeling这类在大规模蛋白质序列库上做预训练的大模型。ESM的核心做法是掩码语言建模把一段蛋白质序列随机遮住其中一部分氨基酸让模型根据上下文去预测被遮住的残基。这个训练任务听起来很简单但它迫使模型在逐token层面上学习“什么样的残基在什么上下文里更可能出现”而这个“上下文”恰恰编码了结构约束和进化约束。当你把一组已知有结合活性的抗体序列灌进模型每条序列都会获得一个高维向量表示embedding。在同一空间里亲和力相近、功能相似的序列会靠得更近序列背后的隐含功能约束被几何化表达出来。对做实验的人来说这相当于把原来摸不着的“序列-功能关系”纳入了一个可度量的坐标系。2.2 第二步用高通量实验数据微调模型——关键不是参数而是输出层论文的关键决策在这里它不需要你对庞大的ESM底座做大动干戈的参数精调。整条链路的高明之处在于它把几千到几万条有标签序列例如来自噬菌体展示筛选前后的序列及其富集程度作为监督信号在预训练模型的顶部添加一个轻量的回归头或分类头用这些实验数据去微调预测头。读这类文章最容易产生误解的地方是以为要用深度学习去“生成”全新序列。其实这一步的工作量更多集中在数据整理上——哪些是阳性结合强哪些是阴性无结合或结合弱用对比学习或排序学习的方式让模型学会区分。一个简化的伪代码逻辑如下# 伪代码微调流程示意 model ESM2_pretrained() # 加载通用蛋白质语言模型 head RegressionHead() # 轻量回归头仅数层MLP for batch in labeled_sequences: # labeled_sequences来自噬菌体展示实验 emb model.encode(batch.seqs) # 冻结ESM主干只取embedding pred head(emb) # 预测富集分数/亲和力标签 loss criterion(pred, batch.labels) loss.backward() optimizer.step()冻结大模型主干、只训练预测头这个细节在实际操作里非常关键。好处有二一是需要的标注数据量远小于完整精调所需规模几百到几千条数据就能获得可用结果二是训练成本极低一张消费级GPU就能完成普通实验室的计算资源也可以复制。2.3 第三步从表示空间里采样得到“更进化”的候选序列模型训练好之后就可以做正事——生成下一代候选抗体序列。论文用了不只一种序列生成策略核心逻辑都是在模型给出的条件概率分布里寻找能够“维持合格表达和折叠、同时更有可能提升亲和力”的突变路径。最简单的策略是类似束搜索beam search从亲本序列出发逐个位置计算用哪个替换残基能最大化模型输出的预期得分。更高阶的做法是在模型embedding空间里做方向性移动比如某个方向对应“亲和力上升”就把亲本序列的embedding朝这个方向挪一段距离再解码回离散氨基酸序列。这个“挪动解码”的操作很像我们熟悉的词向量空间里的经典类比迁移。这一步让我印象最深的不是它的生成能力而是可控性。每一代生成序列可以设定与亲本的编辑距离上限也就是说你可以控制这一代的进化步幅——步子小了序列改动温和表达和稳定性风险小步子大了探索能力强但也要准备面对更多失败候选。论文里给出了详细的对比实验小步幅生成往往已经在效率上远超随机突变而大步幅生成则能触达一些随机突变完全找不到的区域。3. 为什么说“通用”模型是这次进化的效率关键如果只看到“用语言模型做序列生成”可能会觉得这也无非是又一个生成模型应用。论文真正的有意思之处在于对“通用”这个词的坚持。团队没有像BioNTech或者AbSci那样在私有抗体数据上从零训练专门模型而是直接使用了在UniRef50这类大型通用蛋白质数据库上训练的ESM。3.1 进化信号不只是来自同源序列更来自“蛋白质语言”本身抗体只是蛋白质家族的一个子集但它与所有其他蛋白质共享同一套语法规则折叠稳定性约束、疏水核心约束、二级结构倾向性、翻译效率等。当一个模型看过自然界里几亿条序列之后它在抗体序列上的embedding就不仅仅是“抗体专用表示”而是杂糅了所有蛋白质的共同演化规则。这对抗体工程的好处非常直观你希望生成的突变体“像天然存在的蛋白质”而不是“看起来像人写的突变组合”。ESM这类通用模型天然会给那些违反基本蛋白语法的突变打低分相当于从源头上过滤了一大批表达差、易聚集的候选。做抗体的人都知道很多随机突变虽然听起来高端但最后都死在表达上——通用的模型像是一道初筛把不靠谱的突变提前扼杀在生成阶段。3.2 低资源场景下的复用价值这里必须强调一下“通用模型微调”比“专用模型训练”在效率上的巨大优势。如果每个新项目都要从头训练一个抗体专属模型光是数据采集和清洗就得花掉大半年而且项目一换靶点旧模型基本就废了。而基于通用模型的方案换靶点时只需要换一批该靶点的筛选数据重新训练一个轻量预测头即可。这个特性让整个流程的适用场景从“大药企的大型抗体发现项目”下沉到了“任何一个有噬菌体展示能力的中小实验室”。只要你能拿到几千条有筛选标签的序列你也能训练一条自己的进化和筛选流水线。这个门槛的降低其实比某一次具体实验指标提升的意义要大得多。3.3 无监督预训练少量监督微调数据效率的法宝很多做实验的同学听到“深度学习 蛋白质”第一反应是数据够不够这里必须点破论文里的一个小技巧通用蛋白质模型之所以需要极少量的监督数据依然有效是因为预训练阶段已经把“哪些突变大概率是致死的”“哪些位置共变”这类信息压缩进了参数中。微调阶段需要的只是“把这些通用知识映射到特定抗体的筛选压力上”。直观类比预训练模型就像一个读过一万本医学教材的实习生他知道人体生理和疾病的基本规则微调则是让他在你的科室里跟几个月的门诊只学你这一个科室的具体病例特征。他不会忘记基础知识也不需要重新读教材——只需要一个很短的时间就能进入工作状态。论文的效率实验表明几千条筛选序列就已经能产生质量不错的预测头配合高通量筛选的全流程总成本远低于传统十几轮淘选的花费。4. 实验设计与效果验证我关注到的关键细节论文的实验部分如果只是报两个上调数据说服力是不够的。值得逐条梳理的是它如何设置对照组、如何防范“过拟合到已知序列”的陷阱。4.1 不是和随机突变比而是和“理性设计基线”比这个对比设计体现了作者对靶的精准理解。很多AI辅助抗体设计的论文对照组只是随机突变或单点饱和突变虽然数字好看但实际说服力有限因为现实中没人会用纯随机突变做亲和力成熟。这篇论文里对照组的设计要严格得多——他们对比的是基于同源序列保守性分析的理性设计方法以及基于结构信息的点突变推荐方法。在同样数量的候选序列测试下语言模型推荐序列的高亲和力命中率明显更高并且结合提升的幅度中位数也优于对照组。这样的比较才真正有意义它证明的不只是“AI比碰运气好”而是“AI比现有的主流理性设计方法更好”。4.2 多样性控制与局部搜索平衡深度生成模型最容易过拟合出一个病生成一堆高度同质的序列看起来打分很高但多样性极差最后在湿实验里全军覆没。论文专门分析了生成序列与亲本序列的序列一致度sequence identity分布。实验数据显示语言模型生成的序列在保持与亲本70%到90%一致度的同时突变分布的位点极其宽泛而不是一小撮热点位置反复突变。这个特性对实验落实非常友好。70%90%的一致度意味着表达盒和框架区基本一致通常能保住良好的表达量而突变位点多集中在CDR区或者与抗原直接接触表面的功能热点区——这才是我们真正想让抗体“进化”的地方。相比随机突变容易大面积散布到框架区去破坏结构语言模型的突变位置分布要“懂事”得多。4.3 负样本建模论文容易被忽略的细节如果只看阳性序列的富集分数模型很容易学会“只要是这个CDR序列就高分”然后生成一堆雷同序列。论文有一个处理方式我认为值得单独拎出来他们把非结合型序列从筛选中逃逸但不富集的克隆作为负样本纳入训练。这本质上是在教模型“什么样的突变是无效或者有害的”。涉及语言模型的一个关键概念分布外out-of-distributionOOD生成。如果没有负样本约束生成器很容易走向模型自信但实际不work的区域加入负样本后模型生成路径会更贴近已知可表达、可结合的序列区域。这在实操中意义重大因为负样本在高通量筛选里是天然存在的副产品——从淘选后的非特异性洗脱里就能得到数据获取成本几乎为零。5. 从论文走向实验室那些论文没写透的实操细节论文本身讲得很干净但真正想把这条流程搬回自己实验室中间还隔着几个“论文不会教你”的坑。这部分是我结合自身经历和一些同行交流后总结的实操要点。5.1 序列标签设计富集倍数和二元分类选择比想象中影响大论文里用的标签不只是“结合/不结合”的二元分类还有基于富集倍数enrichment ratio的连续分数。实际操作时我建议至少在项目初期把两类标签都做一版对比。如果只用二元标签模型会丢失“强结合”和“弱结合”之间的区分度生成结果往往偏向于那些“还可以但不顶尖”的序列。反过来连续富集倍数标签的噪声很大——淘选过程中的PCR扩增偏好可能造成虚假富集因此对数据清洗要求更高。我踩过的坑是直接用Illumina测序得到的reads count比例去算富集倍数结果被几个PCR优势扩增的假阳性克隆带偏了整个模型。之后的教训是富集倍数跨两轮淘选计算比单轮数据更稳且至少要用两套生物重复取平均再决定标签。5.2 输入序列范围比想象中更讲究使用通用模型时的一个操作细节是什么片段作为模型的输入序列。可变区的全长包含FR1到FR4加上CDR1到CDR3。常见的错误是直接把整个scFv扔进模型——ESM基于注意力机制处理序列长度是没问题的但高效进化应当聚焦在突变发生概率更高的区域。论文的方法细节里并没有细致讨论这个但合理推断和实操共识是以重链可变区为主、轻链恒定区或框架区尽量少动。CDR-H3是对抗原结合贡献最核心的高变区而它的长度也决定了有些位置序列实在太多样、模型难以有效预测。我建议把输入序列限定为“可变区少量两端框架”并保留足够的padding位置让模型注意力机制自由发挥。伪代码层面的处理def prepare_sequence(heavy_chain_seq, light_chain_seq): # 仅截取重链CDR附近区域或全可变区然后做token化 seq heavy_chain_seq # 通常以重链为主 tokens tokenizer(seq) return tokens很多复制论文实验的人忽略了这个细节把全长抗体序列丢进模型结果发现输出结果与亲本几乎没有差异因为模型注意力被FR区的强保守性“吸引”走了CDR区的突变信号反而被淹没。5.3 计算资源与训练时间预估不少实验室对AI计算有畏难情绪觉得动辄要A100集群。这篇论文的流程其实对算力要求极其友好——由于采用冻结主干、微调轻量头的方式一个基准模型如ESM-2的650M参数版本在一张RTX 3090或4090上用FP16混合精度训练几千条序列只需要几小时。推理阶段更不用说了批量生成几千条候选序列单卡分钟内完成。这也意味着整个计算流程可以被整合进一个普通的Linux工作站或者云服务器不需要专门的AI工程团队。算力的门槛降低以后剩下的主要问题反而是实验端通量——你生成的候选序列是否有足够高通量的实验验证方式去闭环。5.4 如何判断生成的候选是否值得进实验三原则我读完论文后总结了自己常态使用的候选优先排序方法序列身份相似度反查和已知人源抗体数据库比对确保候选序列不是“非人源化”的。通用语言模型容易生成理论可行但物种归属模糊的序列这在治疗性抗体开发里是个风险。表达可溶性预测用快速工具如Aggrescan或TANGO预检聚集倾向把带有高聚集风险的候选直接排除可以有效提高下游实验阴性率。CDR内极性残留比例通过与已知同类抗体的对比如果CDR中带电残基占比异常高通常意味着结合是依赖非特异性电荷相互作用——这类候选在真实生理条件下的结合并不可靠。这三个过滤器全部走完大概会从模型生成的十万条序列里留下几百条这数量刚好覆盖一个噬菌体展示或SPR初筛的规模。6. 更大范围思考这个范式还会改变什么论文本身做的是抗体亲和力成熟但我觉得它的价值远不止于此。它所展示的“通用预训练模型少量湿实验数据校准”的闭环策略完全可以平移拓展到其他蛋白工程领域。6.1 酶工程的定向进化酶的催化活性进化本质上和抗体亲和力成熟是一样的优化问题。传统定向进化比如易错PCR高通量筛选同样面临序列空间搜索低效的问题。如果把通用蛋白质语言模型用在酶上用几轮活性筛选数据微调预测头再从embedding空间采样下一代突变体理论上完全可行。已经有同行尝试用类似策略优化荧光蛋白和特定酯酶取得的初步结果让我对这套范式在新场景下的可迁移性充满期待。难点在于酶工程的表型读数如催化活性通常不像抗体筛选用panning那样容易并行化但这更多是实验端的问题不是计算端的问题。6.2 蛋白稳定性与可开发性工程抗体工程里有一个长期被忽视的需求改善抗体的可开发性包括降低聚集体倾向、提高热稳定性、改善液体制剂中的长期稳定性。这类优化往往没有直接的选择压力传统筛选方法很难高效展开。而语言模型的embedding空间如果经过适当校准完全可以针对“更接近天然蛋白质特征”的方向做搜索输出的序列天然就带有高可开发性倾向。6.3 通用模型与干湿循环结合的新研发形态论文的最大贡献可能是示范了一种新的研发组织方式不再把计算和实验看成前后传递的流水线——计算出一批候选实验验证一批——而是让两者形成紧密的贝叶斯式迭代闭环。第一轮模型输出的候选经由实验验证后结果重新喂给预测头继续校准第二轮的生成质量通常会有质的提升。这种“干-湿-干-湿”的循环结构实际上是把原来进化生物学家在实验室里做几十轮的淘选过程迁移到虚拟空间里以极低成本完成探索而每一轮湿实验的意义也从“找出一个更好的克隆”变成“给模型提供更尖锐的梯度信号”。我个人在这几年尝试把这类闭环搬进日常研发流程后最明显的感受是团队讨论的焦点从“这一轮筛出来的克隆如何”变成了“模型的哪个环节还有偏置”。实验人员与计算人员的沟通频率明显增加了而且每次讨论的质量越来越高——大家不再把对方当成黑盒工具而是共享同一个可以迭代改进的大脑。这种工作方式的转变可能比任何单次实验指标提升都更有长期价值。毕竟抗体工程面对的从来不是某一个序列的问题而是如何高效地在这个几近无穷的序列空间里找到那零星几个具有治疗价值的点。通用蛋白质语言模型给出的正是这种“搜索力”而且它只会越来越强。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门