07 迁移学习(Transfer Learning)
07 迁移学习(Transfer Learning)
迁移学习(Transfer Learning)是深度学习,尤其是计算机视觉(Computer Vision)领域中极为重要且高效的技术。其核心思想是:利用在大规模数据集上预训练好的模型权重,作为新任务模型的初始化参数,从而显著提升小数据集上的训练效果与收敛速度。
一、迁移学习的基本原理
1.1 为什么使用迁移学习?
- 数据稀缺:对于特定任务(如识别自家宠物猫 Tigger 和 Misty),很难收集大量标注数据。
- 训练成本高:从头训练一个大型卷积神经网络(CNN)可能需要数周时间和多块 GPU。
- 知识复用:在 ImageNet、MS COCO 等大型公开数据集上训练的模型,已经学习到了丰富的通用特征(如边缘、纹理、形状等),这些特征对大多数视觉任务都有帮助。
✅ 关键结论: “不要从随机初始化开始,而是从别人花了几周训练好的权重开始。”
二、迁移学习的典型应用场景
以三分类猫咪检测器为例:
- 类别1:Tigger
- 类别2:Misty
- 类别3:Neither(都不是)
假设你只有少量(例如几百张)标注图片。
2.1 标准做法(小数据集)
- 下载预训练模型
例如,在 ImageNet(1000 类)上训练好的 ResNet、VGG 或 Inception 网络。 替换输出层
\[\hat{y} = \text{Softmax}(W_{\text{new}} a^{[L-1]} + b_{\text{new}})\]
原始模型最后一层是 $\text{Softmax}_{1000}$,需替换为:其中 $a^{[L-1]}$ 是倒数第二层的激活值,$W_{\text{new}} \in \mathbb{R}^{3 \times d}$,输出维度为 3。
冻结前面所有层
\[\theta_{\text{frozen}} \leftarrow \text{constant}\]
将预训练网络的所有卷积层和全连接层(除新 Softmax 层外)设置为trainable=False或freeze=1,即:只更新新 Softmax 层的参数 $W_{\text{new}}, b_{\text{new}}$。
加速技巧:特征预提取
\[\text{Train: } \min_{W,b} \sum_{i=1}^m \mathcal{L}\left( \text{Softmax}(W x_i^{\text{feat}} + b), y^{(i)} \right)\]
由于前面网络是固定的,可预先计算所有训练样本在 $a^{[L-1]}$ 层的特征向量,并保存到硬盘。之后只需训练一个浅层分类器(如逻辑回归或小型全连接网络):其中 $x_i^{\text{feat}} = f_{\text{frozen}}(x^{(i)})$ 是预提取的特征。
三、根据数据量调整迁移策略
| 数据规模 | 推荐策略 |
|---|---|
| 极小(< 1k 样本) | 冻结所有层,仅训练新 Softmax 层 |
| 中等(1k–10k) | 冻结前面大部分层,微调最后几层(如最后 1–2 个卷积块 + 全连接层) |
| 大(> 10k) | 使用预训练权重作为初始化,训练整个网络(包括所有层) |
🔁 核心规律:数据越多,可训练的层数越多;数据越少,越依赖预训练特征,冻结层数越多。
四、数学表达与关键公式
4.1 Softmax 输出(新任务)
\[\hat{y}_j = \frac{e^{z_j}}{\sum_{k=1}^3 e^{z_k}}, \quad z = W_{\text{new}} a^{[L-1]} + b_{\text{new}}\]4.2 损失函数(交叉熵)
\[\mathcal{L} = -\sum_{j=1}^3 y_j \log(\hat{y}_j)\]其中 $y \in {[1,0,0], [0,1,0], [0,0,1]}$ 是 one-hot 标签。
4.3 参数更新(仅新层)
\[W_{\text{new}} \leftarrow W_{\text{new}} - \eta \nabla_{W_{\text{new}}} \mathcal{L}\]而 $\nabla_{\theta_{\text{frozen}}} \mathcal{L} = 0$(不更新)。
五、实践建议与框架支持
- 主流框架均支持:PyTorch (
requires_grad=False)、TensorFlow/Keras (layer.trainable = False)。 - 推荐预训练模型库:TorchVision Models、TensorFlow Hub、Hugging Face Transformers(用于视觉模型如 ViT)。
- 避免过拟合:小数据集下务必使用 Dropout、数据增强(旋转、裁剪、翻转等)。
六、总结
迁移学习是深度学习工程实践中的黄金准则,尤其适用于:
- 小样本场景
- 计算资源有限
- 需要快速原型验证
💡 吴恩达强调:“在计算机视觉中,除非你有超大规模数据集和强大算力,否则永远优先考虑迁移学习。”
通过复用 ImageNet 等大型数据集上学到的通用视觉表示,我们能以极低成本构建高性能的定制化模型,这正是现代 AI 开发的高效范式。