
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 改善深层神经网络:超参数调试、正则化以及优化(第二课)
- 章节:14 - 2.3 残差网络(Residual Networks / ResNet)
- 视频时长:约 6 分钟
- 主题:残差块(Residual Block)、跳跃连接(Skip Connection)、残差网络(ResNet)
内容摘要(TL;DR)
本视频介绍了残差网络(ResNet)的核心思想:通过跳跃连接(Skip Connection)将浅层激活值直接传递到深层,构建残差块。这种结构有效缓解了深度网络中的梯度消失和梯度爆炸问题,使得训练超过100层甚至上千层的极深网络成为可能,且训练误差随层数增加持续下降而非反弹。
一、问题背景:深网络的训练困境 [00:00]
核心问题:非常深的神经网络难以训练,主要原因是梯度消失(Vanishing Gradients)和梯度爆炸(Exploding Gradients)问题。
- 当网络层数增加时,反向传播中的梯度会逐层衰减(消失)或逐层放大(爆炸),导致浅层参数几乎无法更新或更新过大。
- 这直接限制了网络可以加深的程度,使得"越深越好"的理论预期在实践中无法实现。
易错点:很多人误以为网络越深效果一定越好。实际上,普通(Plain)网络在层数增加到一定程度后,训练误差会先下降后反弹上升——这不是过拟合,而是优化困难导致的。
理解:梯度消失/爆炸本质上是链式法则连乘效应。当每层梯度小于1时连乘趋近0,大于1时连乘趋近无穷。残差连接提供了一条"梯度高速公路",让梯度可以直接回传到浅层。
二、残差块的结构与原理 [00:27]
2.1 普通网络的两层计算流程
以两层网络为例,从激活值 $a^{[l]}$ 到 $a^{[l+2]}$ 的标准计算过程:
- 线性变换:$z^{[l+1]} = W^{[l+1]} a^{[l]} + b^{[l+1]}$
- 非线性激活:$a^{[l+1]} = g(z^{[l+1]})$
- 再次线性变换:$z^{[l+2]} = W^{[l+2]} a^{[l+1]} + b^{[l+2]}$
- 再次非线性激活:$a^{[l+2]} = g(z^{[l+2]})$
这条信息传递路径被称为主路径(Main Path)。信息必须依次经过每一步才能从 $a^{[l]}$ 流到 $a^{[l+2]}$。
2.2 残差块的改造
关键改动:将 $a^{[l]}$ 直接"跳过"中间层,复制并加到第二层的非线性激活之前。
改造后的输出公式变为:
$$a^{[l+2]} = g(z^{[l+2]} + a^{[l]})$$
- 即在应用非线性激活函数 $g$ 之前,先加上 $a^{[l]}$。
- 这条新增的路径称为捷径(Shortcut)或跳跃连接(Skip Connection)。
结构要点(易错点):
跳跃连接是加在线性路径之后、非线性激活之前。即 $a^{[l]}$ 注入的位置是在 $z^{[l+2]}$ 计算完成之后、$g(\cdot)$ 应用之前。画图时,shortcut 应指向第二个线性层输出与激活函数之间的位置。
理解:这个加法操作让网络学习的是"残差"(即 $F(x) = H(x) - x$),而非直接学习目标映射 $H(x)$。如果恒等映射是最优的,网络只需将残差权重逼近0即可,比从头学习恒等映射容易得多。
2.3 术语说明
- Shortcut(捷径):吴恩达课程中的常用说法
- Skip Connection(跳跃连接):另一种常见说法
- 含义相同:让 $a^{[l]}$ 跳过一层或近两层,将信息传递到网络更深处
三、残差网络的构建 [03:51]
3.1 从普通网络到残差网络
- 普通网络(Plain Network):这是 ResNet 论文中的术语,指没有跳跃连接的标准深层网络。
- 残差网络(ResNet):在普通网络基础上,每隔两层添加一条跳跃连接,将每两层转化为一个残差块。
3.2 堆叠残差块
- 将多个残差块堆叠在一起,就形成了残差网络。
- 视频中展示了 5 个残差块堆叠构成的残差网络结构。
思考:实际 ResNet 架构(如 ResNet-50、ResNet-101)中,残差块还分为 Basic Block(两层)和 Bottleneck Block(三层,含1×1卷积降维/升维),视频此处介绍的是最基础的两层残差块形式。
四、残差网络的效果与意义 [04:57]
4.1 普通网络的退化现象
- 使用标准优化算法(如梯度下降、Adam 等)训练普通网络时:
- 随着层数增加,训练误差先下降;
- 但到一定程度后,训练误差会反弹上升。
- 理论上:更深的网络在训练集上应该表现更好(至少不会更差)。
- 实际上:过深的普通网络由于优化困难,训练误差反而变差。
考点:退化问题(Degradation Problem):深层普通网络的训练误差反而高于浅层网络,这不是过拟合(训练误差本身就高),而是优化算法难以训练深层网络导致的。这是 ResNet 要解决的核心问题。
4.2 残差网络的优势
- 使用残差块后,即使网络层数很深,训练误差也能持续下降。
- 可以成功训练超过100层的网络。
- 已有实验尝试超过1000层的网络(虽然实践中尚未广泛使用)。
4.3 为什么有效
- 通过让中间激活值直接传递到网络更深处,残差连接有效缓解了梯度消失和梯度爆炸问题。
- 使得训练极深网络时性能不会明显下降。
- 当然,层数增加到极端时性能最终也会趋于平台期(plateau),但 ResNet 确实极大地提升了可训练的深度上限。
推导:从反向传播角度看,残差块中梯度可以通过跳跃连接直接回传:$\frac{\partial a^{[l+2]}}{\partial a^{[l]}} = 1 + \frac{\partial}{\partial a^{[l]}} g(z^{[l+2]})$。那个"1"保证了梯度至少能以恒等方式无损回传,不会因连乘而消失。
五、补充背景与拓展【拓展】
5.1 ResNet 的提出
- ResNet 由 Kaiming He(何恺明)、Xiangyu Zhang、Shaoqing Ren、Jian Sun 于 2015 年提出(视频中提到的发明者名字因语音识别问题显示为乱码)。
- 论文《Deep Residual Learning for Image Recognition》发表于 CVPR 2016,获得当年最佳论文奖。
- 在 ImageNet 竞赛中,ResNet 以 152 层网络取得冠军,错误率低至 3.57%,首次超越人类水平(约5%)。
5.2 关键设计细节
- 维度匹配问题:跳跃连接要求 $a^{[l]}$ 与 $z^{[l+2]}$ 维度一致。若不一致(如经过池化层后通道数变化),需要引入线性投影 $W_s$ 来调整维度:$a^{[l+2]} = g(z^{[l+2]} + W_s a^{[l]})$。
- 1×1 卷积:在 Bottleneck 结构中用于降维和升维,减少计算量。
- Batch Normalization:ResNet 中大量使用 BN,与残差连接配合进一步提升训练稳定性。
5.3 容易踩坑的点
- 维度不匹配:跳跃连接两端维度必须一致,否则无法直接相加,需要投影矩阵。
- 加法位置:一定是在激活函数之前相加,顺序错误会破坏残差学习的效果。
- 不是所有网络都叫 ResNet:只有每隔两层(或特定模式)添加跳跃连接的网络才构成 ResNet 结构。
- 残差 vs 过拟合:残差网络解决的是训练误差问题(优化困难),不是过拟合问题(泛化误差)。两者概念不同,不要混淆。
5.4 后续影响
- ResNet 的思想深刻影响了后续架构设计,如 DenseNet(密集连接)、Highway Networks(门控跳跃连接)等。
- 残差连接已成为现代深度学习模型的标配组件,Transformer 架构中同样大量使用残差连接。
关键标签/关键词
残差网络 #ResNet #跳跃连接 #SkipConnection #残差块 #ResidualBlock #梯度消失 #梯度爆炸 #深层网络 #吴恩达 #深度学习 #计算机视觉 #ImageNet #何恺明 #退化问题 #优化算法
生成时间:2026-10-10 22:56:31 生成平台:VideoNote www.xygy.top