文章

07 迁移学习(Transfer Learning)

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 标准做法(小数据集)

  1. 下载预训练模型
    例如,在 ImageNet(1000 类)上训练好的 ResNet、VGG 或 Inception 网络。
  2. 替换输出层
    原始模型最后一层是 $\text{Softmax}_{1000}$,需替换为:

    \[\hat{y} = \text{Softmax}(W_{\text{new}} a^{[L-1]} + b_{\text{new}})\]

    其中 $a^{[L-1]}$ 是倒数第二层的激活值,$W_{\text{new}} \in \mathbb{R}^{3 \times d}$,输出维度为 3。

  3. 冻结前面所有层
    将预训练网络的所有卷积层和全连接层(除新 Softmax 层外)设置为 trainable=Falsefreeze=1,即:

    \[\theta_{\text{frozen}} \leftarrow \text{constant}\]

    只更新新 Softmax 层的参数 $W_{\text{new}}, b_{\text{new}}$。

  4. 加速技巧:特征预提取
    由于前面网络是固定的,可预先计算所有训练样本在 $a^{[L-1]}$ 层的特征向量,并保存到硬盘。之后只需训练一个浅层分类器(如逻辑回归或小型全连接网络):

    \[\text{Train: } \min_{W,b} \sum_{i=1}^m \mathcal{L}\left( \text{Softmax}(W x_i^{\text{feat}} + b), y^{(i)} \right)\]

    其中 $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 开发的高效范式。

本文由作者按照 CC BY 4.0 进行授权