ResNet(残差网络)提出的 残差(Residual)是深度学习中的一种关键创新,旨在解决深层神经网络训练中的梯度消失/爆炸和退化问题(随着网络加深,准确率不升反降)。其核心思想是通过引入“跳跃连接”(Shortcut Connection),让网络直接学习输入与输出之间的残差(即变化部分),而非直接学习完整的输出。
1. 残差的核心定义
在ResNet中,残差指的是:
残差= 期望输出 - 输入
假设输入为 x ,某一层的期望输出为 H(x) ,则网络改为学习残差 F(x) = H(x) - x,而原始输出可通过 H(x) = F(x) + x 重构。
传统网络:直接拟合 H(x)(复杂映射)。
ResNet:拟合残差 F(x) = H(x) - x (简单映射,通常 F(x) 接近零)。
2. 残差块(Residual Block)的结构
ResNet通过残差块实现这一思想,其结构如下:
y = F(x, Wi) + x
x为输入,F(x, Wi)是需要学习的残差函数(如堆叠的卷积层)。 + x 是跳跃连接(恒等映射,不引入额外参数)。 y :输出。
若输入输出维度不同,需对 x 线性投影(如1x1卷积):
y = F(x, Wi) + Ws
3. 为什么残差学习有效?
缓解梯度消失:跳跃连接提供了梯度传播的捷径,使深层网络更容易训练。
简化优化问题:学习残差 F(x) 比直接学习 H(x) 更容易(尤其是当 H(x) 约等于x 时,残差趋近零)。
避免网络退化:即使增加的层无效,残差结构也能退化为恒等映射F(x) = 0 ,保持性能不下降。
4. 实际应用
经典残差块:包含两个3x3卷积层(ResNet-34)。
瓶颈结构:用1x1卷积降维/升维(ResNet-50/101等更深的网络)。
变体:Pre-activation ResNet(将BN和ReLU提到卷积前)。
5. 直观理解
假设目标是让网络学习“将输入加1”:
传统网络需精确拟合 H(x) = x + 1 。
ResNet只需拟合 F(x) = 1 ,而 H(x) = F(x) + x = 1 + x。
当网络加深时,冗余层可以学习F(x) = 0,避免破坏已有功能。
总结
ResNet的残差设计通过跳跃连接将深层网络的训练转化为微小扰动(残差)的学习,极大提升了网络的深度和性能。这一思想不仅影响了图像分类(如ResNeXt、EfficientNet),还广泛应用于目标检测(Faster R-CNN)、语义分割(U-Net++)等领域。