5. 理解 ResNet

什么是 ResNet(Residual Network)?

ResNet(残差网络)是何恺明(Kaiming He)等人在 2015 年提出的一种深度神经网络结构,论文标题为《Deep Residual Learning for Image Recognition》。它最大的贡献是提出了 Residual Connection(残差连接)Skip Connection(跳跃连接),解决了深层神经网络难以训练的问题。该工作获得了 ILSVRC 2015 图像分类冠军,并成为现代深度学习最重要的基础架构之一。

原论文:Deep Residual Learning for Image Recognition (CVPR 2016)


ResNet 出现之前的问题

2012 年 AlexNet 成功后,研究者发现:

网络越深,效果似乎越好。

于是出现了:

大家开始疯狂加深网络。

理论上:

20层网络
   ↓
50层网络
   ↓
100层网络
   ↓
200层网络

应该越来越强。

然而实验发现:

20层
训练误差:低

56层
训练误差:反而更高

注意:

这不是过拟合。

因为:

训练集都学不好

说明优化过程出了问题。论文称这种现象为:

Degradation Problem(退化问题)。(cv-foundation.org)


一个非常关键的思考

假设已经有一个训练得很好的网络:

输入
 ↓
若干层
 ↓
输出

现在我们额外加两层:

输入
 ↓
若干层
 ↓
新加两层
 ↓
输出

按理说:

新增两层什么都不干(学习恒等映射):

y = x

性能至少不应该变差。

因为:

新网络 = 旧网络 + 两层无作用层

理论上:

更深网络 ≥ 浅网络

但实际上训练时做不到。

问题就在于:

神经网络很难自动学出

y = x

这个恒等映射。


ResNet 的核心思想

既然直接学:

H(x)

很困难。

那就换个目标:

学习:

F(x)=H(x)x

于是:

H(x)=F(x)+x

这就叫:

Residual Learning(残差学习)


通俗理解

假设你是老师。

要求学生把答案写出来:

1000

学生可能很难直接写。

但如果告诉学生:

基础答案 = 998

你只需要补多少?

学生立刻知道:

+2

这就是残差。

ResNet的思想:

不要直接学最终答案

而是学:
距离答案还差多少

残差块(Residual Block)

普通CNN:

flowchart LR 
A[x] --> B[Conv] 
B --> C[ReLU] 
C --> D[Conv] 
D --> E[输出]

ResNet:

Pasted image 20260625141457.png

数学表达:

y=F(x)+x

其中:

F(x)

是卷积层学到的内容。

x

直接绕过中间网络。

这条路就叫:

Shortcut
Skip Connection
Identity Connection

都是一个东西。(vitalab.github.io)


为什么这么做有效?

假设某一层根本没用。

理想情况:

F(x)=0

于是:

y=x

网络自动退化成恒等映射。

这意味着:

增加网络深度
不会破坏已有能力

因此:

浅层网络会的
深层网络一定能做到

优化难度大大降低。


从梯度角度理解

传统网络:

Loss
 ↓
Layer100
 ↓
Layer99
 ↓
...
 ↓
Layer1

反向传播时:

Lx

需要经过上百层连乘。

容易出现:

梯度消失
梯度爆炸

ResNet:

因为有:

x              输出
 └────────────►

捷径存在。

梯度可以直接传播:

Loss
 ↓
Layer100
 ↓
Layer99
 ↓
 ...
 ↓
Shortcut
 ↓
Layer1

因此:

梯度流动更顺畅

训练超深网络成为可能。


ResNet 的网络结构

论文提出多个版本:

模型 层数
ResNet18 18
ResNet34 34
ResNet50 50
ResNet101 101
ResNet152 152

其中最经典的是:

ResNet50

今天依然广泛使用。(vitalab.github.io)


ResNet50 的 Bottleneck 结构

浅层网络使用:

3×3
3×3

卷积。

深层网络为了节省计算:

1×1
 ↓
3×3
 ↓
1×1

结构:

输入
 ↓
1×1 降维
 ↓
3×3 特征提取
 ↓
1×1 升维
 ↓
Shortcut相加
 ↓
输出

称为:

Bottleneck Block(瓶颈块)。(vitalab.github.io)


为什么 ResNet 如此重要?

在今天的大模型时代,很多结构都能找到 ResNet 的影子:

Transformer

x
 ↓
Attention
 ↓
+x

即:

x+Attention(x)
x
 ↓
MLP
 ↓
+x

即:

x+MLP(x)

这本质上就是:

Residual Connection

Llama:

x = x + Attention(x)

x = x + MLP(x)

GPT:

x = x + Attention(x)

x = x + FFN(x)

全部继承了 ResNet 的思想。

可以说:

Transformer 的残差连接直接来源于 ResNet。残差连接已经成为现代深度学习的标准配置。


用一句话理解 ResNet

如果只记住一句话:

ResNet 的核心思想就是:不要直接学习目标函数 H(x),而是学习“还差多少”的残差 F(x)=H(x)x,再通过 Shortcut 将输入直接加回来,从而让超深网络能够稳定训练。

公式:

y=F(x)+x

这也是后来 Transformer、BERT、GPT、Llama 等几乎所有现代大模型都保留残差连接的根本原因。