核心思路
人类学习新任务时,很少从零开始——我们会调用已有的知识。
迁移学习就是这个思路:把在一个任务(源任务)上学到的知识,应用到另一个相关任务(目标任务)。
为什么有效
浅层神经网络学到的是通用特征(边缘、纹理、形状);深层学到的是任务特定特征(特定的物体、语义)。
对多数视觉任务,底层的通用特征是可复用的。因此,把一个在大规模数据集上预训练好的模型,迁移到新任务,通常比从零训练好得多——尤其当目标任务的数据量小时。
常见做法
一、特征提取器(冻结)
把预训练模型的卷积层作为固定的特征提取器,只训练新加的分类头。
适用:目标任务数据与预训练数据相似,且数据量小。
优点:训练快,几乎不会过拟合。
二、微调(Fine-tuning)
在预训练权重的基础上,用目标任务数据继续训练(通常解冻全部或部分层)。
做法:
- 用更小的学习率(因为已有权重已经不错,不希望破坏);
- 通常先冻结底层、训练顶层,再逐步解冻更多层("逐层解冻");
- 数据量越大,可以解冻越多层。
三、领域自适应
当源域和目标域的数据分布不同时(如用合成的仿真图像训练,部署到真实照片),需要专门的方法对齐两个域的分布。
方法包括对抗训练(让特征提取器无法区分数据来自哪个域)、分布对齐等。
预训练大模型时代
在大模型时代,迁移学习的形态变成了:
- 预训练 + 微调:用海量数据预训练一个通用模型,再用少量任务数据微调;
- 提示学习 / 上下文学习:甚至不微调,只通过提示词引导模型完成任务(Zero-shot、Few-shot)。
优势:极大降低了下游任务的门槛——不需要大量标注数据,也不需要巨大的算力来训练。
什么时候迁移会失败
负迁移:源任务的知识反而损害了目标任务的表现。
通常发生在:
- 源任务与目标任务差异过大(如用 ImageNet 的预训练权重去做医学影像,有时收益有限);
- 数据分布差异巨大,而模型没有相应调整。
判断方法:实践中就是对比一下——用预训练权重 vs 从零训练,哪个效果好。
一个实用建议
数据量少时,迁移学习几乎总是有效的起点:
- 先找一个在相似领域预训练的模型;
- 冻结底层,训练分类头;
- 观察效果,逐步解冻更多层并降低学习率;
- 与从零训练的结果对比。
说明:本文为机器学习方法的知识整理。