残差网络(ResNet)详解
残差网络(Residual Network,ResNet)是一种深度神经网络架构,由何恺明等人于2015年提出,旨在解决深度网络训练中的退化问题(即随着网络加深,训练误差反而增大)。以下是其核心内容:
核心思想
- 退化问题的根源
- 传统深度网络(如VGG)在层数增加时,训练误差不降反升。这并非过拟合,而是由于梯度消失/爆炸导致优化困难。
-
更深的网络理论上应能拟合更简单的函数(如恒等映射),但实际训练中难以学习到这种映射。
-
残差学习(Residual Learning)
- 核心公式:
[ H(x) = F(x) + x ]
其中,( F(x) ) 是网络需要学习的残差函数,( x ) 是输入。 - 跳跃连接(Skip Connection):直接将输入 ( x ) 跨层传递并与输出相加,确保梯度可通过恒等路径传播,缓解梯度消失。
关键组件
- 残差块(Residual Block)
- 基础块(Basic Block):
包含两个3×3卷积层,用于较浅的ResNet(如ResNet-34)。
- 瓶颈块(Bottleneck Block):
包含1×1(降维)、3×3(特征提取)、1×1(升维)卷积层,减少计算量,用于深层ResNet(如ResNet-50/101)。
-
预激活(Pre-Activation)改进:
将Batch Normalization(BN)和ReLU放在卷积操作前,提升梯度流动(见于ResNet-v2)。 -
维度匹配
- 当跳跃连接的输入与残差输出维度不一致时(如通道数或空间尺寸变化),使用1×1卷积调整输入 ( x ) 的维度,确保可相加。
优势与创新
- 解决深度训练难题
- 支持训练超过100层的网络(如ResNet-152),首次证明极深度网络的可行性。
- 高效计算
- 瓶颈块通过降维减少参数量,平衡性能与计算开销。
- 灵活性
- 跳跃连接可泛化至其他模型(如Transformer、RNN),成为模块化设计的基石。
主要变体
- 经典ResNet系列
- ResNet-18/34(基础块)、ResNet-50/101/152(瓶颈块)。
- Wide ResNet
- 增加通道数而非深度,提升特征表达能力。
- ResNeXt
- 引入分组卷积(Grouped Convolution),增强多路径特征融合。
- 预激活ResNet(ResNet-v2)
- 调整残差块内操作顺序,进一步优化训练稳定性。
性能表现
- ImageNet 2015冠军模型:
- ResNet-34以更少参数超越VGG-16,ResNet-152将Top-5错误率降至3.57%。
- 广泛影响:
- 成为目标检测(如Faster R-CNN)、图像分割等任务的骨干网络。
挑战与应对
- 内存消耗
- 跳跃连接需保存输入值,训练时内存占用较高。
- 设计复杂性
- 需谨慎处理维度变化(如使用1×1卷积或池化调整输入)。
应用场景
- 计算机视觉:图像分类、目标检测、语义分割。
- 跨领域扩展:自然语言处理(如BERT)、强化学习(如AlphaGo)等。
总结
ResNet通过残差学习和跳跃连接,突破了深度网络的训练瓶颈,成为现代深度学习的基础架构之一。其核心思想“让网络更容易学习恒等变换”启发了后续大量研究(如DenseNet、Transformer),堪称深度学习发展史上的里程碑。