随着大量深层网络的应用,深层网络表现出优异的性能,但存在以下两个主要问题:
- 梯度消失/梯度爆炸
- 性能退化问题
其中,梯度的消失/爆炸可通过较好的初始化或者正则化手段进行缓解,但性能退化问题却无法通过上述手段进行解决,起初人们认为性能退化的原因来自于过拟合,但在文中作者认为,性能的退化并不是因为过拟合所导致,如图1所示:
从图中我们可以看到,随着层数的增加,训练误差也上升显著,这说明退化问题的根源并不是过拟合问题。
作者在文中提及的一种当时时间节点上的解决方案是通过添加恒等变换层(identity mapping),当时普遍认为这种由恒等变换和浅层网络所组成的“深层网络”的性能应至少不低于其对应的浅层网络,但从实验分析来看其性能也是不尽人意。
于是作者提出使学习一种残差映射,而不是去直接求解潜在的映射,具体来说:
原来的网络通过学习得到一个隐藏的映射H(x),而作者现在不直接学习这个映射H,而是学习他的残差形式F(x) = H(x) - x,这也是残差网络名称的来源。
作者在也解释了这样改变的原因,即当网络需要恒等映射时,传统的非线性层不能很好的模拟恒等变换,而采用了残差形式后,只要使非线性层的权重接近0即可。
个人认为也可从训练的角度理解,这种形式更易优化的原因是使用这种形式,相当于对原来的每一层使用了正则化手段,使得每一层学习更小的参数值,从而更加稳定。
引入残差块后,网络的基本块变为了: