ResNet是由2015年的论文:Deep Residual Learning for Image Recognition提出,现在在深度学习网络中应用越来越广泛。
ResNet
提出背景就是深层神经网络训练困难的问题,究其原因主要是因为梯度消失/爆炸,导致模型难以收敛,尽管batch normalization的使用可以使几十层的网络使用SGD算法训练收敛,但是更深的网络就没办法了。就算能收敛,也还是存在模型性能退化的问题,模型误差不降反升。
为了解决这个问题,论文作者提出残差结构,让网络不去直接拟合目标函数H(x),而是去拟合它的残差F(x)=H(x)-x,结构如下图:
这种结构可以较好的解决梯度消失的问题。梯度消失产生的原因就是在误差反向传播过程中,每一层都要乘以该层激活函数的导数,对于sigmoid型激活函数,其导数始终小于等于1的,所以反向传播过程中误差越来越小,梯度也越来越小,参数也就越来越难更新。当然,ReLU激活函数其在x>0的部分导数为1,可以一定程度上缓解梯度消失问题。
说完梯度消失,再来看残差结构,其在求梯度时会有一个常数项存在,就不存在梯度消失的问题了,如下图(图片源于博