迁移学习 是指将从一个任务(源领域)中学到的知识,应用于另一个相关但不同的任务(目标领域)中,以提升后者性能和学习效率的过程。

简单类比:就像一个学会了打羽毛球的人,再学习打网球会更快,因为他已经掌握了球拍类运动的通用技能,如手眼协调、步伐移动等。
核心思想与动机:为什么不从头训练?
- 数据稀缺:目标领域的数据量太少,不足以训练一个强大的模型(医疗影像标注数据极少)。
- 计算成本高:从头训练大型深度神经网络(如GPT、ResNet)需要巨大的计算资源和时间。
- 提升起点:利用源领域预训练的模型作为起点,可以站在“巨人肩膀”上,让模型更快地收敛到更好的性能。
关键概念
- 源领域:知识来源的任务和数据,通常数据量大,任务定义明确。
- 目标领域:我们希望解决的新任务和数据,通常数据量小或没有标签。
- 知识:在迁移学习中,这通常指的是模型从源领域学到的参数、特征表示或模型结构。
- 迁移:将“知识”从源领域应用到目标领域的过程,关键在于找到两个领域之间的共通性或相关性。
为何有效?(假设与原理)
迁移学习有效的核心假设是:不同任务之间共享着一些通用的、底层的基础特征。
- 一个在ImageNet(包含猫、狗、车等)上训练的图像识别模型,已经学会了识别边缘、纹理、形状、物体部件等通用视觉特征,这些特征对于识别新的物体(如医疗细胞)同样有价值。
主要方法与类型(从技术角度)
根据源领域和目标领域的异同,主要有以下几种范式:
| 方法 | 描述 | 适用场景 | 例子 |
|---|---|---|---|
| 基于实例的迁移 | 复用源领域中有用的数据样本(可能加权)。 | 领域差异小,数据分布略有不同。 | 调整源数据权重,用于目标训练。 |
| 基于特征的迁移 | 最常用,复用源模型学习到的特征表示(如神经网络中间层的输出)。 | 领域相关,任务可能不同。 | 使用在ImageNet上预训练的CNN,提取特征后用于花卉分类。 |
| 基于模型的迁移 | 复用源模型的部分结构或参数。 | 任务高度相关,模型结构相似。 | 微调预训练语言模型(如BERT)做情感分析。 |
| 基于关系的迁移 | 迁移源领域数据点之间的关系或逻辑。 | 关系型任务,如社交网络推荐。 | 迁移用户-物品的交互模式。 |
在深度学习中的经典实践
这是目前应用最广泛的场景,主要指预训练+微调范式。
步骤:
- 预训练阶段:在一个大型、通用的源数据集(如ImageNet用于图像,Wikipedia用于文本)上,训练一个大型的、深度的神经网络模型(如ResNet, BERT, GPT),此时模型学到了非常丰富和通用的特征表示。
- 微调阶段:
- 特征提取器:冻结预训练模型的大部分层(尤其是底层),只将其作为固定的“特征提取器”,然后在其顶部训练一个新的、简单的分类器(如全连接层)来解决目标任务。
- 微调:解冻预训练模型的全部或部分层,并用目标领域的小规模数据,以较小的学习率对整个网络(或后半部分)进行继续训练,使其适应新任务。
优势与挑战
优势:
- 降低数据需求:对小数据目标领域极为友好。
- 提升性能:通常能获得比从头训练更好的泛化能力和准确率。
- 加快收敛:大幅减少训练时间和计算资源。
- 快速原型开发:能快速为新任务构建基线模型。
挑战:
- 负迁移:如果源领域和目标领域差异太大或不相关,强行迁移反而会损害目标任务的性能。
- 领域鸿沟:如何有效度量并弥合源领域与目标领域之间的分布差异。
- 知识选择:决定迁移哪些部分的知识(哪些层可微调,哪些应冻结)。
迁移学习的核心思想是 “举一反三” 和 “站在巨人的肩膀上”,它通过复用已有的、在大量数据上训练得到的“知识”,来解决新场景下数据或算力不足的问题,是目前计算机视觉、自然语言处理等领域取得突破性进展的关键技术之一。
对于初学者,最直接的实践就是:找一个在大型数据集上预训练好的经典模型(如ResNet, BERT),然后在自己的小数据集上尝试进行特征提取或微调。