ResNet 论文详解
1. 核心问题:深度网络的"退化"问题
在ResNet出现之前,主流的认知是:网络越深,表达能力越强,性能应该越好。但实践发现,当网络深度增加到一定程度时(例如超过20层),会遇到两个主要问题:
- 梯度消失/梯度爆炸 :这个问题通过归一化初始化 和 Batch Normalization 等技术已经得到了很大程度的解决。
- 退化问题 :这是ResNet要解决的核心问题。即随着网络深度的增加,准确率会饱和然后迅速下降。
注意: 这种下降不是由过拟合引起的,因为即使在训练集上,深层的模型误差也比浅层模型更高。如下图所示:
- 现象:一个56层的深层网络,其训练误差和测试误差都比一个20层的浅层网络要高。
- 核心矛盾 :一个极深的网络,至少不应该比它浅层的子网络表现更差。因为我们可以将深层网络的后面的层设置为恒等映射,这样它的性能就应该至少和浅层网络一样。但实验表明,现有的优化器很难学习到这种恒等映射。
2. 解决方案:残差学习框架
ResNet的作者提出了一个非常巧妙的思路:既然直接学习一个恒等映射很困难,那我们就不直接学习底层映射,而是学习它与输入之间的残差。
2.1 残差块
这是ResNet的核心构建模块。我们假设我们希望底层网络学习的潜在映射为 H(x)H (x)。
- 传统网络 :直接学习 H(x)H (x)。
- 残差网络 :定义残差函数 F(x)=H(x)−xF (x )=H (x )−x 。那么,原本需要学习的映射就变成了 H(x)=F(x)+xH (x )=F (x )+x。
上图的解读:
- 左侧:一个传统的、直接映射的网络结构。
- 右侧 :一个残差块。其核心是那条从输入 xx 直接绕到输出端的 "捷径连接"。
- 这个捷径连接执行了一个简单的 "恒等映射" ,并将其输出与通过权重层学习到的 "残差" F(x)F (x) 相加。
- 最终整个块的输出是 y=F(x,{Wi})+xy =F (x ,{W**i })+x。
- 这里的加法操作要求 F(x)F (x ) 的维度必须与 xx 的维度相同。如果维度不同(例如下采样时),可以通过一个线性投影 WsW**s 来匹配维度,即 y=F(x,{Wi})+Wsxy =F (x ,{W**i })+Wsx。
2.2 为什么有效?
- 缓解梯度消失:梯度在反向传播时,除了像传统网络一样流过权重层,还可以通过捷径连接"无损"地传递回去。这相当于为梯度提供了一条"高速公路",使得深层网络的梯度信号依然很强,训练变得更加容易。
- 简化学习目标 :学习残差 F(x)F (x ) 通常比学习完整的映射 H(x)H (x ) 更容易。例如,如果最优的 H(x)H (x ) 就是一个恒等映射,那么将残差 F(x)F (x) 学习为 0 比通过一堆非线性层来拟合恒等映射要容易得多。网络只需要在需要的时候微调残差即可。
- 隐式的模型集成:有理论分析表明,ResNet的行为类似于许多较浅网络的集合,这提高了其稳定性和性能。
3. 网络架构
论文中提出了几种不同深度的ResNet变体,最著名的是ResNet-34和ResNet-50/101/152。
3.1 构建规则
- 网络主体由一系列"阶段"组成,每个阶段包含多个残差块。
- 在每个阶段的开始,通过使用步长为2的卷积来进行下采样,特征图尺寸减半,通道数翻倍。
- 在一个阶段内部,所有残差块的特征图尺寸和通道数保持不变。
3.2 两种主要的残差块
- BasicBlock(用于较浅的网络如ResNet-18/34) :
- 由两个3x3卷积堆叠而成。
结构: Conv3x3 -> BN -> ReLU -> Conv3x3 -> BN- 最后再加上捷径连接和ReLU激活。
- Bottleneck(用于更深的网络如ResNet-50/101/152) :
- 为了解决深层网络巨大的计算量,使用了"瓶颈"设计。
结构: 1x1卷积(降维) -> 3x3卷积 -> 1x1卷积(升维)- 这种设计先用1x1卷积将256维通道压缩到64维,然后进行3x3卷积,最后再用1x1卷积恢复回256维。这样在保持模型表达能力的同时,大大减少了3x3卷积的计算量。
4. 实验与结果
论文在ImageNet 2012分类数据集和COCO目标检测数据集上进行了广泛的实验。
- ImageNet分类 :
- ResNet-34相比之前的VGG-19和GoogLeNet,错误率显著降低。
- ResNet-152取得了3.57%的top-5错误率,赢得了ILSVRC 2015分类任务的冠军,并且比第二名有巨大优势。
- COCO目标检测 :
- 将ResNet作为Faster R-CNN的主干网络,在COCO检测数据集上实现了28%的相对提升,证明了其强大的特征提取能力,可以很好地迁移到其他任务。
5. 影响与意义
- 突破了深度瓶颈:ResNet使得训练数百甚至上千层的网络成为现实(后续出现了ResNet-1000, ResNet-1202等),极大地推动了深度学习的发展。
- 成为通用主干网络 :ResNet及其变体成为了计算机视觉几乎所有领域(分类、检测、分割、图像描述等)的标准主干网络,其设计思想被广泛借鉴。
- 启发了后续研究:其"捷径连接"的思想催生了许多新的网络结构,如DenseNet、Highway Network等,并直接影响了如Transformer中的残差连接,成为现代深度学习架构的标配。
- 简单而有效:ResNet结构非常简洁,易于实现和扩展,这也是它能迅速普及的重要原因。
总结
ResNet的核心贡献在于通过引入残差学习框架 和捷径连接 ,巧妙地解决了极深神经网络的退化问题。它不是一个复杂的理论突破,而是一个极其优雅和有效的工程解决方案,其"大道至简"的思想深刻地影响了整个领域。直到今天,基于ResNet的架构仍然是许多视觉任务的强大基线。