一、引言
由于深度学习的广泛应用,出现了一个新问题:训练一个更好的网络是否和堆叠更多的层一样简单呢?解决这一问题的障碍便是困扰人们很久的梯度消失/梯度爆炸,这从一开始便阻碍了模型的收敛。归一初始化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。
当深层网络能够收敛时,一个退化问题又出现了:随着网络深度的增加,准确率达到饱和(不足为奇)然后迅速退化。意外的是,这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层却导致了更高的错误率,如下图所示:
退化的出现表明系统是需要优化的,所以作者想法:恒等映射,理论上它不可能比它的浅层网络有更高的误差率,但是实验表明更高层的网络却出现了更高的误差率。
二、深度残差学习
为了解决退化问题,作者提出了深度残差学习框架。残差映射如下图所示:
残差块的公式表示为:
在上面的公式中,的维度必须相同,如果不相同,需要下面的公式来匹配两者的维度:
在 Eq.1 中同样可以使用方阵 Ws。但我们的实验表明,恒等映射已足够解决退化问题,并且是经济的,因此 Ws 只是用来解决维度不匹配的问题。
残差函数 F 的形势是灵活可变的。本文实验中涉及到的函数 F 是两层或者三层的,当然更多层也是可行的。但是如果 F 只含有一层,Eq.1 就和线性函数:y=W1(x) + x 一致,因此并不具有任何优势。
还发现不仅是对于全连接层,对于卷积层也是同样适用的。函数F(x,{Wi})可以表示多个卷积层,在两个特征图的通道之间执行元素级的加法。