今天我们介绍一下残差网络,学习完前面的知识我们会知道网络的深度对于模型的性能是至关重要的,所以理论上而言模型更深可以取得更好的结果。但是事实真的是这样的吗?实现发现深度网络会出现退化的问题:网络深度增加时,网络准确度出现饱和,甚至会出现下降。这不是过拟合问题,而是由于深层网络中存在梯度消失和梯度爆炸的问题,这使得深度学习模型很难训练, ResNet的skip connection就是为了解决梯度消失这个问题,skip connection则能在后传过程中更好地把梯度传到更浅的层次中。梯度消失问题:在反向传播的时候,随着传播深度的增加,梯度的幅度会急剧减小(试想一下,在链式求导法则中,小于1的数连续相乘,不是会变得更小吗?如果层数很多,一下子就会接近0)残差网络的定义是这样的:当输入是x时,学习到的特征标记为H(x),现在我们希望其可以学习到残差F(x) = H(x)-x,这样原来的学习特征就成为了F(x)+x,当残差为0时,此时堆积层就是做了一个恒等映射,即H(x) = x,这样至少保证到我们的网络性能不会因为反向传播的梯度问题而退化。实际上残差是不会为0的,这样保证堆积层在输入特征基础上学习到新的特征从而拥有更好的性能。下面是残差网络的示意图:
为什么残差学习相对更容易,我们可以从数学的角度去分析这个问题,首先我们定义残差单元: