视频封面

视频元信息

  • 课程名称:吴恩达深度学习专项课程(Deep Learning Specialization)
  • 所属模块:Professionalization of Deep Learning / 结构化机器学习项目
  • 本讲主题:迁移学习(Transfer Learning)
  • 视频时长:约 8 分 45 秒(约 525 秒)
  • 语言:官方中英双语字幕

内容摘要(TL;DR)

本节讲解迁移学习的核心思想:将他人在大规模数据集(如 ImageNet)上训练好的网络权重,作为自己任务的初始化参数,只需微调输出层或部分层,即可在小数据集上取得优秀表现。核心原则是:数据越少,冻结的层越多;数据越多,可训练的层越多。计算机视觉领域几乎总是应优先考虑迁移学习。


一、迁移学习的问题背景 [00:31]

核心动机:深度学习训练往往需要数周时间、多块 GPU 的算力,但互联网上有大量已训练好的开源权重可以直接下载使用,无需从零开始。

1.1 为什么需要迁移学习

  • 训练一个深度神经网络通常需要:
    • 数周的训练时间
    • 多块 GPU 的算力资源
    • 海量的标注数据
  • 但很多研究者和机构已经在大规模公开数据集上训练好了算法,并开源了权重。
  • 理解:这意味着你不需要重复"造轮子",可以直接站在巨人的肩膀上。

1.2 迁移学习的本质

  • 把别人花数周甚至数月训练出的权重,作为自己神经网络的初始化参数。
  • 将知识从大型公开数据集迁移到自己的具体问题上。
  • 思考:这就像学会骑自行车后,学骑摩托车会快很多——底层能力(特征提取)是通用的。

二、迁移学习实例:猫咪识别器 [01:13]

2.1 任务设定

假设你要构建一个猫咪检测器,识别自家宠物猫:

  • 互联网上常见的猫名有 Ticker 和 Misty
  • 你的猫分别叫 Ticker 和 Misty
  • 还有一个类别是 Neither(都不是)

考点:这是一个三分类问题——判断图片是 Ticker、Misty 还是 Neither(也可能两只猫同时出现在一张图里)。

2.2 面临的问题

  • 你没有大量 Ticker 或 Misty 的照片
  • 训练集非常小
  • 直接从头训练网络效果会很差

三、迁移学习的标准做法(小数据集场景)[02:02]

3.1 操作步骤

  1. 下载开源网络:到网上找一个神经网络的开源实现
  2. 下载权重:不仅下载代码,还要下载预训练权重
  3. 选择预训练数据集:例如 ImageNet 数据集(包含 1000 个不同类别)
  4. 替换输出层:
    • 原网络的 softmax 层输出 1000 个类别
    • 删除原来的 softmax 层
    • 创建自己的 softmax 层,输出 3 个类别(Ticker / Misty / Neither)

3.2 冻结参数策略

关键操作:将网络中所有前面的层视为"冻结"(frozen),只训练自己新建的 softmax 层参数。

  • 冻结(Freeze):固定这些层的参数,训练时不更新
  • 只训练:与新 softmax 层相关联的参数(3 个输出)

3.3 效果

  • 即使数据集很小,使用别人预训练好的权重也能获得相当不错的性能。

四、深度学习框架中的实现方式 [03:22]

4.1 框架支持

  • 大多数深度学习框架都支持这种"冻结层"的操作模式。
  • 不同框架的参数命名不同:
    • 有的用 trainable parameter = 0(表示不训练该层权重)
    • 有的用 trainable = 1(表示训练该层权重)

易错点:不同框架的参数命名和默认值不同,使用前务必查阅对应框架文档,避免误设。

4.2 本场景的设置

  • 只训练 softmax 层的权重
  • 冻结所有前面层的权重

五、加速训练技巧:预计算激活值 [04:04]

核心技巧:由于前面的层被冻结,它们构成一个固定的函数(不随训练改变),因此可以预计算这些层的激活值并保存到磁盘,从而大幅加速训练。

5.1 原理

  • 前面的层被冻结 → 是一个不变的固定函数
  • 该函数把输入图像 x 映射到某一层的激活值
  • 因为参数不变,所以每次计算结果都一样

5.2 具体做法

  1. 用网络的前半部分(固定函数)对所有训练样本计算特征向量(激活值)
  2. 将这些激活值保存到磁盘
  3. 在保存的特征向量之上,只训练一个 softmax 分类器

5.3 优势

  • 不需要每次遍历训练集(每个 epoch)时重新计算这些激活值
  • 理解:相当于把"特征提取"这一步一次性做完并缓存,后续只训练轻量的分类头,训练速度大幅提升。

适用场景:训练集非常小时使用此方法。


六、更大数据集下的策略调整 [05:28]

6.1 经验法则

考点:数据量越大,可以训练的层数越多,需要冻结的层数越少。

6.2 中等数据集场景

假设你有大量 Ticker、Misty 以及 Neither 的照片:

  • 冻结前面的部分层
  • 训练后面的部分层
  • 注意:如果输出层类别不同,仍需要自己的输出单元(Ticker / Misty / Neither)

6.3 训练后面层的两种方式

  1. 保留最后几层:将其作为初始化,从这里开始做梯度下降
  2. 丢弃最后几层:用自己的新隐藏单元 + 自己的最终 softmax 输出替换

思考:两种方法都值得尝试,具体选哪种取决于数据量和任务相似度。


七、数据量与可训练层数的对应关系 [06:32]

核心规律(务必牢记):

  • 标注数据越多 → 可训练的层数越多 → 冻结的层数越少
  • 数据量极大时 → 可以把下载的权重仅作为初始化,训练整个网络

7.1 规律总结

数据量 冻结层数 训练层数
很小 几乎全部冻结 仅 softmax 层
中等 冻结前面部分 训练后面部分
很大 不冻结(或很少) 训练整个网络

7.2 极端情况

  • 如果数据量非常大:
    • 把下载的权重当作初始化(替代随机初始化)
    • 对所有层做梯度下降训练,更新全部权重
  • 但注意:如果原网络是 1000 类 softmax,而你只需要 3 个输出,仍需替换为自己的 softmax 输出层。

八、迁移学习在计算机视觉中的实践建议 [07:54]

8.1 核心结论

  • 互联网上的公开数据集非常大
  • 别人花数周训练出的权重学到了大量数据中的知识
  • 在几乎所有计算机视觉应用中:
    • 下载别人的开源权重作为初始化
    • 效果通常远好于从零开始训练

8.2 吴恩达的建议

在计算机视觉领域,迁移学习几乎总是应该做的,除非你拥有:

  • 异常大的数据集
  • 非常大的计算预算

能够完全从零开始训练所有内容。

  • 在深度学习的各个学科和应用中,计算机视觉是迁移学习最应该优先考虑的领域。
  • 即使不是计算机视觉,迁移学习也非常值得认真考虑。

九、核心概念解释与拓展

9.1 关键概念速查

  • 迁移学习(Transfer Learning):将在一个任务/数据集上学到的知识,迁移到另一个相关任务上。
  • 冻结(Freeze):固定某些层的参数,训练时不更新。
  • 预训练权重(Pre-trained Weights):在大型数据集上训练好的网络参数。
  • ImageNet:包含 1000 类、上百万张图片的大规模图像数据集,是计算机视觉预训练的标准数据集。
  • Softmax 层:输出层,将输出转化为各类别的概率分布。

9.2 【拓展】为什么迁移学习有效

  • 神经网络的浅层通常学习通用特征(如边缘、纹理、颜色)
  • 深层学习任务特定特征(如猫的耳朵、胡须)
  • 因此浅层特征可以在不同任务间复用,这正是迁移学习有效的原因。
  • 理解:这解释了为什么数据少时冻结浅层、只训练深层——因为浅层特征通用,深层才需要针对新任务调整。

9.3 【拓展】容易踩坑的点

  1. 忘记替换输出层:预训练模型输出类别数往往与你的任务不同,必须替换。
  2. 学习率设置不当:微调时通常要用较小的学习率,避免破坏已学好的权重。
  3. 数据预处理不一致:使用预训练权重时,输入图像的归一化方式必须与预训练时一致。
  4. 冻结层误设:不同框架的冻结参数命名不同,容易设置错误。
  5. 任务差异过大:如果新任务与预训练任务差异极大,迁移效果可能有限。

9.4 【拓展】迁移学习 vs 从零训练

  • 迁移学习优势:省时、省算力、小数据也能有好效果
  • 从零训练适用:数据量极大、算力充足、任务与现有预训练模型差异极大时

关键标签 / 关键词

迁移学习 Transfer Learning 预训练权重 Pre-trained Weights 冻结层 Freeze Layers 微调 Fine-tuning ImageNet Softmax 计算机视觉 Computer Vision 深度学习 吴恩达 Deep Learning Specialization 特征复用 预计算激活值 小数据集 梯度下降


生成时间:2026-10-10 23:04:37 生成平台:VideoNote www.xygy.top