📚 目录索引

ResNet Architecture

深度残差网络 (Residual Network) - 突破深度的极限

CVPR 2016 最佳论文 · 深度学习里程碑

1. 核心问题:深度网络的训练难题

在 ResNet 出现之前,仅仅通过增加网络深度(层数)并不能无限提升性能。实验表明,当网络达到一定深度后,性能反而会下降。

主要原因:

  • 梯度消失/爆炸:深层网络反向传播中梯度逐层累积或衰减,导致浅层无法有效更新。虽然 BN (Batch Normalization) 缓解了这个问题,但并非全部解决方案。
  • 网络退化 (Degradation):随着深度增加,准确率达到饱和然后迅速退化。这并不是过拟合(因为训练误差也变高了),而是优化变得更加困难。
💡 关键观察: 理论上,更深的网络应该至少不会比浅层网络差(可以将额外层学习为恒等映射)。但实际上,普通网络很难学习到这种恒等映射。
网络深度 性能 理想性能 峰值 普通网络 退化缺口
图1: 深度网络性能曲线对比

2. 核心思想:残差学习与恒等捷径

ResNet 的核心洞见是:与其让网络直接学习潜在的映射 H(x),不如让它学习残差映射 F(x) = H(x) - x

通过引入恒等捷径连接 (Shortcut Connection),原始输入 x 直接传到后面与残差块的输出相加。这样:

  • 如果最优映射是恒等映射(Identity),网络只需将 residual weights 学习为 0,这比拟合恒等映射要容易得多。
  • 捷径创造了梯度的"高速公路",让信息能无损流通,有效缓解梯度消失问题。
  • 数学表达:H(x) = F(x) + x,其中 F(x) 是要学习的残差函数。
✨ 核心创新: Skip Connection 不引入额外参数,也几乎不增加计算复杂度,但却极大提升了网络的可训练性。这是“少即是多”的经典案例。
x Weight Layer ReLU Weight Layer F(x) Identity Shortcut (恒等连接) + F(x) + x ReLU
图2: 残差块 (Residual Block) 结构

3. 核心结构:残差块类型

ResNet 使用两种不同类型的块,分别针对浅层网络(如 ResNet-34)和深层网络(如 ResNet-50/101/152)。

基本残差块 (Basic) 瓶颈残差块 (Bottleneck) 3x3, 64 3x3, 64 + 1x1, 64 3x3, 64 1x1, 256 + Bottleneck 结构用于减少参数量和计算量
图3: 两种残差块对比

4. 网络架构:堆叠的艺术

ResNet 具有清晰的模块化结构。通常包括 4 个主要阶段 (Stage),每个阶段的特征图大小减半,通道数翻倍。

  • Stem Layer: 初始的 7x7 卷积和最大池化。
  • Stages 1-4: 堆叠多个残差块。阶段之间通过步长为 2 的卷积进行下采样 (Downsampling)。
  • Head: 全局平均池化 (GAP) + 全连接层 (FC) + Softmax。

常见 ResNet 配置:

模型 层数 块类型 Stage1 Stage2 Stage3 Stage4 参数量
ResNet-18 18 Basic 2 2 2 2 11.7M
ResNet-34 34 Basic 3 4 6 3 21.8M
ResNet-50 50 Bottleneck 3 4 6 3 25.6M
ResNet-101 101 Bottleneck 3 4 23 3 44.5M
ResNet-152 152 Bottleneck 3 8 36 3 60.2M
Input Image Conv 7x7, /2, Pool Stage 1 X blocks Output: 56x56 Stage 2 X blocks (Stride 2) Output: 28x28 Stage 3 X blocks (Stride 2) Output: 14x14 Stage 4 X blocks (Stride 2) Output: 7x7 Avg Pool + FC Layers Increasing

5. 变体与扩展

ResNet 的成功启发了大量变体和扩展,进一步推动了深度学习的发展。

5.1 主流变体

5.2 跨领域应用

6. 核心优势与影响

ResNet 的出现是所谓的 "All you need is skip connection" 的开始。它带来的改变是革命性的:

  • 更易优化:如下图所示,ResNet 的训练误差能持续下降到极低值,而普通网络会“卡住”。
  • 超深网络:从 AlexNet 的 8 层,VGG 的 19 层,一下子跃升到 ResNet 的 152 层甚至 1001 层。
  • 通用性:其变体 (ResNeXt, WideResNet) 至今仍是各类视觉任务的主干网络 (Backbone)。
迭代次数 (Iterations) 训练误差 % Plain-34 ResNet-34 性能显著提升
图5: ResNet vs PlainNet 训练误差对比