ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AI设计噬菌体基因组背后的蛋白质语言模型与打分机制

AI设计噬菌体基因组背后的蛋白质语言模型与打分机制 2025 年《Science》上的一项研究让不少人第一次真切感受到“AI 造生命”不再是科幻标题研究团队利用 AI 设计并生成了完整的噬菌体基因组更关键的是把这个基因组合成出来、送进宿主菌之后它真的“活”了——能复制、能感染、还能抑制细菌生长。比起“AI 又能写文章了”这类新闻这件事的分量完全不同。它意味着 AI 在蛋白质和基因组层面的“设计能力”第一次走完了从数字到生命的完整闭环。不过如果只看新闻标题很容易把这件事误解成“AI 一拍脑袋写出了新的 DNA然后细菌就死掉了”。真实的逻辑比这更严谨也更值得技术人学习。本文会拆解三个问题这项研究的技术原理到底是什么为什么说“蛋白质语言模型”是这场突破的关键作为开发者我们可以怎么亲手模拟这套“AI 给蛋白质打分”的工作流而不仅仅停留在看新闻。我希望读完这篇文章后你能理解 AI 设计基因组背后的工程范式也能自己跑一个最小的蛋白质语言模型打分示例下一次再看到“AI 又造出了 XX”的新闻时能一眼看出它到底突破在哪一步。1. 这则新闻到底在说什么先做一个关键澄清这则新闻并不长但它包含了几个信息密度极高的词——“完整噬菌体基因组”“可存活”“能抑菌”。这三个词单独看都不复杂组合在一起才是真正的突破点。什么是噬菌体简单说噬菌体是一类专门感染细菌的病毒它本身没有独立的代谢系统必须借助宿主菌的机制来完成复制。我们日常听到的“噬菌体疗法”就是利用这类病毒去裂解特定的耐药细菌所以它在医疗、食品、农业领域都有很大想象空间。为什么选择噬菌体而不是更复杂的生物因为噬菌体基因组足够小。许多噬菌体的基因组只有几十千碱基kb和人类基因组 30 亿碱基比起来复杂度差了若干个数量级。但“小”不代表“容易设计”。噬菌体基因组是一个高度压缩的“生命程序”一个基因可能承担多个功能一段序列可能既是编码区又包含调控信息基因之间还存在复杂的表达时序。传统的基因组工程做法主要是定向突变或者随机诱变。比如让噬菌体发生随机变异然后筛选出杀伤力更强的突变体。这种方式的问题是效率和不确定性都很大。真正高维的“设计”一直很难做因为你不能靠穷举所有的 DNA 序列去挑出一个能组装的基因组。这项研究的核心突破就是把“基因组设计”变成了“蛋白质序列空间上的搜索问题”。AI 不再是在碱基层面猜序列而是先理解“什么样的蛋白质序列是合理的”再基于这个理解去大规模改造现有噬菌体的蛋白编码区。对于改造后的基因组通过 DNA 合成、组装、转入宿主菌最终证明了 AI 设计出的基因组具有完整生物学功能。这里有一句很重要的判断这项研究真正的价值不是“从零写出一段基因组序列”而是“用模型把功能性约束注入到了序列生成过程中”。AI 不是凭空创造生命而是在模拟生命的语法规则。2. 基因组设计为什么这么难要理解这项研究为什么厉害必须先理解基因组设计到底难在哪里。DNA 序列本身是四种碱基 A、T、C、G 组成的字符串。但从 DNA 到生命功能中间要经过两个关键环节转录DNA 转录成 mRNA。翻译mRNA 按三个碱基一组密码子翻译成蛋白质。也就是说DNA 序列最终的执行者是蛋白质。一个病毒能不能存活取决于它编码的蛋白质能不能正确折叠、能不能和宿主相互作用、能不能完成复制和组装。难点在于DNA 序列和蛋白质功能之间不是简单的线性映射。首先是密码子简并性。一个氨基酸可以由多个不同的密码子编码。比如亮氨酸有 6 种密码子这就意味着同一条蛋白质序列可以对应大量不同的 DNA 序列。如果你在 DNA 层面换了一个密码子蛋白质序列不一定变但基因表达效率、RNA 二级结构、转录调控都可能发生变化。其次是蛋白质功能的约束。即使 DNA 序列改变后翻译出的氨基酸序列也变了这个变异是否破坏蛋白质稳定性和功能更是一个高维问题。氨基酸之间不是孤立存在的一个位点的改变可能影响远处的结构也可能影响与其他蛋白的相互作用。第三噬菌体基因组不是“蛋白编码区”的简单堆叠。它还有复制起点、包装信号、启动子、终止子、RNA 结构等非编码功能元件。如果只是盲目替换碱基哪怕只是少数几个位点出现偏差都可能让整个基因组失去活性。过去的设计思路是什么两种主流路径随机诱变用化学物质或紫外照射诱发序列变异再筛选活性更好的噬菌体。问题是随机突变的“搜索半径”受限很多功能改进靠运气。理性设计基于结构生物学和分子动力学模拟对特定蛋白做点突变。问题是计算成本高且体外预测和体内实际情况常常有偏差。这两条路径都有一个共同瓶颈它们很难做“全局大规模设计”。你可能可以改造一个关键氨基酸但很难同时改动成百上千个位点还保证整个系统仍然能工作。这项研究之所以突破正是因为模型把“蛋白质序列的全局合理性”变成了一个可以快速打分的量化指标。3. 核心技术原理蛋白质语言模型如何给“活”打分现在到了整篇文章最值得关注的部分AI 到底是怎么判断一段改造后的基因组“能活”的答案是蛋白质语言模型。3.1 从蛋白质序列到“语言”人工智能领域有一个重要启发蛋白质序列本身就像一门语言。人类语言由单词组成蛋白质由氨基酸组成人类语言的句子有语法约束蛋白质序列也有物理化学约束。人类语言语义由上下文决定蛋白质结构中一个位点的合理性也由它在整条序列中的上下文决定。基于这个思想研究者用海量已知蛋白质序列去训练一个大规模语言模型让模型学会“什么样的蛋白质序列更自然、更合理”。Meta AI 开源的 ESMEvolutionary Scale Modeling系列就是这类模型的代表。它本质上是一个 Transformer 模型但输入的不是自然语言 token而是氨基酸 token。ESM 模型的预训练方式和 ChatGPT 类模型类似只不过任务变成了“掩码语言建模”Masked Language Modeling把一段蛋白质序列中的一部分氨基酸盖住让模型根据上下文去预测被掩码的位点是什么氨基酸。通过这种方式模型能够学习氨基酸之间的共现规律、远距离依赖关系甚至一定程度的进化约束。3.2 用“困惑度”代替“适应度”语言模型不是直接告诉你“这段蛋白质能不能活”而是通过概率来实现打分。模型在预测某个位点的氨基酸时会输出一个概率分布。如果模型非常确定这个位置应该是某个氨基酸而序列中恰好就是这个氨基酸说明这段序列符合模型学习到的“语法”。相反如果模型预测的概率很低说明这段序列可能是不合理的、低适应度的。在技术上这个打分通常用伪对数似然Pseudo Log-LikelihoodPLL或困惑度PerplexityPPL来表示。伪对数似然越高说明序列符合模型认知的程度越高。困惑度越低说明序列越“自然”。这就是这项研究的关键技术杠杆模型不是在模拟蛋白质怎么折叠也不是在解薛定谔方程而是在学习海量自然蛋白质序列中隐含的进化与功能约束。只要模型打得准它就可以充当一个高速“适应度预测器”帮研究者在序列空间里筛选出可行方案。3.3 ESM 和 AlphaFold 有什么区别很多人会把 ESM 和 AlphaFold 混淆这里做一次对比工具输入输出解决的问题AlphaFold蛋白质序列3D 结构坐标预测蛋白质空间结构ESM蛋白质序列每个氨基酸的概率分布 / 表征向量评估序列合理性、预测变异效应、生成候选序列Rosetta蛋白质序列 结构结构能量基于物理能量函数打分AlphaFold 回答的是“这条序列折叠成什么样”ESM 回答的是“这条序列像不像一条自然演化出来的蛋白质”。在基因组设计任务里我们需要的是一个能快速评估“万条候选序列”的工具这时候 ESM 基于自监督学习的打分机制效率上就有明显优势。研究中使用的技术路线本质上就是以天然噬菌体基因组为骨架对蛋白编码区进行大规模替换用蛋白质语言模型评估替换后的序列是否合理保留得分高的候选然后反向翻译成 DNA完成合成和功能验证。4. 从 AI 设计到活噬菌体的完整链路很多人以为“AI 设计基因组”是输入一段提示词模型吐出一整条 DNA然后就能做实验了。真实流程要工程化得多。从公开信息来看这项研究的完整链路可以拆成这样4.1 第一步选定骨架基因组需要先选择一个天然存在、序列已知、功能已研究清楚的噬菌体作为起点比如经典的大肠杆菌噬菌体。选择骨架的原因很实际我们需要一个“能活”的参考系。设计出来的基因组最终要导入宿主菌如果完全从零开始设计一段与现有基因组毫无关联的序列很难保证它携带完整的复制、组装和裂解机制。4.2 第二步对蛋白编码区做大规模替换这是 AI 设计真正介入的环节。研究不是只改一两个位点而是对大量蛋白编码基因进行系统性的序列替换。每次替换都会生成一种新的蛋白质序列。这种替换规模远远超出传统的单点突变。4.3 第三步用蛋白质语言模型打分和筛选对于每一条替换后的蛋白质序列模型都会计算它在大量自然序列语境下的合理性。得分高的候选被保留得分低的被淘汰。这个“生成-打分-筛选”循环可以在计算机里非常快地执行替代了大量湿实验筛选工作。4.4 第四步反向翻译成 DNA蛋白质序列不能直接用于合成需要根据密码子表重新反向翻译成 DNA 序列。这一环节还有一个工程优化空间同样的蛋白质序列可以选择不同的密码子组合影响 DNA 合成的成本和宿主内表达效率。所以这一步通常会结合密码子优化算法。4.5 第五步DNA 合成与基因组组装得到的 DNA 序列通过商业 DNA 合成服务或实验室合成平台拆成多个片段然后通过 Gibson Assembly吉布森组装或类似方法组装成完整的噬菌体基因组。4.6 第六步导入宿主菌验证活性把组装好的基因组导入大肠杆菌等宿主菌等待噬菌体“复活”。如果噬菌体能够完成复制、组装并释放子代就会在细菌培养平板上形成透明噬菌斑。再进一步做抑菌实验测活噬菌体能否抑制宿主菌生长。4.7 这条链路意味着什么眼尖的读者可能已经发现了这条链路是典型的“AI 生成 → 计算筛选 → 实验验证”的 AI for Science 闭环。真正花费大量时间的其实不是模型生成那一步而是下游的合成与验证。从工程思维来看这项研究的最大启示是AI 不只用来生成“可能的序列”更重要的是提供了一套优先级排序机制让有限的湿实验资源可以投给最有希望的候选。5. 用 ESM 快速体验“AI 给蛋白质序列打分”理解核心原理之后最有效的方式是自己动手跑一个小实验。虽然我们没法直接复现整个噬菌体基因组设计但“用蛋白质语言模型评估序列合理性”这个关键能力是可以上手体验的。下面我用 Meta AI 开源的 ESM2 最小模型做一个演示目标是加载一个预训练蛋白质语言模型。计算一条蛋白质序列的伪对数似然。对某个位点做所有可能的单点突变看看模型认为哪些突变更合理。5.1 环境准备建议使用 Python 3.9并安装以下依赖pip install transformers torch如果你有 GPU会快很多没有 GPU 也可以跑小模型的 CPU 推理只是稍慢一些。5.2 代码实现计算蛋白质序列的合理性分数我们创建一个 Python 文件esm_score.py内容如下# 文件路径esm_score.py import torch from transformers import EsmForMaskedLM, EsmTokenizer def load_model(model_namefacebook/esm2_t6_8M_UR50D): tokenizer EsmTokenizer.from_pretrained(model_name) model EsmForMaskedLM.from_pretrained(model_name) model.eval() return tokenizer, model def sequence_log_likelihood(seq, tokenizer, model): 计算一条蛋白质序列的伪对数似然越大越合理。 inputs tokenizer(seq, return_tensorspt) ids inputs[input_ids] with torch.no_grad(): logits model(ids).logits # logits 形状: [batch_size, seq_len, vocab_size] log_probs torch.log_softmax(logits, dim-1) # 去掉开头 cls 和结尾 eos inner_ids ids[0, 1:-1] inner_log_probs log_probs[0, 1:-1, :] # 取每个真实 token 位置的对数概率 token_scores torch.gather( inner_log_probs, -1, inner_ids.unsqueeze(-1) ).squeeze(-1) return token_scores.mean().item() if __name__ __main__: tokenizer, model load_model() seq MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ pll sequence_log_likelihood(seq, tokenizer, model) print(fPseudo Log-Likelihood: {pll:.4f})这个代码的关键点在于对输入的蛋白质序列加上了[CLS]和[EOS]特殊 token 后通过模型得到每个位置的输出预测再提取真实氨基酸位置对应的对数概率。分数越高说明模型越“认可”这段序列。5.3 代码实现单点突变饱和扫描接下来我们写一个更实用的功能对序列中每个位点尝试替换成其他 19 种氨基酸计算所有突变体的分数并按分数排序。# 文件路径esm_mut_scan.py import torch from esm_score import load_model, sequence_log_likelihood AMINO_ACIDS ACDEFGHIKLMNPQRSTVWY def scan_mutations(seq, tokenizer, model): results [] for i in range(len(seq)): original_aa seq[i] for mut_aa in AMINO_ACIDS: if mut_aa original_aa: continue mutant seq[:i] mut_aa seq[i 1:] score sequence_log_likelihood(mutant, tokenizer, model) results.append({ position: i, original: original_aa, mutant: mut_aa, pll_score: score, }) results.sort(keylambda x: x[pll_score], reverseTrue) return results if __name__ __main__: # 取自一个常见抗菌肽片段仅用于演示 demo_seq MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ tokenizer, model load_model() scan_results scan_mutations(demo_seq, tokenizer, model) print(Top 10 mutations by PLL:) for r in scan_results[:10]: print( fpos {r[position]}: f{r[original]} - {r[mutant]}, PLL{r[pll_score]:.4f} )5.4 如何验证运行结果运行上面的脚本后你大概率会看到不同突变体之间分数有明显差异。这本身就说明了一个事实在蛋白质语言模型的视角里序列中的每一个氨基酸都不是等价的替换的“代价”取决于上下文。这里有一个重要的提醒模型打分高不代表这个突变一定能在实验中成功。模型捕捉的是进化序列分布中的统计规律而不是完整的物理化学性质。真实设计还要结合结构、表达量、宿主环境等条件做综合判断。如果你想把这个流程用在自己的蛋白质工程项目里基本思路就是准备参考蛋白序列。用模型对候选突变打分。把高分突变组合起来形成候选蛋白。在湿实验中验证候选蛋白的功能。5.5 获取真实噬菌体基因组的预处理思路如果想测试真实噬菌体基因组的蛋白编码区可以用 NCBI 的 E-utilities 下载参考序列再用 Biopython 做翻译和筛选。下面是一个命令行示例# 使用 NCBI E-utilities 下载 lambda 噬菌体参考基因组演示用途 esearch -db nucleotide -query Lambda phage complete genome | efetch -format fasta lambda_phage.fa # 预览序列 head -20 lambda_phage.fa拿到基因组后你可以用 Biopython 的SeqIO解析序列找到所有开放阅读框ORF并翻译成蛋白质序列再送入 ESM 打分。这条流水线做起来并不难难的是后续的功能验证。6. 从这项研究学到的 AI for Science 工程范式这篇文章本该到这里就可以结束但我觉得有一个更值得展开的点这项研究背后的工程范式在未来很可能被复用到其他生命科学问题上。6.1 “生成 打分”双循环传统的 AI 生成任务比如生成图片通常是生成器 判别器。而 AI for Science 的生成任务往往会多一个物理/生物验证环节。噬菌体基因组设计其实可以抽象成这样一个框架生成器在序列空间里生成大量候选。打分器用预训练模型快速淘汰不合格候选。验证器用合成实验验证极少数幸存者。这三点构成了一个科学发现的“漏斗”。模型的价值不在于直接给出最终答案而在于极大地压缩实验空间。没有这个漏斗你可能要在上亿条候选序列里靠运气试错。6.2 预训练模型是“领域知识的压缩器”ESM 之所以能高效打分是因为它已经见过海量天然蛋白质序列。它在预训练阶段学到的知识在下游任务里被压缩成了“快速判断能力”。这和我们在 NLP 领域使用 BERT、GPT 的范式惊人地一致先用无监督数据做大规模预训练再用下游任务做微调或零样本评估最后通过领域闭环验证结果。在生命科学领域这种“预训练 下游任务”的迁移范式尤其有价值因为湿实验数据通常很少且昂贵。模型可以从大量未标注序列中学习规律从而在标注数据稀缺的场景下依然有不错的起点。6.3 对开发者的启示如果你不是生物学家而是做后端或机器学习的人这个研究同样有意义。第一模型评估方法是可以跨领域迁移的。用对数似然、困惑度来评估生成结果在 NLP 里是常规操作在蛋白质设计里同样好用。你不需要理解蛋白质的全部生物物理细节把握好“生成模型 打分器”的结构就能把问题抽象成已知的工程形态。第二AI for Science 的软件工程比外界想象的更朴素。核心不是某个花哨的新模型架构而是把已有模型接入实验闭环让 AI 的输出能真正被物理世界验证。这对数据管线、接口设计、实验管理系统都提出了新要求。第三大模型的“知识边界”很重要。ESM 可以帮你快速筛选序列但它不会告诉你哪条序列适合工业化放大生产也不会自动处理生物安全审批。技术人需要学会把模型当作高效计算工具而不是“全知全能的设计师”。7. 局限性与必须守住的边界作为一个技术博主我不希望把这项研究吹成“AI 创造生命”的神话。真实情况里仍然有很多边界。7.1 它仍然是“基于骨架的设计”目前能做到的完整可存活基因组本质上是在天然噬菌体骨架上的大规模改造并非完全从零开始。这和“AI 凭空写出一种从未存在过的生命形态”之间还有很长的路。骨架提供了关键的调控元件、复制起点和包装机制这些信息不是模型自身“发明”的而是遗传自天然序列。7.2 模型打分不能完全替代物理化学验证蛋白质语言模型学习的是自然序列的统计规律但它并不是真实的物理模拟器。一个蛋白能不能在 37 摄氏度环境下稳定折叠能不能与宿主受体正确结合模型打高分也不代表实验一定成功。因此所有高分会选都仍然需要湿实验验证。7.3 成本和成功率仍是瓶颈基因组 DNA 的合成成本虽然逐年下降但设计多条候选并逐一验证花费依然不低。更重要的是模型筛选出的候选可能并不是全局最优只是“通过模型语法约束的较优方案”。在大规模应用之前我们还需要更多研究来验证模型泛化能力。7.4 生物安全和伦理边界这一条必须强调合成生物学天然具有“双刃剑”属性。能够设计噬菌体基因组的技术理论上也可能被误用于设计其他病原体。任何涉及基因组合成的实验都必须遵守国家法律法规和实验室生物安全规范必须获得相应伦理审查和生物安全委员会审批。我特别建议读者注意能力越大边界意识越重要。这篇文章只做技术原理和通用流程的讨论不提供制造病原体或危险生物体的操作细节。合法合规地研究和应用技术是每一个技术人不可逾越的底线。8. 适合谁的下一步实践这项研究适合不同背景的读者从不同角度切入下面按人群给一点建议。8.1 如果你是生物信息 / 合成生物学背景可以重点实践用 ESM 或类似蛋白质语言模型做变异效应预测。把候选蛋白序列做反向翻译和密码子优化。尝试在模式噬菌体上做小规模改造熟悉 DNA 合成和组装的流程。读一读 ESM 相关论文理解预训练数据、模型结构和隐藏语义。8.2 如果你有机器学习 / NLP 背景可以从以下方向切入把“蛋白质序列”当成一种特殊语言用 Hugging Face 的transformers加载模型并观察输出。尝试用困惑度指标筛选序列候选把 NLP 里的评估方法论迁移过来。研究如何把序列生成模型与下游打分器组成一个优化闭环。8.3 如果你是后端 / 平台工程师可以做这些事情搭建一个“AI 设计蛋白质序列”的批处理流水线支持序列上传、模型打分、结果可视化。把实验验证数据回传到数据库中形成“AI 设计 → 实验验证 → 模型再训练”的数据闭环。关注云资源调度因为蛋白质语言模型虽然规模不大但批量推理仍然需要算力规划。8.4 学习路径推荐如果你想继续深入建议按这个顺序学习了解蛋白质与 DNA 基础氨基酸、密码子、转录翻译、基因组结构。学习分子生物学核心概念ORF、启动子、表达载体、转化。熟悉编程工具Python、Biopython、pandas。了解一种蛋白质语言模型ESM 是最合适的起点。阅读一些合成生物学的典型实验流程理解“设计-构建-测试-学习”循环。9. 结语“AI 首次生成完整噬菌体基因组可存活、能抑菌”这条新闻背后真正值得记住的判断是AI 把生命设计从“大海捞针”变成了“有地图的搜索”。蛋白质语言模型不是全知全能的造物主但它提供了一种前所未有的能力——在亿万条可能的序列中快速找到符合生命语法的候选。对于开发者来说这篇研究更是一则工程范式的启示强大的模型一旦接上实验验证闭环就能产生真正的科学突破。AI 生成不再是聊天的玩具而是推动生物学发现的新引擎。如果你对这方面感兴趣建议别停在看新闻这一步。打开终端装好transformers找一条蛋白质序列跑一次突变打分。当你亲眼看到模型对 19 种替换给出不同分数时你对“AI 设计生命”这件事的理解会比任何新闻标题都深刻。
返回列表