核心思路

人类学习新任务时,很少从零开始——我们会调用已有的知识。

迁移学习就是这个思路:把在一个任务(源任务)上学到的知识,应用到另一个相关任务(目标任务)。

为什么有效

浅层神经网络学到的是通用特征(边缘、纹理、形状);深层学到的是任务特定特征(特定的物体、语义)。

对多数视觉任务,底层的通用特征是可复用的。因此,把一个在大规模数据集上预训练好的模型,迁移到新任务,通常比从零训练好得多——尤其当目标任务的数据量小时。

常见做法

一、特征提取器(冻结)

把预训练模型的卷积层作为固定的特征提取器,只训练新加的分类头。

适用:目标任务数据与预训练数据相似,且数据量小。

优点:训练快,几乎不会过拟合。

二、微调(Fine-tuning)

在预训练权重的基础上,用目标任务数据继续训练(通常解冻全部或部分层)。

做法:

  • 用更小的学习率(因为已有权重已经不错,不希望破坏);
  • 通常先冻结底层、训练顶层,再逐步解冻更多层("逐层解冻");
  • 数据量越大,可以解冻越多层。

三、领域自适应

当源域和目标域的数据分布不同时(如用合成的仿真图像训练,部署到真实照片),需要专门的方法对齐两个域的分布。

方法包括对抗训练(让特征提取器无法区分数据来自哪个域)、分布对齐等。

预训练大模型时代

在大模型时代,迁移学习的形态变成了:

  • 预训练 + 微调:用海量数据预训练一个通用模型,再用少量任务数据微调;
  • 提示学习 / 上下文学习:甚至不微调,只通过提示词引导模型完成任务(Zero-shot、Few-shot)。

优势:极大降低了下游任务的门槛——不需要大量标注数据,也不需要巨大的算力来训练。

什么时候迁移会失败

负迁移:源任务的知识反而损害了目标任务的表现。

通常发生在:

  • 源任务与目标任务差异过大(如用 ImageNet 的预训练权重去做医学影像,有时收益有限);
  • 数据分布差异巨大,而模型没有相应调整。

判断方法:实践中就是对比一下——用预训练权重 vs 从零训练,哪个效果好。

一个实用建议

数据量少时,迁移学习几乎总是有效的起点:

  1. 先找一个在相似领域预训练的模型;
  2. 冻结底层,训练分类头;
  3. 观察效果,逐步解冻更多层并降低学习率;
  4. 与从零训练的结果对比。

说明:本文为机器学习方法的知识整理。