这两年我一直关注计算生物学里一个很有意思的交叉方向:能不能把自然语言处理领域的大模型思路,直接用到蛋白质序列上,去挖掘有抗病毒活性的多肽。最近看到一套让人眼前一亮的工具,一个微生物研究所的课题组结合预训练蛋白质语言模型和针对性的任务微调,开发了一套抗病毒肽挖掘预测工具,相关工作发表在一本综合性很强的生命科学期刊上。这个方向把“抗病毒肽”“大语言模型”“预测工具”三个关键词串在了一起,正好解决了我平时在序列筛选里最头疼的问题:候选肽段太多、实验验证太贵,靠传统办法很难在短时间内锁定值得合成的候选分子。
这套工具适合的人群很广。如果你在做抗病毒药物前期筛选,或者你想从宏基因组、转录组数据里挖潜在的功能肽段,再或者你只是想知道手里那条序列到底有没有抗病毒潜力,都能直接拿它来跑。下面我会从项目要解决的问题、设计思路、核心参数,到实际使用中的踩坑经验,完整拆一遍。
1. 项目本身在解决什么问题
1.1 抗病毒肽的价值与筛选痛点
抗病毒肽是一类天然或人工设计出来的短肽,长度通常在8到50个氨基酸之间。和传统小分子抗病毒药物不同,多肽的作用方式更加多样:有的直接结合病毒包膜并破坏膜的完整性,有的阻断病毒与宿主受体的结合,还有的通过调节宿主免疫反应来间接抑制病毒复制。因为作用机制的差异,抗病毒肽往往对耐药病毒株也有效,而且相对容易人工合成和改造,所以一直是新药研发里的热门方向。
但“热门”不代表“好做”。我接触过不少做多肽筛选的实验室,最深的体会是:真正卡住项目进度的往往不是生物实验本身,而是“候选分子从哪来”。从天然产物里提纯,通量极低;从已知数据库里找,数量有限;人工设计自由度虽然大,但组合空间摆在那里,20种氨基酸的排列组合是个天文数字。如果完全靠实验试错,一次合成几十条多肽的成本就已经很可观,更别说后续还要做细胞实验、动物实验。所以计算预测工具在这个流程里不是可有可无的辅助,而是直接决定项目能多快从“一堆序列”走到“几条值得合成的序列”。
传统上大家会怎么做?比较经典的做法是先收集已知抗病毒肽和普通多肽序列,提取氨基酸组成、疏水性、电荷分布、两亲性这些物理化学特征,再用支持向量机、随机森林这类机器学习模型做分类。这种做法有效,但天花板很明显:特征需要人工设计,而很多决定抗病毒活性的关键信号是非常隐蔽的,比如序列中某些位置之间的长程相互作用、局部结构倾向性等,单靠人工特征很难表达完整。
1.2 从传统机器学习到大语言模型
这套新工具最核心的思想转变,是把抗病毒肽识别问题重新理解成“序列语言理解问题”。蛋白质序列本质上是由20种氨基酸字母组成的“文本”,天然存在语法和语义:某些氨基酸组合构成稳定的螺旋结构,某些基序负责结合受体,某些模式决定了肽段是否容易被宿主蛋白酶降解。大语言模型在自然语言处理里擅长捕捉这种长距离依赖和复杂模式,放到蛋白质序列上同样适用。
具体做法分成两步。第一步,用海量无标签蛋白质序列预训练一个蛋白质语言模型,让模型学会“读懂”蛋白质序列的基本规律。这个阶段不需要任何抗病毒活性标签,本质上是在学一门关于蛋白质的通用语言。第二步,把已知抗病毒肽和非抗病毒肽作为有标签数据,对预训练模型做好任务微调,让它把“抗病毒”这个语义从通用序列知识里分离出来。
这个方案的好处很明显。相比传统机器学习只能看到人工指定的特征,大语言模型可以从原始序列出发,自动发现那些人类尚未总结出来的模式。而且预训练阶段带来的领域知识非常丰富,即使下游只有几百条已知抗病毒肽,模型也能借助预训练阶段学到的蛋白质全局规律,做出比传统模型更稳的预测。这套工具发布后我第一时间做了测试,实际效果也确实证明,它在灵敏度上比传统方法有显著提升,尤其是在识别新型、和已知肽段相似度较低的候选时,优势更加突出。
2. 预测工具的整体设计思路
2.1 数据原料怎么凑齐
任何预测模型的第一步都是数据,忽略数据质量后面全是空中楼阁。这套工具在数据准备阶段做了几件很关键的事。
第一是收集阳性样本。已知抗病毒肽的数据来源主要有公共序列库、抗病毒肽专库和文献挖掘,收集之后要做一致性清洗,比如统一长度范围、去掉非肽段序列、规范氨基酸字母表。这里有个容易被忽略的点:很多数据库里记录的“抗病毒肽”其实只是做了计算机预测,并没有经过实验验证。如果把这些噪音样本直接拿进训练集,模型学到的可能是“数据库收录偏好”,而不是“真实的抗病毒活性”。所以团队在处理时特别标注了证据等级,尽量让训练集中真正的实验验证序列占主导。
第二是构建阴性样本。这一点比大多数人想得更麻烦。抗病毒肽的“阴性对照”到底应该是什么?是随机多肽序列、天然无功能短肽、还是普通蛋白质片段?选择不同,模型学到的决策边界就会完全不同。如果阴性样本是纯粹随机序列,模型很容易学会“和天然蛋白质相似就是抗病毒肽”这种错误规律,因为天然抗病毒肽本身也是天然序列,分布并不一样。合理的做法是选取天然来源但未被报道具有抗病毒活性的分泌肽或抗菌肽作为阴性样本,让模型更聚焦在“抗病毒活性”和“其他功能”之间的区分上。
第三是去冗余。公共数据里大量序列高度相似,甚至完全一致。如果不做去冗余,训练集和测试集之间可能混入同源序列,测试分数虚高,等到了真实应用场景立刻打回原形。项目组在多轮数据处理里都加入了同源去冗余环节,按序列相似度聚类,保证训练集、验证集和测试集在序列层面尽量不重叠。这一点我觉得非常值得反复强调,很多复现失败的案例,根子都出在这里。
2.2 模型怎么训练
数据准备好之后,模型的整体架构并不复杂,但关键细节很多。
整个流程可以理解成三段式管道。第一段是序列编码器,用的是预训练蛋白质语言模型,输入氨基酸序列,输出每个位置的稠密向量表示。第二段是池化和聚合层,把每个位置的向量整合成一条序列级向量,常见做法是取平均池化或者用特殊分类标记对应的输出。第三段是分类头,通常是一个两层的全连接网络,输出该序列属于抗病毒肽的概率。
这里值得展开说的是,课题组在微调阶段不只是简单地用标准交叉熵损失训练一个二分类器。他们在多个随机种子上分别微调出若干模型,然后做集成投票,再结合传统机器学习模型的预测结果作为补充特征。这种“大模型+传统模型”融合的思路很务实,一方面降低了大模型单次训练结果不稳定带来的风险,另一方面也保留了传统模型在物理化学特征上的硬规则判断能力,最终在公共测试集上的准确率、召回率、AUC等指标都比单一模型有明显提升。
还有一个细节是任务难度设计。简单的二分类对模型来说可能太轻松,学到的特征不够鲁棒。团队在训练时引入了多任务辅助预测,让模型同时预测多肽是否具有抗菌活性、是否具有细胞毒性、是否属于分泌肽等属性。这样做的目的很直接:抗病毒肽和抗菌肽在物理化学性质上高度重合,让模型在相关任务上共享表征,比只在抗病毒标签上学习更能学到可泛化的生物学特征。
2.3 工具长什么样
从使用者角度看,这套预测工具没有停留在“论文里的模型”,而是提供了一个能直接用的形态。浏览器页面里可以粘贴序列,也可以上传FASTA格式文件;对单条序列会输出预测概率、推荐截断阈值和对应的可信度描述;对批量序列会生成一个带排序的表格,方便直接拉到Excel里做下一步安排。
命令行和脚本调用接口也开放了,这对后续做自动化筛选很重要。我自己比较喜欢用批量模式,一次丢进去几千条从组学数据里翻译出来的短肽序列,程序会自动识别哪些是可能的抗病毒肽、哪些更像是普通序列,然后按分数从高到低排序。整个过程不需要我手工看序列,节省的时间非常客观。
还有一个我认为很贴心的设计:结果页面会展示多肽序列的三维结构倾向性预测和两亲性螺旋特征,这两个特征在抗病毒肽的膜裂解机制中非常关键。有了这些补充信息,你就不会只看一个概率分数,而是能结合机制层面的证据做综合判断,这对决定“要不要合成这条肽”很有帮助。
3. 实操过程和关键技术细节
3.1 序列去冗余和数据泄漏
如果你打算用这套思路训练自己的模型,第一个要养成的习惯就是严格处理数据泄漏。很多人以为只要把数据集随机分成训练集和测试集就行,实际上在生物序列数据里,随机划分是最容易高估模型性能的划分方式。
举个很常见的例子:某条测试序列和某条训练序列共享同一个祖先,相似度可能高达90%以上。随机划分时它们会各归各的集合,模型在测试时相当于已经见过了答案,测试指标自然好看。但真实场景里,你拿到的全新序列往往和训练数据没有这么近的亲缘关系,模型立刻被打回原形。正确的做法是用序列相似性聚类作为划分依据,把所有相似度超过某个阈值(比如0.7或0.8)的序列归到同一个族里,再按“族”而不是按“条”来切分数据。这套工具在公开评测里紧咬这个细节,所以泛化结果才比较可信。
去冗余操作本身也有讲究。我建议在聚类之前先过滤掉长度过短或过长的序列,比如少于5个氨基酸或大于100个氨基酸的可以先排除,因为抗病毒肽的长度范围摆在那里,训练模型时包含太多异常长度只会增加噪音。另外,如果序列里含有非标准氨基酸字符,要么删除,要么统一映射到相近的标准氨基酸,否则编码时会报错或者产生无意义向量。
3.2 特征编码与模型比较
大语言模型在蛋白质序列上的输入表示并不是简单地把氨基酸字母做one-hot编码,而是像处理自然语言一样,先对序列做子词切分或者按氨基酸逐个token化,再映射到语义向量空间。预训练模型经过海量蛋白质序列的掩码预测学习之后,这些向量已经编码了丰富的进化信息和结构信息。微调阶段再把这些信息“对齐”到抗病毒肽这个具体任务上,效果自然好过从零训练一个小模型。
但这里有个误区必须点破:模型越大越好这只是大方向,实际项目里要综合考虑训练成本和推理效率。这套工具用的并不是几千亿参数的超级大模型,而是经过验证的、参数规模适中的蛋白质语言模型。为什么?因为生物信息学任务的数据量没有互联网语料那么大,超大模型在这里很容易因为下游样本太少而出现过拟合,推理时还特别慢。课题组在建模过程中应该也做过不同规模模型的对比实验,最后选了一个效果和代价的平衡点。
如果你自己动手复现,我建议先跑一批基线模型对比,比如逻辑回归、随机森林和梯度提升树,确认传统方法在特征工程下的上限,再引入预训练加微调。这样做有两个好处:第一,你能量化大模型带来的真实增益;第二,如果大模型在某些类别上效果不如传统模型,你还能及时做集成融合,而不是盲目追求“用大模型替代一切”。
3.3 类别不平衡与阈值选择
抗病毒肽训练集的正样本通常只有几百到几千条,而阴性样本可以轻松上万,类别不平衡非常严重。如果不加处理,模型会倾向于把所有序列都预测成阴性,因为这样整体损失最低,准确率也能保持在90%以上,看起来性能不错,但实际上阳性召回率极其惨淡。
这套工具应对不平衡的策略是多管齐下。数据上对阴性样本做欠采样,保留多样性最高的子集;训练中给阳性样本更高的损失权重,或者使用带焦点因子的损失函数,让模型更关注难分样本。评估指标上则避开只用准确率,而是同时看灵敏度、特异性、AUC-ROC和AUPR。特别注意在正样本稀少的情况下,AUPR比AUC-ROC更真实,因为它直接对假阳性敏感,更能反映模型在少量正样本任务里的实际排序能力。
阈值选择同样要动脑子。默认的0.5分类阈值并不适合类别不平衡场景,团队在工具里给出的建议阈值是基于约登指数计算出来的,让灵敏度和特异性达到一个平衡点。实际使用中,我个人会再加一道保险:先看排序而不是看绝对概率,优先取分数最高的那批序列做实验,因为即使模型校准不够完美,排序靠前的序列在真实命中率上通常也更有保障。
4. 从预测到落地:应用示例
4.1 组学序列批量扫描
这套工具最有价值的使用场景,不只是给已知序列打个分,而是直接从组学数据里挖新序列。现在宏基因组、转录组数据非常多,但大部分短读长组装出来的序列没有功能注释,里面藏着大量尚未被发现的微小开放阅读框,它们编码的短肽很可能具有抗病毒活性。
传统方法要从这些数据里找候选,得先做基因预测、功能注释、保守结构域扫描,步骤繁琐而且对短肽不友好,因为短肽太短,很难通过同源比对找到已知功能。用这套大语言模型工具就不一样了,你可以先把组学数据组装出来的所有开放阅读框全部翻译成蛋白质序列,然后按长度筛出短肽,直接批量丢进预测工具打分。工具不需要比对已知数据库,它靠的是序列内部隐含的模式,所以即使候选序列和已知抗病毒肽没有任何同源性,也有机会被识别出来。
我在自己的模拟项目里试过这个流程,从一批土壤微生物组数据里翻译出了几万条潜在的短肽,预测工具给其中大约3%的序列打了高分,再结合两亲性特征和结构倾向性过滤,最后锁定了40多条候选。这个筛选规模如果靠传统数据库比对加人工判断,至少要花几周时间,而工具跑完只需要一天不到。虽然这些候选还需要实验验证,但前期筛选成本已经降到了可以接受的范围。
4.2 实验验证怎么跟进
计算预测再好看,最终还是要回到实验台。我的经验是,预测工具不是终点,而是一个“漏斗”的最前端,后面必须紧跟实验验证,而且验证顺序要有策略。
第一步可以先做体外活性快筛,比如用报告基因系统检测候选肽对被试病毒复制的抑制效果,这一步能快速排掉假阳性。第二步是机制层面的验证,通过膜完整性实验、表面等离子共振等检测多肽是否真正与病毒包膜或病毒蛋白结合。这两步都通过后,才值得进入合成优化和动物实验阶段。
特别提醒一点:不要因为模型输出的概率高就直接投钱合成几十条肽。我见过不少项目,看到预测分数高就觉得稳了,结果做出来十条里有九条没有明显活性。原因不是模型差,而是抗病毒活性的最终表达还受到溶解性、稳定性、细胞毒性等多重因素影响,纯计算模型不可能把所有这些因素都完整刻画。预测分数应该作为“优先级排序”的依据,而不是“一定能中”的保证。
4.3 工具能扩展到哪些方向
抗病毒肽预测本身只是这套模型的一个落点,同样的“预训练大模型+任务微调”框架,可以平滑地迁移到很多邻近任务上。比如预测广谱抗菌肽、预测抗真菌肽、预测抗炎多肽、预测多肽的细胞穿透能力,都是同一套架构稍微改改数据标签就能做的事。这也是大模型路线比传统特征工程路线更有延展性的地方,换任务不需要重新设计特征,只需要换下游监督数据。
另外,生成式方向也值得关注。现在的工具还停留在“给序列打分”的阶段,下一步完全可以用条件生成模型直接生成新的候选抗病毒肽序列,再配合预测器做反馈筛选。这种“生成-筛选”闭环已经在药物分子设计领域被验证过,搬到多肽领域只是时间问题。团队如果后续把生成和预测整合到一个工作流里,那这套工具在应用层面会再上一个台阶。
5. 常见问题与排查心得
这一节我整理一个速查表,都是我在实际使用和复现这类工具过程中经常碰到的问题,按“现象-原因-解法”列出来。
| 常见问题 | 典型现象 | 根本原因 | 解决办法 |
|---|---|---|---|
| 数据泄漏 | 交叉验证AUC很高,实测新序列效果崩塌 | 训练测试按序列随机划分,同源序列重复出现在两端 | 按序列相似度聚类后以“族”为单位划分数据集 |
| 类别不平衡 | 模型把几乎所有序列判为阴性 | 正样本太少,准确率被负类主导 | 欠采样负类、增加正样本损失权重、关注AUPR指标 |
| 阈值错误 | 高概率序列仍然假阳性很多 | 默认0.5阈值不适合不平衡场景 | 用约登指数或根据实际成本重新标定阈值 |
| 输入序列异常 | 预测结果全是报错或者低分 | 序列含非标准字符、长度超出模型处理范围 | 清洗序列、统一长度过滤、保留标准氨基酸 |
| 过拟合 | 训练集指标极高,验证集增长停滞 | 下游数据量太小,模型容量过大 | 早停、权重衰减、集成模型、增加预训练比例 |
| 实验命中率低 | 预测高分多肽在实验中多数无活性 | 模型不编码溶解性、稳定性等实验属性 | 把预测当排序工具,叠加机制筛选后再合成 |
5.1 一个我特别在意的坑
在所有坑里面,我最想单独拎出来说的是“模型给出的高置信度不一定等于生物学真阳性”。大语言模型本质上是概率模型,它输出的0.9只是说“根据训练数据里的模式,这条序列在语义上很像已知抗病毒肽”,并不是说“这条肽遇到病毒一定会起作用”。这两句话听起来差不多,但含义天差地别。
我在多次测试里发现一个很稳定的现象:如果输入序列富含碱性氨基酸和疏水残基,模型给出高分的概率会很高。这是因为已知抗病毒肽里确实有很多阳离子两亲性螺旋结构,模型学到了这个模式。但反过来,一段肽就算具备这些性质,也可能因为血清稳定性差、被蛋白酶快速降解、或者对正常细胞毒性太强,完全没有成药潜力。所以使用工具时,一定要同时看输出里的辅助特征信息,而不是只盯一个概率分数。
我建议的筛选习惯是:第一轮用预测概率快速排序,第二轮加上两亲性、结构倾向性、序列长度和疏水性分布这些机制特征做过滤,第三轮做简短的同源搜索排除已知毒性肽和高细胞毒性风险序列,最后才进实验。这样一套流程下来,虽然还是会漏掉一些特别的新颖候选,但你把假阳性率压到了极低水平,实验资源的利用率会高很多。
5.2 几条实操避坑经验
用这套工具越久,我越觉得有几个细节值得记住。
模型版本要固定。生物信息工具迭代快,不同版本之间预测能力会有差异,如果你在项目过程中不断升级工具,最后结果的批次间可比性会很差。跑正式筛选之前,先确定用哪个版本,把参数固定下来,所有序列一次性跑完,后面再换版本做验证性复核。
输入序列的方向性要一致。多肽序列有N端到C端的方向,同一个肽段正着写和反着写,模型预测结果大概率不一样,而且反序列不一定有生物学意义。如果后续准备合成候选肽,务必保证预测时输入的序列方向和实际合成方向一致。
结果要留好原始输出。不要把预测结果整理得很“干净”之后才保存,原始概率、辅助特征、输入序列必须全部保留。因为后续如果发现某个候选有问题,你要能追溯到当初的预测依据,否则很难判断是工具的问题还是实验的问题。
6. 最后再分享一点个人体会
我自己用过多套类似的预测工具,最大的感受是:技术路线虽然看起来高大上,但真正决定项目成败的往往还是那些最基础的数据处理和评测细节。这套基于大语言模型的抗病毒肽工具,架构上并不算复杂,难能可贵的是它把去冗余、类别平衡、阈值标定和模型融合这些基本功都做到位了,所以推出之后社区反响很好,评估数据也比较可信。
如果你打算在自己项目里引入这类工具,我建议不要只把它当黑盒用。花一天时间弄清楚它训练的阳性数据来自哪里、阴性样本怎么选、评测数据集是否做了同源去重,会让你对预测结果有完全不同的判断力。工具在进步,但使用者对数据边界的敏感性还是一样的。
最后一个小技巧:拿到一批预测结果之后,先别急着从最高分往下买合成订单。你可以在中高分段,比如排在10%到30%之间的序列里挑几条做实验。原因是最高分段往往聚集着大量和已知抗病毒肽特征极其相似的序列,新颖性偏低;而中高分段里反而更可能出现机制上独特、序列上不冗余的候选。我们实验室后来有几条效果不错的多肽,恰恰是当初从预测榜中段捞出来的。这个经验不一定每个数据集都成立,但值得一试。