残差网络(ResNet)

技术

残差网络(ResNet)

用一个”捷径连接”解决了深度神经网络的退化问题,让网络从几十层扩展到上千层,是深度学习史上最重要的架构突破之一。


一句话背景

2015 年,何凯明在微软亚洲研究院提出了 ResNet,以 152 层的深度碾压了所有对手,赢得了 ImageNet 冠军,错误率首次低于人类水平。更关键的是,他揭开了一个反直觉的真相:网络不是越深越好,但加上残差连接之后,越深确实越好。


问题:网络越深,反而越差?

在 ResNet 之前,深度学习有一个朴素信念:网络越深,能力越强。毕竟多几层就多了非线性变换,应该能拟合更复杂的函数。

但实验给出了一个让人困惑的结果:当你把网络从 20 层加到 56 层时,训练误差反而升高了。这不是过拟合(过拟合是训练误差低、测试误差高),而是网络连训练数据都学不好了。

这就是”退化问题”(degradation problem)。56 层网络的表达能力一定不会比 20 层差——毕竟你完全可以把多出来的层学成恒等映射(identity mapping),让它等效于 20 层网络。但问题是,普通的网络很难学到恒等映射。让一堆非线性层叠加后输出和输入一模一样,这件事对优化器来说太困难了。

何凯明后来在演讲中打过一个比方:想象你要教一个人从 A 点走到 B 点。如果 B 就是 A 本身(恒等映射),那最好的策略是”什么都不做”。但如果你告诉这个人”请通过 36 个复杂的弯路回到原点”,他大概率走偏。优化器面对的就是同样的困境。


解决方案:不是学 H(x),而是学 F(x) = H(x) - x

何凯明的核心洞察非常简洁:

既然恒等映射很难学,那我就不让你学了。我直接把输入 x 短路送到输出端,网络只需要学习”残差” F(x) = H(x) - x。

用数学写出来,一个残差块(Residual Block)做的是:

1
y = F(x) + x

其中 F(x) 是网络需要学习的残差函数,x 是直接从输入”跳”过来的。

如果最优解就是恒等映射(H(x) = x),那网络只需要让 F(x) = 0——把权重推向零,这比学一堆非线性组合输出恒等要容易得多。

如果最优解不是恒等映射呢?也没问题,F(x) 会学到需要”修正”的部分。

这就是”残差学习”(residual learning)。它不改变网络的表达能力,但极大地降低了优化的难度。


捷径连接(Skip Connection)

实现上,残差块非常简单。一个两层的残差块长这样:

1
2
3
4
5
输入 x

├──→ [卷积 → BN → ReLU → 卷积 → BN] ──→ 加上(+) x ──→ ReLU ──→ 输出
│ ↑
└──────────────── 跳跃连接 (shortcut) ───────────────────┘

那条从输入直接跳到加法节点的线,就是”捷径连接”(也叫跳跃连接,skip connection)。

由于这条线的存在,梯度在反向传播时可以直接流过捷径,不再需要逐层乘以权重。这就从根本上缓解了梯度消失问题。


何凯明的发现故事

起点:一个令人困惑的实验结果

2015 年初,何凯明在微软亚洲研究院(MSRA)做实验时,遇到了前面说的退化问题。他和同事张祥雨、任少卿、孙剑一起,系统地测试了不同深度的网络。

他们观察到:20 层网络收敛后,56 层网络不仅收敛更慢,最终训练误差也更高。这个结果不符合直觉——56 层网络的解空间包含了 20 层网络的解空间,理论上不应该更差。

关键洞察:来自一个”荒谬”的实验

何凯明后来在一次分享中提到,他的灵感来自一个看似荒谬的想法:

如果我把一个已经训练好的浅层网络,直接在后面堆几层恒等映射,理论上应该得到一个等效的深层网络。但如果你真的用标准方式训练这个深层网络,它做不到。

这说明问题不在表达能力,而在优化。优化器无法让非线性层逼近恒等映射。

于是他想:如果我人工提供一个恒等映射的通道(捷径连接),让网络只需要学习与恒等的偏差,会怎样?

实验验证:立竿见影

他们实现了残差块,做了一个对比实验:

网络 层数 Top-5 错误率
VGGNet 19 层 7.32%
普通网络 34 层 10.02%(退化了!)
ResNet 34 层 5.71%
ResNet 152 层 4.49%
人类标注者 ~5.1%

152 层的 ResNet,Top-5 错误率 3.57%,首次低于人类水平

一个有趣的设计选择:1×1 卷积

为了让残差块内部的维度匹配,何凯明使用了 1×1 卷积来做降维和升维。一个完整的残差块实际上是三层:

  1. 1×1 卷积:降维(如 256 → 64)
  2. 3×3 卷积:在该维度上做卷积运算
  3. 1×1 卷积:升维(如 64 → 256)

这种”瓶颈结构”(bottleneck)在不增加太多计算量的前提下让网络可以更深。152 层的 ResNet 用的就是这种结构。

论文投稿的小插曲

据何凯明回忆,ResNet 的论文最初在投稿时审稿人提出了不少质疑——有人认为”加一条捷径连线”太简单了,不像是能产生根本性突破的方法。但实验结果无可辩驳:ResNet 不仅在 ImageNet 上碾压了所有对手,而且这种设计在迁移到其他数据集时同样有效。

最终,这篇论文获得了 CVPR 2016 的最佳论文奖。至今(2026 年),ResNet 的论文引用量已超过 20 万次,是计算机视觉领域引用最多的论文之一。


为什么残差连接如此有效?

学术界对 ResNet 成功的原因有几种解释,都各有道理:

  1. 梯度畅通:捷径连接让梯度可以跳过中间层直接回传,缓解了梯度消失
  2. 优化平滑:残差学习把优化目标从”从零开始学”变成了”在恒等映射附近微调”,损失函数的景观更平滑
  3. 隐式集成:有研究表明,ResNet 并不像一个深层网络那样工作,而是更像很多浅层网络的集成(ensemble),每条从输入到输出的路径长度不同
  4. 特征复用:捷径连接让浅层提取的低级特征(边缘、纹理)可以直接传递到深层,不必每层重新学习

这几种解释并不矛盾,很可能共同作用。


残差连接的深远影响

ResNet 的思想远远超出了图像分类:

  • Transformer:注意力机制中的残差连接是 GPT、BERT 等大语言模型的标配。没有残差连接,Transformer 无法训练到深层。
  • 目标检测:Faster R-CNN、YOLO 等检测网络都使用 ResNet 作为骨干网络。
  • 生成模型:扩散模型(Diffusion Models,如 DALL·E、Stable Diffusion)的 U-Net 中大量使用残差块。
  • 通用架构:残差连接已成为几乎所有深度网络架构的标准组件,就像 Dropout 和 BatchNorm 一样。

何凯明后来在 Facebook AI Research(FAIR)继续推动了多项重要工作,包括 Mask R-CNN 和后来引起广泛讨论的纯 MLP 架构(ResMLP),但 ResNet 始终是他最具影响力的贡献。


相关页面

  • [[glossary]] — 术语表
京ICP备2026025110号-1