ResNet 论文重点整理(He et al., 2015/2016)

目标

这篇论文最重要、最可迁移的思想与结论:为什么残差能让网络变深、论文用什么证据证明、以及今天怎么用。
不展开比赛工程细节/多模型 ensemble 之类的“堆分手段”。

论文:Deep Residual Learning for Image Recognition(CVPR 2016)
PDF:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf


目录


1 论文要解决的问题:Degradation 不是过拟合

论文指出一个关键现象:网络加深到一定程度后,训练误差反而更高,也就是“更深但更难优化”。这叫 degradation problem(退化问题)
重点:这不是“过拟合”(不是验证误差变坏,而是训练误差也变坏),说明深网优化本身出问题。

直觉矛盾

理论上,更深的模型至少可以“复制”浅模型:多出来的层学恒等映射即可。
但实际 plain net(无残差)会退化,说明“学恒等映射并不容易”。


2 核心想法:把学习目标改写成残差

ResNet 的关键不是让网络变深,而是把“要学的函数”换一种更容易优化的写法:

  • 目标映射:(H(x))
  • 改成学残差:(F(x) := H(x) - x)
  • 输出:(H(x) = F(x) + x)

直觉:如果最优解接近恒等映射((H(x)\approx x)),那只要把 (F(x)) 推到 0 就行;
比起直接让多层网络去拟合 (H(x)=x),学“接近 0 的残差”更容易


3 残差块的数学形式与两种 shortcut

残差块的基本形式:

3.1 恒等 shortcut(最常用)

  • shortcut 是恒等映射(直接相加)
  • 额外参数≈0,计算开销极小

3.2 投影 shortcut(用于维度对齐)

当通道数/空间分辨率变化导致维度不匹配时,用投影:

  • (W_s) 常用 1×1 卷积(带 stride)做对齐
  • 论文强调:大多数情况用恒等 shortcut,只有需要对齐时才用投影(更省、更稳)

你可以把 residual block 看成:

“主分支学新东西(F),捷径分支保底把 x 直接送过去”


4 架构重点:basic block 与 bottleneck block

ResNet 的“可扩展性”来自两个模块:

4.1 Basic Block(ResNet-18 / ResNet-34)

  • 块内是 2 个 3×3 卷积
  • 形状:3×3 -> 3×3,然后 + shortcut

适合中等深度,结构直观。

4.2 Bottleneck Block(ResNet-50 / 101 / 152)

为更深网络控制计算量,提出 bottleneck:

  • 1×1(降维) → 3×3(主计算) → 1×1(升维)
  • 核心作用:把昂贵的 3×3 放在“更小通道维度”上做,成本更低

bottleneck 的关键理解

1×1 不是“可有可无”,它是让深到 50/101/152 层还能计算得起、训得动的关键结构设计。


5 训练配方:论文里明确写的“可迁移 recipe”

ResNet v1(本文版本)的常见训练写法:Conv BN ReLU

论文中明确提到的实践要点(抽象成 recipe):

  • 每个卷积后用 BN
  • ImageNet:SGD + momentum(0.9)+ weight decay(1e-4)
  • 初始学习率较大(典型 0.1),验证停滞就 ×0.1 分段下降
  • 不使用 dropout(BN 带来一定正则化效果)

今天迁移时

你可以把它看成 “AlexNet 之后的现代化训练范式”:
BN + 更强优化策略 让深网更稳。


6 关键证据:它真的解决了“越深越难训”

论文用一系列对照实验证明:

6.1 Plain 更深会退化,ResNet 更深会变好

  • 同样是 18 vs 34 层:
    • plain-34 训练/验证都会更差(退化)
    • residual-34 明显优于 residual-18(深度收益回来了)

这证明:残差结构在优化层面改变了“更深=更难训”的规律。

6.2 深到 152 层仍能继续提升

ResNet-50 / 101 / 152 随深度增加仍能得到更好的 ImageNet 结果,说明残差让网络深度可扩展。

结论

ResNet 把“加深”从玄学变成工程上稳定可复用的做法。


7 今天最值得带走的重点(TL;DR)

  1. 残差连接不是装饰,而是优化机制:让网络更像“在恒等映射附近学扰动”。
  2. identity shortcut 是首选:便宜、稳定;维度不匹配才用投影对齐。
  3. bottleneck 是深网络的标准模块:1×1-3×3-1×1 才能把 50+ 层做得经济。
  4. ResNet 的成功是“结构 + 训练范式(BN + SGD recipe)”的组合,而不是单点技巧。
  5. 你看现代模型(CNN/Transformer)到处都是 skip connection,本质上都在继承 ResNet 的“可优化深度”思想。

8 速记卡

  • 问题:plain net 加深后训练误差变高(degradation),不是过拟合
  • 公式:(y=F(x)+x),不匹配时 (y=F(x)+W_sx)
  • 模块
    • 18/34:3×3 + 3×3
    • 50/101/152:1×1 + 3×3 + 1×1(bottleneck)
  • 经验:优先恒等 shortcut;需要对齐才投影
  • 结论:残差连接让“更深=更好”在大规模视觉任务上成为可复现范式