背景
在使用VGG块或NiN块等的神经网络中,当深度超过某个点时,模型的性能会急剧下降,或者说是退化(degradation).
当网络结构过深时,会出现以下问题
- 梯度消失或梯度爆炸:以梯度消失为例,反向传播时,没向前传播一层就会乘一个小于1的数,导致梯度越来越小。对于这个问题,现在已经有诸多解决方案,如BatchNorm等.
- 退化问题: ResNet主要解决的是这个问题.
残差结构

x_{l+1} = H(x_l) = F(x_l) + x_l
也即
x_L = x_l + \sum_{i=l}^{L}F(x_i)\\
\frac{\partial{loss}}{\partial{x_l}} = \frac{\partial{loss}}{\partial{x_L}}\frac{\partial{x_L}}{\partial{x_l}}=\frac{\partial{loss}}{\partial{x_L}}(1 + \frac{\partial{\sum_{i=1}^{L-1}F(x_i)}}{\partial{x_l}})
L为深层网络 l为浅层网络
这极大解决了梯度消失的问题
同时更好的保留了输入信息,解决了退化问题