原文链接:https://arxiv.org/abs/1512.03385
一、解决问题
退化问题:随着网络深度的增加,准确率达到饱和然后迅速退化。即网络达到一定层数后继续加深模型会导致模型表现下降。
意外的是,这种退化并不是由过拟合造成的,也不是由梯度消失和爆炸造成的,在一个合理的深度模型中增加更多的层却导致了更高的错误率。
如图上图所示,20层的网络比56层的网络在同一迭代次数下无论是训练集还是测试集上都有更低的错误率,这就排除了过拟合的可能性。
而梯度消失和爆炸的问题在一定程度上已经通过标准化初始化normalized initialization[原文中的参考文献23,9,37,13]和中间归一化层intermediate normalization layers [原文中的参考文献16]得以解决。这些方法使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛,并且梯度消失和爆炸的表现也和退化问题的表现不同。
那么是什么造成了退化问题呢?是不是那个处于最好状态的模型对应的层数就是最适合的解,超过这个层数的模型就应该效果下降呢?不然!假设实验得出某个任务对应最优模型的层数是7,那么在这个模型的基础上再加上任意层的恒等映射得到的新模型效果应该是相同的啊。也就是说更深的模型至少存在效果不次于(相等:7层+恒等映射 更好:可能存在的解)那个7层模型的解的。至于为什么没能得到这个解呢?唯一的原因就是出现了优化的难题,这个解是不易求得的,或者说无法在可行的时间内通过梯度下降法求得的。为什么求解困难呢?推断是因为深度网络面临着随着层数增加,而出现指数级下降的收敛速度,换句话说,需要非常多的训练次数。(原文中没有,其他人的博客中看到并觉得合理)
二、解决方法
注意:此部分涉及一些个人理解,很可能出现误差,希望可以批判性地阅读并欢迎大家指出本人理解偏颇或者错误的地方。
之前得到造成退化问题的原因是在现有的优化方法上求解更深网络参数十分困难。两条解决思路:一是创造新的优化方法,二是化简现有的优化问题。而论文作者选择了第二种方法,通过让求解更深的神经网络模型变得更容易。
本文通过引入深度残差学习框架(a deep residual learning framework)来化简优化问题,进而解决退化问题。
思想:不希望每个层叠层直接拟合所需的底层映射,而是显式地让这些层拟合一个残差映射。假设所需的底层映射为 H(x),我们让堆叠的非线性层来拟合另一个映射:
F(x):=H(x)−x。 因此原来的映射转化为: H(x):=F(x)+x。
我们假设优化残差映射F(x)比优化原始映射H(x)容易(论文通过实验结果证明了假设成立,但没有给出明确的解释。个人理解:假设x=1,y=H(x)=H(1)=1.1,y=F(x)+x=F(1)+1=1.1 求得H(1)=1.1 F(1)=0.1,而拟合出0.1的速度要快于拟合出1.1的速度或者说拟合0.1所用的迭代次数更少进而更加容易)。在极端情况下,如果恒等映射是最优的,则将残差推至零(用一堆非线性层拟合0)比用一堆非线性层拟合恒等映射更容易。
具体实现的结构为下图所示:
其中右图的结构为更深层次的瓶颈架构,是左图的改进版,在不增加时间复杂度的前提下加深了模型的深度。
三、效果
可以看到,左图中不使用ResNet结构下18层网络的模型误差要小于34层的模型。而在右图中使用了ResNet结构后,如预计的那样实现了更深层的网络有更好的效果的预言。
参考
理解论文过程中也参考了以下的博客,受到了很大的启发,在此表示感谢!
Deep Residual Learning for Image Recognition(译)
【论文翻译】ResNet论文中英对照翻译–(Deep Residual Learning for Image Recognition)
Deep Residual Learning for Image Recognition个人有感