He K, Zhang X, Ren S,et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.


[1]He K, Zhang X, Ren S,et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.

1.  文章要解决的问题:

随着神经网络的深度加深,带来的其中一个重要的问题就是梯度消失和梯度爆炸,它会使得训练难以收敛,通过归一化或者batch normalization方法可以得到有效的缓解。然而,收敛问题得到解决之后,又存在另一个问题:随着深度加深,网络的准确度趋向于饱和了,然后当我们继续加深网络,网络的准确度却降低了,并且出现这种问题并不是因为过拟合导致的。如下图所示,56层的网络比20层的网络准确度还低。

从该图可以看出,出现这种问题并不是过拟合导致的,因为过拟合的情况下训练集的准确率应该很高。

 

2.  文章的解决方法:

使用一个残差网络结构来代替原来的非线性网络结构。

此图是以往的神经网络使用的非线性函数,H(x)是一种理想的映射,我们希望图中两层中的权值能够得到调整以适应H(x),但是实验证明,随着层数加深,求解器很难找到正确的求解途径,所以文章提出了深度残差学习的方法,它的结构如下图所示:

这里H(x)仍然是一种理想的映射,但是这里不再调整权值去适应H(x),而是适应另外一个F(x),然后让H(x) = F(x) + x, x是输入。之所以这么做是基于这样一个先验条件:就是深层的神经网络完成的是一种恒等映射,或者是一种接近于恒等的映射。即增加一个identity mapping(恒等映射),将原始所需要学的函数H(x)转换成F(x)+x,而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化会比H(x)简单的多,这一想法也是源于图像处理中的残差向量编码。最终,每层的输出就不是传统神经网络当中输入的映射,而是映射和输入的叠加。

 

3.  模型设置:

通常情况下,会出现F(x)和x的维度不匹配的问题,因此,本文采用这样一个公式:

左图为VGG-19模型,中间是一个34层的Plain Network,右图为34层的残差网络。

Plain Network 主要是受 VGG 网络启发,主要采用3*3滤波器,遵循两个设计原则:1)对于相同输出特征图尺寸,卷积层有相同个数的滤波器,2)如果特征图尺寸缩小一半,滤波器个数加倍以保持每个层的计算复杂度,通过步长为2的卷积来进行降采样。残差网络是在Plain network的基础上加了shortcut connection。

 

4.  实验及结果

作者认为,残差网络结构中的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。接下来,作者设计实验来证明自己的观点。

首先构建了一个18层和一个34层的plain网络,然后构建了一个18层和一个34层的残差网络,仅仅是在plain上插入了shortcut,而且这两个网络的参数量、计算量相同,并且和之前有很好效果的VGG-19相比,计算量要小很多。

模型构建好后进行实验,由上图可以看出,在plain上观测到明显的退化现象,而且残差网络上不仅没有退化,34层网络的效果反而比18层的更好,而且不仅如此,残差网络的收敛速度比plain的要快得多。

 

进一步实验,作者提出了更深的残差块(residual block), 即将两个3x3的卷积层替换为1x1 + 3x3 + 1x1, 如下图。新结构中的中间3x3的卷积层首先在一个降维1x1卷积层下减少了计算,然后在另一个1x1的卷积层下做了还原,既保持了精度又减少了计算量。

5.  体会:

本文提出的深度残差网络可以在实现一个152层的深度神经网络,它不仅不会出现退化现象,而且参数相较于其他深度网络模型来说较少。在网络训练过程中,加入先验信息

指导非常重要,合理的先验往往会取得较好的结果。

 

你可能感兴趣的:(He K, Zhang X, Ren S,et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.)