核心问题:深层神经网络为什么难训练?
传统深度神经网络(如VGG)随着层数增加,会出现两大问题:
- 梯度消失/爆炸:反向传播时,梯度逐层相乘,导致深层梯度趋近于零(消失)或无限大(爆炸)。
- 性能退化:层数增加后,模型精度反而下降(非过拟合),说明深层网络难以优化。
ResNet的解决方案:跳跃连接(Skip Connection)
核心思想
让网络学习“残差”而非直接映射
假设目标映射是 ( H(x) )(复杂),改为学习 ( F(x) = H(x) - x )(残差),最终输出 ( F(x) + x )。
残差块结构(关键单元)
输入 x
│
├─→ 卷积层1 → BN → ReLU → 卷积层2 → BN → 输出 F(x) ────┐
│ ↓ (+)
└───────────────────────────────────────────────→ 相加 → ReLU → 输出 y
公式:( y = F(x) + x )
跳跃连接的四大作用
1. 解决梯度消失(核心!)
- 原理:反向传播时,梯度可通过两条路径回传:
- 路径A:卷积层(可能衰减)
- 路径B:跳跃连接(无损直达)
- 效果:即使深层梯度衰减,跳跃连接也能将梯度直接传回浅层,确保训练稳定。
2. 避免性能退化
- 学习残差比直接学习映射更简单
例如:若某层最优解是恒等映射(( H(x) = x )),传统网络需拟合 ( F(x)=x ),而ResNet只需拟合 ( F(x)=0 )(更易实现)。 - 实验证明:ResNet-152层比VGG-19层精度更高,且训练更快。
3. 特征重用与增强
- 低级特征直达深层:浅层提取的边缘、纹理等特征,通过跳跃连接直接传递给深层,避免因多次卷积而丢失。
- 特征融合:深层可同时利用浅层基础特征与深层抽象特征(如物体结构),提升模型表达能力。
4. 维度不匹配怎么办?
当输入 ( x ) 与输出 ( F(x) ) 的尺寸/通道数不一致时:
- 1×1卷积:对 ( x ) 进行升维/降维(如调整通道数),再与 ( F(x) ) 相加。
- 公式:( y = F(x) + W_x \cdot x ) (( W_x ) 是1×1卷积的权重)
为什么跳跃连接如此有效?
传统网络 | ResNet(带跳跃连接) |
---|---|
学习目标:( H(x) ) | 学习目标:( F(x) = H(x)-x ) |
梯度单向传播,易消失 | 梯度双路传播,稳定回传 |
深层难优化,性能退化 | 千层网络仍可高效训练 |
特征逐层传递,可能丢失 | 特征跨层复用,信息更完整 |
跳跃连接让网络“抄近路”:通过将输入直接叠加到输出,使深层网络能够稳定训练、避免性能退化,同时实现跨层特征融合——这是ResNet成为深度学习里程碑的核心创新。
附结构示意图:
输入 x
│
├─→[Conv→BN→ReLU→Conv→BN]→ F(x) →┐
│ ↓ (+)
└─────────────────────────────→ x → Add → ReLU → 输出 y