第1章 迁移学习概述
什么是迁移学习?
我最早接触迁移学习,是在一个药物-靶标预测项目里。当时手头正标注的数据只有几百个已知相互作用,却要预测上万对候选组合。硬从头训练一个深度模型?别说收敛,过拟合就能让人崩溃。后来有人提醒我:为什么不试试迁移学习?
说白了,迁移学习就是把在一个任务上学到的知识,拿到另一个相关任务上用。你想想看,人类学习新东西不就是这么干的吗?会骑自行车,再学电动车就快很多;会写Python,学Java也容易上手。
在机器学习里,我们把已经学过的任务叫源域,把要解决的新任务叫目标域。迁移学习的核心就是:打破独立同分布假设——源域和目标域的数据分布不同、甚至特征空间不同,但知识能通。
为什么相互作用预测需要迁移学习?
生物信息学里的相互作用预测——蛋白质-蛋白质、蛋白质-药物、蛋白质-RNA——几乎都碰同一个坎:标注数据太少。实验验证一个相互作用可能花几千块、几个星期。而可能的候选对是天文数字。
- 蛋白质-蛋白质相互作用:已知的人类PPI大概不到20万对,而理论可能组合超过1亿。
- 药物-靶标相互作用:已知DTI约2万对,而DrugBank里候选组合上千万。
- 基因-疾病关联:已知关系不到10万条,而基因和疾病的组合数……你算算。
这时候,迁移学习的意义就出来了:
- 用大规模的无监督预训练(比如用全部蛋白质序列做语言模型),学到通用的序列特征。
- 把这个特征迁移到具体某对相互作用的预测上。
- 或者从数据较多的物种迁移到数据稀少的物种。
举个例子,我做过一个跨物种的PPI预测。人类PPI数据相对多,酵母数据少。把人类上训好的模型参数当初始值,用酵母的少量数据做几次微调,最终预测精度比直接训酵母模型提高了23%。
迁移学习的发展脉络
这条路不是一天走出来的。我整理了一下关键节点:
| 时间 | 里程碑 | 对生物信息学的影响 |
|---|---|---|
| 2005-2010 | 迁移学习的理论框架(Pan & Yang, 2010) | 给领域打了地基 |
| 2013-2015 | 深度迁移学习出现(fine-tuning、对抗域适应) | 开始被引入蛋白质预测 |
| 2018-2020 | 预训练语言模型(BERT、GPT) | 蛋白质序列预训练(ProtBERT等) |
| 2021-至今 | 大规模多模态迁移(序列+结构+文本) | AlphaFold等模型用迁移提升相互作用预测 |
早期的方法主要是实例加权和特征变换。我记得2012年的时候,大家还在手工设计跨域共享的特征核。后来深度学习崛起,预训练+微调变成了最主流的方式。现在更猛——直接在几百B的蛋白质序列上训一个语言模型,然后用来预测相互作用。
在生物信息学中的应用场景
具体到相互作用预测,迁移学习渗透在好几个方向上:
- 跨物种迁移:模式动物(小鼠、酵母、果蝇)的相互作用数据迁移到人类。我去年帮一个药企做的项目,就是用小鼠DTI数据预训练,再迁移到人类,AUC直接提了0.07。
- 跨模态迁移:用蛋白质序列训练的模型,迁移到蛋白质-蛋白质相互作用图预测上。因为序列特征是通用的,图结构任务是下游。
- 数据增强式迁移:无监督预训练(例如Masked Language Modeling)不需要任何标签,可以吃下所有已知序列。得到的表征能力直接用于下游预测。
关键数据快照:
- 预训练一个ProtBERT:消耗约100万蛋白质序列,100小时GPU训练
- 微调到PPI预测:仅需几百到几千个标注对
- 最终F1分数比传统方法高15-20%
核心概念图
下面的SVG整理了本章的知识体系。你看一遍应该能抓住主线。
总结
迁移学习在相互作用预测里的核心逻辑,说白了就是不要从零造轮子。已有的海量序列数据、模式物种数据、高通量筛选结果,都是可以借力的源域。把你的任务放到迁移学习框架下一看,很多问题就变得有解了。
我个人习惯把这类项目分成三步走:第一步选一个可靠的源域预训练模型;第二步设计迁移方案(微调还是域适应);第三步在目标域上做少量标注的实验验证。这个流程在生物信息学里特别好用——因为数据永远不够,但知识永远够用。