
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 结构化机器学习项目(Professionalization of Deep Learning)
- 章节:2.8 多任务学习(Multi-task Learning)
- 语言:英文讲解 + 中英字幕
内容摘要(TL;DR)
本节讲解多任务学习(Multi-task Learning):一个神经网络同时学习多个任务,共享底层特征。与迁移学习不同,多任务学习是并行训练多个任务,各任务互相帮助。以自动驾驶中同时检测行人、车辆、停车标志、红绿灯为例,说明网络结构、损失函数设计,以及允许部分标签缺失的训练技巧,并对比多任务学习与迁移学习的适用场景。
一、多任务学习 vs 迁移学习:核心区别 [00:00]
关键对比:
- 迁移学习(Transfer Learning):串行过程——先从任务 A 学习,再迁移到任务 B。
- 多任务学习(Multi-task Learning):并行过程——从一开始就让一个神经网络同时做几件事,每个任务都帮助其他任务。
理解:迁移学习是"先学后迁",多任务学习是"同时学、互相帮"。
易错点: 不要把多任务学习误解为"多个模型"——它强调的是一个网络、多个输出。
二、典型案例:自动驾驶中的多目标检测 [00:17]
以自动驾驶(self-driving car)为例,需要从同一张图像中检测多种目标:
- 行人(pedestrians)
- 其他车辆(other cars)
- 停车标志(stop signs)
- 交通信号灯(traffic lights)
- 以及其他更多目标
例子说明: 左侧图像中有一块停车标志和一辆汽车,但没有行人、没有红绿灯。
标签结构的变化 [00:53]
- 传统单任务:一个输入 $x_i$ 对应一个标签 $y_i$。
- 多任务:一个输入 $x_i$ 对应四个标签 $y_i$,构成一个 4×1 向量。
本例中 $y_i$ 为: | 类别 | 是否存在 | |------|---------| | 行人 | 0(不存在) | | 汽车 | 1(存在) | | 停车标志 | 1(存在) | | 红绿灯 | 0(不存在) |
如果检测更多目标,$y_i$ 的维度还会更高。
训练集标签矩阵的变化 [01:18]
- 把标签水平堆叠:$y_1, y_2, ..., y_m$。
- 由于每个 $y_i$ 是 4×1 向量,堆叠后得到高列向量。
- 矩阵 $Y$ 的维度变为 4×M(4 行 M 列)。
- 对比: 之前单个实数标签时,$Y$ 是 1×M 矩阵。
三、网络结构与损失函数设计 [01:49]
网络输出层设计 [01:49]
- 神经网络输出一个四维向量 $\hat{y}$。
- 输出层有四个节点,每个节点对应一个二分类问题:
- 图中是否有行人?
- 图中是否有汽车?
- 图中是否有停车标志?
- 图中是否有红绿灯?
考点: 输出层四个节点,每个都是独立的二分类(logistic)输出,而非互斥的 softmax。
损失函数 [02:26]
整体训练集的平均损失:
$$\frac{1}{m} \sum_{i=1}^{m} \sum_{j=1}^{4} L(y_j^{(i)}, \hat{y}_j^{(i)})$$
其中 $L$ 是常规的 logistic 损失(交叉熵):
$$L = -y_j^{(i)} \log \hat{y}_j^{(i)} - (1 - y_j^{(i)}) \log(1 - \hat{y}_j^{(i)})$$
与二分类的区别: 多了一层对 $j = 1$ 到 $4$ 的求和。
与 Softmax 回归的区别(重点):
- Softmax 回归:给单个样本分配一个标签(互斥,如"这是猫/狗/鸟之一")。
- 多任务学习:一张图可以有多个标签(不互斥,如"同时有汽车和停车标志")。
理解:Softmax 是"多选一",多任务学习是"逐类判断是否出现",每类独立二分类。
易错点: 不要用 Softmax 替换多任务输出层——那会强制各类互斥,无法表达"一张图同时有车和停车标志"。
四、多任务学习的核心优势:特征共享 [05:00]
关键洞察:
- 另一种做法:训练四个独立神经网络分别做四个任务。
- 但如果早期特征可以在不同目标类型间共享,那么训练一个网络做四件事的性能优于训练四个完全独立的网络。
这就是多任务学习的力量(power of multi-task learning)。
理解:底层特征(边缘、纹理、形状)对识别行人、汽车、停车标志、红绿灯是通用的,共享这些特征能让每个任务都受益于其他任务的数据。
五、允许部分标签缺失(重要技巧)[05:26]
核心事实: 多任务学习即使某些图像只标注了部分目标也能工作。
例子:
- 第 1 个训练样本:标注了"有行人、无汽车",但没有标注是否有停车标志或红绿灯。
- 第 2 个样本:标注了"有行人、有汽车",但同样没标注停车标志和红绿灯。
- 有些样本完全标注,有些只标注了部分目标。
- 这些未标注项就是问号(question marks) 或"don't care"。
训练方法 [06:28]
在求和 $\sum_{j=1}^{4}$ 中,只对已标注(0 或 1)的 $j$ 求和:
- 遇到问号时,从求和中省略该项。
- 只对存在标签的值求和。
这使得你可以利用这种部分标注的数据集进行训练。
易错点: 当标签为问号/未标注时,务必从损失求和中剔除该项,否则会引入错误的监督信号。
六、多任务学习何时有意义?[06:55]
吴恩达给出三条判断标准:
1. 任务之间能共享底层特征(硬性条件)
- 训练的一组任务能从共享的低层特征(shared low-level features) 中受益。
- 自动驾驶例子:识别红绿灯、汽车、行人应具有相似特征,这些特征也能帮助识别停车标志,因为它们都是道路上的特征。
2. 每个任务的数据量大致相似(经验性,非硬性规则)
- 对比迁移学习:任务 A 有 100 万样本,任务 B 有 1000 样本——A 的知识可增强 B。
- 多任务学习:通常任务数量远多于两个(如 100 个任务)。
- 假设每个任务约 1000 样本:
- 若孤立训练第 100 个任务,只有 1000 样本。
- 但训练其他 99 个任务,合计有 99000 个训练样本,可为第 100 个任务提供大量知识增益。
- 对称地,其他 99 个任务也都能从彼此获益。
关键点: 若你已有某任务 1000 样本,其他任务想帮助它,则其他任务合计需远多于 1000 样本。满足方式之一:任务多 + 每个任务数据量相似。
3. 能训练足够大的神经网络
- 研究者 Rich Caruana 多年前发现:
- 多任务学习唯一会损害性能的情况是——神经网络不够大。
- 只要能训练足够大的网络,多任务学习几乎不会损害性能,反而通常会提升性能。
理解:网络容量足够大时,各任务有足够参数空间独立学习,同时共享底层特征,实现"1+1>2"。
七、实践中的使用频率与对比 [10:38]
重要结论:
- 实践中,多任务学习的使用频率远低于迁移学习。
- 迁移学习应用广泛:小数据问题 → 找大数据相关问题 → 学习并迁移。
- 多任务学习较少见:因为很难凑齐大量你真正想同时做好的任务。
- 唯一例外:计算机视觉中的目标检测(object detection)——一个网络同时检测大量物体,效果优于分别训练多个网络。
考点总结: 迁移学习 > 多任务学习(使用频率)。多任务学习的典型应用是 CV 目标检测。两者都是工具箱中的重要工具。
八、本节总结 [11:25]
- 多任务学习:训练一个神经网络做多个任务。
- 相比孤立训练各任务,多任务学习通常能带来更好性能。
- 实践中迁移学习使用更频繁。
- 多任务学习在计算机视觉目标检测中应用较多。
- 多任务学习和迁移学习都是重要的工具,应纳入你的"工具箱"。
- 下一节:端到端深度学习(End-to-end Deep Learning)。
关键标签 / 关键词
多任务学习、Multi-task Learning、迁移学习、Transfer Learning、自动驾驶、目标检测、Object Detection、共享底层特征、Shared Low-level Features、Logistic 损失、Softmax 回归、部分标签缺失、Question Marks、Don't Care、Rich Caruana、神经网络容量、吴恩达、深度学习专项课程
生成时间:2026-10-10 22:41:33 生成平台:VideoNote www.xygy.top