残差网络(ResNet)详解


残差网络(ResNet)详解

残差网络(Residual Network,ResNet)是一种深度神经网络架构,由何恺明等人于2015年提出,旨在解决深度网络训练中的退化问题(即随着网络加深,训练误差反而增大)。以下是其核心内容:


核心思想

  1. 退化问题的根源
  2. 传统深度网络(如VGG)在层数增加时,训练误差不降反升。这并非过拟合,而是由于梯度消失/爆炸导致优化困难。
  3. 更深的网络理论上应能拟合更简单的函数(如恒等映射),但实际训练中难以学习到这种映射。

  4. 残差学习(Residual Learning)

  5. 核心公式
    [ H(x) = F(x) + x ]
    其中,( F(x) ) 是网络需要学习的残差函数,( x ) 是输入。
  6. 跳跃连接(Skip Connection):直接将输入 ( x ) 跨层传递并与输出相加,确保梯度可通过恒等路径传播,缓解梯度消失。

关键组件

  1. 残差块(Residual Block)
  2. 基础块(Basic Block)
    包含两个3×3卷积层,用于较浅的ResNet(如ResNet-34)。
    基础块结构
  3. 瓶颈块(Bottleneck Block)
    包含1×1(降维)、3×3(特征提取)、1×1(升维)卷积层,减少计算量,用于深层ResNet(如ResNet-50/101)。
    瓶颈块结构
  4. 预激活(Pre-Activation)改进
    将Batch Normalization(BN)和ReLU放在卷积操作前,提升梯度流动(见于ResNet-v2)。

  5. 维度匹配

  6. 当跳跃连接的输入与残差输出维度不一致时(如通道数或空间尺寸变化),使用1×1卷积调整输入 ( x ) 的维度,确保可相加。

优势与创新

  1. 解决深度训练难题
  2. 支持训练超过100层的网络(如ResNet-152),首次证明极深度网络的可行性。
  3. 高效计算
  4. 瓶颈块通过降维减少参数量,平衡性能与计算开销。
  5. 灵活性
  6. 跳跃连接可泛化至其他模型(如Transformer、RNN),成为模块化设计的基石。

主要变体

  1. 经典ResNet系列
  2. ResNet-18/34(基础块)、ResNet-50/101/152(瓶颈块)。
  3. Wide ResNet
  4. 增加通道数而非深度,提升特征表达能力。
  5. ResNeXt
  6. 引入分组卷积(Grouped Convolution),增强多路径特征融合。
  7. 预激活ResNet(ResNet-v2)
  8. 调整残差块内操作顺序,进一步优化训练稳定性。

性能表现

  • ImageNet 2015冠军模型
  • ResNet-34以更少参数超越VGG-16,ResNet-152将Top-5错误率降至3.57%。
  • 广泛影响
  • 成为目标检测(如Faster R-CNN)、图像分割等任务的骨干网络。

挑战与应对

  1. 内存消耗
  2. 跳跃连接需保存输入值,训练时内存占用较高。
  3. 设计复杂性
  4. 需谨慎处理维度变化(如使用1×1卷积或池化调整输入)。

应用场景

  • 计算机视觉:图像分类、目标检测、语义分割。
  • 跨领域扩展:自然语言处理(如BERT)、强化学习(如AlphaGo)等。

总结

ResNet通过残差学习和跳跃连接,突破了深度网络的训练瓶颈,成为现代深度学习的基础架构之一。其核心思想“让网络更容易学习恒等变换”启发了后续大量研究(如DenseNet、Transformer),堪称深度学习发展史上的里程碑。