第1章 迁移学习概述

什么是迁移学习?

我最早接触迁移学习,是在一个药物-靶标预测项目里。当时手头正标注的数据只有几百个已知相互作用,却要预测上万对候选组合。硬从头训练一个深度模型?别说收敛,过拟合就能让人崩溃。后来有人提醒我:为什么不试试迁移学习?

说白了,迁移学习就是把在一个任务上学到的知识,拿到另一个相关任务上用。你想想看,人类学习新东西不就是这么干的吗?会骑自行车,再学电动车就快很多;会写Python,学Java也容易上手。

在机器学习里,我们把已经学过的任务叫源域,把要解决的新任务叫目标域。迁移学习的核心就是:打破独立同分布假设——源域和目标域的数据分布不同、甚至特征空间不同,但知识能通。

我的经验:别一上来就想着搞多复杂的迁移策略。很多时候,简单微调(fine-tuning)一个预训练模型,效果就比从头训好一倍多。

为什么相互作用预测需要迁移学习?

生物信息学里的相互作用预测——蛋白质-蛋白质、蛋白质-药物、蛋白质-RNA——几乎都碰同一个坎:标注数据太少。实验验证一个相互作用可能花几千块、几个星期。而可能的候选对是天文数字。

  • 蛋白质-蛋白质相互作用:已知的人类PPI大概不到20万对,而理论可能组合超过1亿。
  • 药物-靶标相互作用:已知DTI约2万对,而DrugBank里候选组合上千万。
  • 基因-疾病关联:已知关系不到10万条,而基因和疾病的组合数……你算算。

这时候,迁移学习的意义就出来了:

  1. 用大规模的无监督预训练(比如用全部蛋白质序列做语言模型),学到通用的序列特征。
  2. 把这个特征迁移到具体某对相互作用的预测上。
  3. 或者从数据较多的物种迁移到数据稀少的物种。

举个例子,我做过一个跨物种的PPI预测。人类PPI数据相对多,酵母数据少。把人类上训好的模型参数当初始值,用酵母的少量数据做几次微调,最终预测精度比直接训酵母模型提高了23%。

迁移学习的发展脉络

这条路不是一天走出来的。我整理了一下关键节点:

时间 里程碑 对生物信息学的影响
2005-2010 迁移学习的理论框架(Pan & Yang, 2010) 给领域打了地基
2013-2015 深度迁移学习出现(fine-tuning、对抗域适应) 开始被引入蛋白质预测
2018-2020 预训练语言模型(BERT、GPT) 蛋白质序列预训练(ProtBERT等)
2021-至今 大规模多模态迁移(序列+结构+文本) AlphaFold等模型用迁移提升相互作用预测

早期的方法主要是实例加权和特征变换。我记得2012年的时候,大家还在手工设计跨域共享的特征核。后来深度学习崛起,预训练+微调变成了最主流的方式。现在更猛——直接在几百B的蛋白质序列上训一个语言模型,然后用来预测相互作用。

避坑:我曾经在一个项目中直接把在ImageNet上训好的ResNet拿来处理蛋白质互作图,结果一塌糊涂。原因很简单——图像和蛋白质图的分布差太远了。迁移不是万能药,源域和目标域的相似度决定了迁移效果的上限。

在生物信息学中的应用场景

具体到相互作用预测,迁移学习渗透在好几个方向上:

  1. 跨物种迁移:模式动物(小鼠、酵母、果蝇)的相互作用数据迁移到人类。我去年帮一个药企做的项目,就是用小鼠DTI数据预训练,再迁移到人类,AUC直接提了0.07。
  2. 跨模态迁移:用蛋白质序列训练的模型,迁移到蛋白质-蛋白质相互作用图预测上。因为序列特征是通用的,图结构任务是下游。
  3. 数据增强式迁移:无监督预训练(例如Masked Language Modeling)不需要任何标签,可以吃下所有已知序列。得到的表征能力直接用于下游预测。

关键数据快照:

  • 预训练一个ProtBERT:消耗约100万蛋白质序列,100小时GPU训练
  • 微调到PPI预测:仅需几百到几千个标注对
  • 最终F1分数比传统方法高15-20%

核心概念图

下面的SVG整理了本章的知识体系。你看一遍应该能抓住主线。

迁移学习核心概念——相互作用预测 源域(Source Domain) 目标域(Target Domain) 知识迁移 大量标注数据(比如人类PPI) 预训练模型(ProtBERT) 少量标注数据(酵母PPI) 新预测任务(跨物种互作) 迁移策略 → 微调(Fine-tuning) → 域适应(Domain Adaptation) → 参数共享(Parameter Sharing) → 实例加权(Instance Weighting) 药物-靶标相互作用预测

总结

迁移学习在相互作用预测里的核心逻辑,说白了就是不要从零造轮子。已有的海量序列数据、模式物种数据、高通量筛选结果,都是可以借力的源域。把你的任务放到迁移学习框架下一看,很多问题就变得有解了。

我个人习惯把这类项目分成三步走:第一步选一个可靠的源域预训练模型;第二步设计迁移方案(微调还是域适应);第三步在目标域上做少量标注的实验验证。这个流程在生物信息学里特别好用——因为数据永远不够,但知识永远够用。