一、什么是迁移学习?
迁移学习(Transfer Learning)是指:
把在一个任务中学到的知识迁移到另一个相关但不同的任务中,从而提升新任务的学习效率和效果。
举个例子:
你学会了骑自行车,再学骑摩托车就容易多了,因为你已经掌握了平衡和转向的技能。这就是人类的“迁移能力”。
机器学习中也一样:如果我们已经在数百万篇新闻上训练了语言模型(如 fastText、BERT),那么面对一个小型医疗文本分类问题,就可以迁移预训练的模型来加速学习、提升效果。
二、迁移学习的动机
1. 数据不足
很多实际任务只有很少的标注数据,而从零训练大模型容易过拟合。
2. 训练成本高
预训练模型已在大规模语料上耗费大量计算资源,重复训练代价高。
3. 知识复用
很多任务的知识是通用的,比如语法、词义、图像边缘特征等。
三、迁移学习的分类
迁移学习可分为以下几类:
类别 | 描述 | 示例 |
---|---|---|
归纳迁移(Inductive) | 源任务和目标任务不同,但有标签 | 从新闻分类迁移到医疗文本分类 |
传递迁移(Transductive) | 源域和目标域不同,但任务相同 | 英文情感分析迁移到中文情感分析 |
无监督迁移(Unsupervised) | 都是无标签任务 | 图像聚类迁移到视频聚类 |
四、迁移学习的三要素
迁移学习涉及三部分内容:
-
源任务(source task):我们已经训练好的任务(如大语料的语言模型)
-
目标任务(target task):我们想要迁移到的新任务
-
迁移机制:模型参数、特征、结构等迁移方式
五、迁移学习的方法类型
1. 基于特征的迁移
将源任务中学到的特征表示迁移到目标任务。例如使用 fastText 训练词向量后,在下游任务中用这些向量作为输入特征。
2. 基于模型的迁移
直接将源模型的部分或全部结构迁移过来,例如 BERT、GPT 的迁移微调。
-
冻结底层,微调高层
-
或完全微调全部层
3. 基于实例的迁移
从源任务中选择部分“有用样本”加入目标任务,比如选择英文电影评论中最像中文商品评论的部分数据进行增强。
4. 基于参数的迁移
共享模型的部分参数或正则化源任务和目标任务之间的差异。
六、迁移学习和传统机器学习的对比
对比维度 | 传统机器学习 | 迁移学习 |
---|---|---|
数据需求 | 需要大量标签数据 | 少量数据也能启动 |
学习方式 | 每个任务独立训练 | 任务之间可共享经验 |
训练成本 | 训练从零开始 | 复用已有模型 |
泛化能力 | 对任务外表现差 | 更适应变化环境 |
七、迁移学习在 NLP 中的应用案例
-
词向量迁移(如 fastText)
在百万无标签文本上训练词向量,迁移到情感分析、问答系统。 -
语言模型迁移(如 BERT、GPT)
微调预训练模型,应用于文本分类、命名实体识别、摘要生成等。 -
跨语言迁移
将英文训练好的模型迁移到法语、西班牙语等低资源语言。
八、迁移失败与负迁移
虽然迁移学习强大,但并不总是有效。
负迁移(Negative Transfer)
当源任务和目标任务差异过大,强行迁移反而会降低效果。
例子:
把在金融文章上训练的语言模型迁移到社交媒体语料,因风格、词汇差异巨大,可能适得其反。
解决策略:
-
精选迁移数据或子模型层
-
增加适配层(如 domain adapter)
-
控制微调幅度(如冻结底层参数)
九、迁移学习的工具生态
-
fastText:轻量词向量迁移工具
-
Transformers (HuggingFace):支持 BERT、GPT 等预训练模型迁移
-
AdapterHub:专门做微调适配的小模块迁移平台
-
TensorFlow Hub / PyTorch Hub:一键加载迁移模型
十、总结
迁移学习的核心在于:
将已有的知识有效迁移,减少新任务学习的难度与数据依赖,提升性能。
它是当今深度学习中最成功的范式之一,在自然语言处理(NLP)、计算机视觉(CV)、语音识别等领域广泛应用。