「论文阅读」ResNet 深度残差网络为什么能训得动

2026-05-30   论文深度学习
ResNet 论文中的残差模块示意图

ResNet 论文中的残差模块示意图

问题背景:深层网络的退化

2015 年之前,大家普遍认为网络越深效果越好,但实验发现深层网络的训练误差比浅层更高——注意这不是过拟合,训练集上也更差。这个现象叫"退化问题"(degradation problem)。

直觉上,56 层网络至少可以在前 20 层学一个有效映射,后 36 层学成恒等映射,不应该比 20 层更差。但优化器(SGD)就是做不到这件事——学恒等映射比想象中难。

残差连接的思路

何恺明他们的解法很简单:与其让网络直接学目标映射 H(x),不如让它学残差 F(x) = H(x) - x,然后加回输入:

output = F(x, W) + x

如果最优解就是恒等映射,那 F(x) 只需要学成全零,这比让网络直接学恒等映射容易得多。这个"shortcut connection"不引入额外参数,计算开销几乎为零。

ResNet-34 的完整架构(论文 Figure 3)

ResNet-34 的完整架构(论文 Figure 3)

梯度流的角度

残差连接为什么有效,还有一个梯度流的解释。反向传播时,损失对输入 x 的梯度是:

∂L/∂x = ∂L/∂output · (∂F/∂x + 1)

多出来的那个"1"意味着梯度可以不经过 F(x) 直接传回去。即使 F 的梯度很小(梯度消失),整体梯度也不会消失。这是残差网络能训练几百层的根本原因。

ResNet 论文精读 by 李沐(B站)

Bottleneck 设计

ResNet-50/101/152 用了 Bottleneck 模块而不是普通的两层卷积:先用 1×1 卷积降维,再 3×3 卷积,最后 1×1 升回来。这样参数量和计算量比两层 3×3 更少,但可以堆更深。

消融实验里的关键结论

ResNet 在 ImageNet 上的结果对比(论文 Table 4)

ResNet 在 ImageNet 上的结果对比(论文 Table 4)

为什么它还重要

残差连接现在已经无处不在:Transformer 的每个子层后面都有一个 Add & Norm,本质上就是残差;EfficientNet、DenseNet、U-Net 的跳连接都有残差的影子。这篇论文发布至今引用量超过 20 万,是深度学习历史上被引次数最多的论文之一。