一、什么是 ResNet?
ResNet(Residual Network,残差网络)是由何恺明等人在 2015 年提出的深度卷积神经网络,核心贡献是“残差连接”,一举解决了“网络越深,效果反而越差”的退化问题。
1. 背景问题
在 ResNet 之前,人们直觉认为:增加网络层数(加深)应该能提升性能,因为更多层可以学到更复杂的特征。
但实验发现:网络超过一定深度(比如 20 层)时,训练误差和测试误差反而上升——这不是过拟合,而是优化困难:梯度消失/爆炸,以及更深层更难拟合恒等映射(即“让后面几层什么都不做”都很难学)。
2. 核心思想:残差学习
不直接学习想要的底层映射 ( H(x) ),而是学习 残差:
[
F(x) = H(x) - x
]
那么原始映射就变成:
[
H(x) = F(x) + x
]
这在网络中通过 “跳跃连接”(skip connection / shortcut)实现:把输入 ( x ) 直接加到输出上(逐元素相加)。
通俗理解:
- 普通网络:要求这一层把 ( x ) 变成完美的 ( H(x) ),很难。
- 残差网络:这一层只需要学习“相比输入 ( x ),需要调整多少”。如果最优解就是 ( x ) 本身(即该层什么都不用做),那么只需让 ( F(x) \to 0 ),这远比学习恒等映射容易得多。
3. 效果
- 可以轻松训练上百层甚至上千层的网络(如 ResNet-152,ResNet-1000)。
- 显著降低梯度消失问题(梯度能通过捷径直接回传)。
- 2015 ILSVRC 冠军,错误率降至 3.57%(超越人类水平)。
4. 一个简单的残差块结构(示意图)
输入 x
|
v
[卷积层1 → BN → ReLU → 卷积层2 → BN]
| |
| v
└──────────────→ (+) → ReLU → 输出 H(x)=F(x)+x
二、与之类似的架构(同思路或受启发的重要网络)
受 ResNet 启发或为解决类似问题而生的网络有很多,按核心机制可以分为几类:
| 网络名称 | 核心思想 | 与 ResNet 的联系 / 区别 |
|---|---|---|
| Highway Networks (2015) | 引入“门控”机制,学习保留多少输入、变换多少输出:H(x) = g(x) * x + (1-g(x)) * F(x) |
ResNet 的前身。ResNet 可视为 Highway 去掉门控(默认保留输入的一半?不,实际上是 g=1 的特例)。但 Highway 因门控参数增多,效果不如简洁的 ResNet。 |
| DenseNet (2016) | 每一层与前面所有层直接连接(密集连接)。某层的输入 = 所有之前层的输出拼接。 | 更强度的跨层连接。参数效率更高(每层只需很少的特征图),但内存占用大。可视为 ResNet 的“全连接版”。 |
| ResNeXt (2016) | 在残差块内部采用分组卷积(多个平行路径,即“基数”维度)。 | 保留残差连接,改变内部结构:从“深而窄”变为“宽而稀疏”。效果优于等参数量下的 ResNet。 |
| Wide ResNet (2016) | 减少层数,增加每一层的宽度(通道数)。 | 证明“宽度”同样重要,训练更快,参数效率更高。是一种 ResNet 的变体。 |
| Pre-activation ResNet (ResNetV2, 2016) | 将 BN 和 ReLU 移到卷积之前(预激活)。 | 改进残差块的顺序,使梯度流更顺畅,更易训练且正则化效果更好。 |
| Inception (GoogleNet) 家族(2014-2016) | 在同一层使用多个不同尺寸的卷积核,然后拼接。 | 早于 ResNet,但后续的 Inception-ResNet 把残差连接引入 Inception 块,形成混合架构。 |
| SENet (2017) | 在残差块中加入通道注意力:学习每个通道的权重,放大重要特征。 | 不是 ResNet 的直接变体,但常与残差结构结合(如 SE-ResNet)。 |
| EfficientNet (2019) | 同时缩放深度、宽度、输入分辨率。 | 基线网络常基于 MnasNet,但也可结合移动翻转残差块(MBConv)。不直接是 ResNet 替代,但大量使用残差思想。 |
| Transformer 中的残差连接 (2017) | 在自注意力层和前馈网络后都加 Add & Norm 结构。 |
直接继承了 ResNet 的残差连接思想,成为大模型(GPT、BERT)的基础组件。 |
简短总结类似架构的共同特征:
- 都试图解决深度网络的训练难度(梯度消失/爆炸、退化问题)。
- 都依赖某种 跨层连接(捷径、跳跃、密集)。
- ResNet 是最简洁、影响力最大的开端,后续工作在以下方向上改进:
- 连接模式(DenseNet、Highway)
- 块内结构(ResNeXt、Wide、Pre-activation)
- 融入注意力(SENet、CBAM)
- 跨领域应用(Transformer 的残差)
三、一句话概括
ResNet 通过“残差连接”让深度网络变得可训练,解决了退化问题。
类似的架构 包括 DenseNet(全密集连接)、ResNeXt(分组卷积)、Highway(门控)、Pre-activation ResNet(预激活),以及几乎所有现代深度网络(包括 Transformer)都继承了残差连接的思想。
如果你对其中某个具体网络(比如 DenseNet 的密集连接如何工作?或 Transformer 里的残差如何用?)感兴趣,我可以进一步展开。
评论
请登录后发表评论
暂无评论,快来发表第一条评论吧!