视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程 · 结构化机器学习项目(Professionalization of Deep Learning)
  • 章节:2.7 迁移学习(Transfer Learning)
  • 时长:约 11 分钟
  • 语言:中英双语(转录中英文混排,中文部分为语音识别误差)

内容摘要(TL;DR)

本节讲解迁移学习:先在大数据集上预训练神经网络,再把学到的知识迁移到数据稀缺的新任务上。核心操作是替换输出层并重新初始化其权重,然后根据新任务数据量决定只重训输出层还是微调全部层。适用条件:任务 A 与 B 输入相同、A 数据远多于 B、A 的低层特征对 B 有帮助。


一、迁移学习的基本流程 [00:29]

核心思想:把在一个任务上学到的知识,迁移到另一个相关任务上。

以图像识别 → 放射科诊断(读 X 光片)为例,具体步骤:

  1. 第一阶段:预训练(Pre-training)

    • 取一个神经网络,在 (x, y) 数据对上训练,其中 x 是图像,y 是图像中的物体类别(猫、狗、鸟等)。
    • 训练网络的所有参数(所有权重、所有层),得到一个能做图像识别预测的模型。
  2. 第二阶段:迁移

    • 把网络最后的输出层删掉,同时删掉喂给该输出层的权重。
    • 为新的输出层创建一组随机初始化的权重(记为 WL、BL)。
    • 换入新数据集:x 变成放射科图像,y 变成想预测的诊断结果。
  3. 第三阶段:在新数据上重训

    • 在新数据(放射科数据集)上训练网络,有两种选择:
      • 数据量小 → 只重训输出层权重 WL、BL,其余参数冻结(fixed)。
      • 数据量足够大 → 重训网络中所有层的参数。

易错点:新输出层的权重必须是随机初始化的,不能直接沿用旧的输出层权重,因为新任务的类别数和语义都变了。

理解:这一流程本质上是把网络拆成「特征提取器(前面的层)+ 任务头(输出层)」。迁移时保留特征提取器,只换任务头。


二、预训练与微调(Pre-training & Fine-tuning)[02:50]

关键术语定义:

  • 预训练(Pre-training):在图像识别数据上做的初始阶段训练,用图像识别数据来预初始化神经网络的权重。
  • 微调(Fine-tuning):之后用放射科数据更新所有权重的过程。

考点:在深度学习的语境中听到「预训练」和「微调」,指的就是迁移学习中的这两个阶段。这是高频面试概念。

思考:预训练 + 微调是当今大模型(如 BERT、GPT 系列)的标准范式,吴恩达在这里讲的正是这一思想最早的经典表述之一。


三、为什么迁移学习有效 [03:31]

核心原因:大量低层特征(low-level features)可以复用。

  • 从超大规模图像识别数据集中学到的低层特征包括:检测边缘、检测曲线、检测物体的组成部分。
  • 网络已经学到了关于「图像长什么样」的结构和本质的大量知识。
  • 这些关于线条、点、曲线以及物体小部件的知识,能帮助放射科诊断:
    • 学得更快;
    • 用更少的数据也能学好。

理解:神经网络的层级结构决定了低层特征(边缘、纹理)具有跨任务的通用性,而高层特征(具体物体类别)则高度任务相关。迁移复用的正是通用性强的低层特征。


四、第二个例子:语音识别 → 唤醒词检测 [04:20]

任务设定:

  • 任务 A:语音识别。x 是音频片段,y 是转录文本(transcript)。
  • 任务 B:唤醒词 / 触发词检测(wake word / trigger word detection)。
    • 唤醒词是我们用来唤醒语音控制设备的词,例如:
      • 说 "Alexa" 唤醒 Amazon Echo;
      • 说 "Google" 唤醒 Google 设备;
      • 说 "Siri" 唤醒 Apple 设备;
      • 说 "Hey 小度" 唤醒小度设备。

做法:

  1. 取走网络最后一层,创建一个新的输出节点。
  2. 有时不止创建一个新输出,而是创建多个新层来预测唤醒词检测问题的标签 y。
  3. 根据数据量决定重训范围:可以只重训新层,也可以重训更多层。

易错点:迁移时不一定只换一层输出,可以新增多层。新增层数越多,可训练参数越多,对数据量的要求也越高。


五、迁移学习何时有意义 [05:42]

三个适用条件(假设你真正想做好的任务是 B):

  1. 任务 A 和任务 B 有相同的输入 x。

    • 例一:A 和 B 都是图像。
    • 例二:A 和 B 都是音频片段。
  2. 任务 A 的数据远多于任务 B 的数据。

  3. 任务 A 的低层特征对学习任务 B 有帮助。

数据量对比案例:

任务 A(源任务) 任务 B(目标任务)
图像识别:100 万样本 放射科诊断:仅 100 张 X 光片
语音识别:10000 小时数据 唤醒词检测:仅 1 小时数据

推导:为什么 A 的数据要比 B 多?因为每个 A 样本对任务 B 的价值低于每个 B 样本。要真正做好 B,B 的样本更宝贵。所以只有当 A 的数据量足够大时,从 A 迁移的知识才有价值。


六、迁移学习不适用的情形 [07:22]

反例:如果源任务数据反而更少,迁移学习没有意义。

具体场景:

  • 图像识别只有 100 张图,放射科诊断有 100 张甚至 1000 张 X 光片。
  • 此时,对做好放射科诊断而言,一张 X 光片的价值远高于一张猫狗图片。
  • 既然放射科数据本身已经更多,用 100 张随机物体(猫、狗、汽车等)图像来帮忙,不太可能有帮助。

易错点:这种情况下迁移学习可能不会有害,但也不会有任何有意义的增益。不要指望它带来提升。

类似地:

  • 语音识别用 10 小时数据训练,而唤醒词检测本身有 10 小时甚至 50 小时数据。
  • 此时把 10 小时数据拿来做迁移学习,可能无害,但不会有明显收益。

七、总结:迁移学习的判断标准 [08:50]

核心结论:

  • 迁移学习最有用的场景:你真正想做好的任务 B 数据相对稀缺。
  • 此时找一个相关的、但不同的任务 A(比如能拿到百万张图像的图像识别),从中学到大量低层特征,再迁移到任务 B。
  • 当迁移学习确实适用时,它能显著提升学习算法的性能。

判断口诀:

  1. 任务 A、B 输入 x 相同;
  2. 任务 A 数据 ≫ 任务 B 数据;
  3. 假设你真正想做好的任务是 B;
  4. A 的低层特征对 B 有帮助。

提醒:吴恩达特别指出,他见过一些场景,任务 A 的数据实际上比任务 B 还少,这种情况下不要指望看到多少增益。


八、承上启下:多任务学习 [10:55]

  • 迁移学习是「从一个任务学习,再顺序迁移到另一个任务」。
  • 另一种「从多个任务学习」的范式叫多任务学习(Multi-task Learning):同时从多个任务中学习,而不是先学一个再迁移。
  • 下一节视频将讨论多任务学习。

思考:迁移学习是「串行」的知识复用,多任务学习是「并行」的知识共享。两者都利用了任务间的相关性,但训练方式和适用场景不同。


关键标签 / 关键词

迁移学习 #TransferLearning #预训练 #PreTraining #微调 #FineTuning #低层特征 #LowLevelFeatures #输出层替换 #随机初始化 #冻结参数 #图像识别 #放射科诊断 #语音识别 #唤醒词检测 #TriggerWordDetection #多任务学习 #MultiTaskLearning #吴恩达 #深度学习专项课程 #结构化机器学习项目


生成时间:2026-10-10 22:40:29 生成平台:VideoNote www.xygy.top