30u30 中文导读 / 30 天目录 / 第 9 天

第 9 天 · 让网络只学“差多少”,152 层也能训

第 2 单元Deep Residual Learning for Image RecognitionKaiming He, Xiangyu Zhang, Shaoqing Ren, et al.arXiv 2015;CVPR 2016 · 2015
这是导读,不是翻译。先用 10 分钟拿到这篇论文的思想地图,再去读 原论文 →,去原仓库的 09_resnet/ 目录 → 动手写代码。
给孩子讲:这一天有 10 岁孩子能听懂的讲义,带猜字游戏和动手活动,可打印。打开儿童讲义 → · PDF 简体 · PDF 繁體

一句话

ResNet 让每个模块学习残差 F(x) = H(x) − x,再用恒等捷径把输入 x 加回去。这个改动解决了深网络的退化问题,152 层网络的集成在 ImageNet 上取得 3.57% 的 top-5 错误率,赢得 ILSVRC 2015 分类第一。

论文讲了什么

结论先行:给每 2 到 3 层加一条把输入直接加到输出的捷径,网络就能从 20 层加深到 152 层,而且越深越准。

问题:退化(degradation)。作者在 CIFAR-10 上发现,56 层普通网络的训练误差比 20 层还高。训练误差也高,说明不是过拟合。ImageNet 上也一样:34 层普通网络比 18 层差。按理说深网络不该更差:把浅网络复制过来,多出的层设成恒等映射,误差至少一样低。所以问题出在优化:求解器找不到这个解。作者还指出这不是梯度消失,因为每层都用了批归一化,前向信号和反向梯度的范数都正常。

方法。

关键结果。

关键概念

退化问题(degradation problem)
网络加深后训练误差反而上升。它不是过拟合,因为训练集上就更差;它是优化困难,求解器找不到深网络本该能表示的好解。
残差学习(residual learning)
不让层直接拟合目标映射 H(x),而是拟合差值 F(x) = H(x) − x。目标接近恒等时,只需把 F 的权重推向 0。
恒等捷径(identity shortcut)
把模块输入原样加到输出上,不增加参数和计算量。前向时信号可以跳过模块,反向时梯度也能沿捷径直接回传。
瓶颈块(bottleneck block)
1×1 降维、3×3 计算、1×1 升维三层结构。它让 3×3 卷积在少通道上运算,深网络的计算量因此可控。
批归一化(Batch Normalization, BN)
把每层输出按 mini-batch 的均值和方差标准化,再学习缩放和平移。ResNet 每个卷积后都接 BN,它是深网络能起步训练的前提。

历史位置:为什么值得读

它解决了“深度到底有没有用”的困惑。2014 年 VGG 做到 19 层,GoogLeNet 做到 22 层,再往深加,效果就变差。ResNet 用一个几乎零成本的改动,把可训练深度推高了一个数量级。论文获得 CVPR 2016 最佳论文,后来成为被引用最多的机器学习论文之一。

它有前辈。2015 年 5 月的 Highway Networks 已经用带门控的捷径训练了上百层网络。门控思想来自 LSTM(第 2 天)。ResNet 的区别是捷径不带门、不带参数,永远畅通。事实证明,简单的版本更好用。

它的后续工作覆盖了整个领域。第 10 天的 ResNet v2 分析了捷径为什么有效,并改进了块内顺序。DenseNet、ResNeXt 在它的基础上继续改进。更重要的是,2017 年的 Transformer(第 13、14 天)每个子层都套了残差连接。今天几乎所有深网络都带残差连接。

学前准备

在原仓库怎么学

  1. 读 README.md 的目录,它依次讲退化问题、残差块、ResNet-50 和瓶颈块、实现和训练技巧。对照论文第 3、4 节读。
  2. 读 implementation.py。重点看基础块和瓶颈块里捷径怎样处理步长和通道变化。
  3. 运行 train_minimal.py,它演示普通网络的退化和捷径带来的改善。数据说明见 data/README.md,CIFAR-10 和 CIFAR-100 会自动下载。
  4. 用 visualization.py 画捷径结构图、梯度流和退化对比图。notebook.ipynb 按“退化问题、捷径、完整结构”的顺序把这些串起来。
  5. 做 exercises/ 的 5 个练习:01 搭 ResNet-18;02 去掉捷径看退化;03 分析梯度流;04 比较不同深度;05 迁移学习。答案在 exercises/solutions/。
  6. 进阶题在 assessments/exercises.md,包括梯度消失实验、残差与恒等学习对比、超深网络、捷径变体,答案在 assessments/solutions.md。

今天再看

残差连接是今天所有大语言模型的骨架。Transformer 的每一层都是 x = x + Attention(x),再 x = x + MLP(x)。可解释性研究把这条一路相加的通道叫“残差流(residual stream)”:每层从里面读信息,再把结果写回去。这个视角直接来自 ResNet 的加法结构。

ResNet 本身仍是视觉基线。ResNet-50 至今是很多论文对比的标准模型。2022 年的 ConvNeXt 把 ResNet 按 Transformer 的设计逐步改造,证明卷积网络仍有竞争力。

“为什么有效”至今有多种解释。作者的说法是残差更容易优化。后来有研究把残差网络看成许多浅网络的集成,也有研究发现捷径让损失曲面更平滑。几种解释并不互斥。

容易卡住的地方

延伸阅读