深度学习之经典神经网络框架详解(四):ResNet-v1残差神经网络

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Superstar02/article/details/101211160

Deep Residual Learning for Image Recognition

简述:

残差神经网络在2015年ILSVRC比赛中获得冠军,且多个方面获得了第一名。随着网络深度的增加,梯度在反向传播过程中会逐渐消失,导致无法对前面的网络层的权重进行有效的调整,致使准确率逐渐饱和然后迅速下降。本文提出了一个残差学习框架来简化网络训练,实验表明该网络更易优化,且大幅增加深度的同时获得高的精度。

问题or相关工作:

在这里插入图片描述
如上图,随着网络模型的深度加深,会使学习能力增强,但训练精度却下降,原因在于优化难题,当模型变复杂时,SGD的优化变得更加困难,导致了模型达不到好的学习效果。即所谓的退化问题(degradation problem),为解决此问题,本文提出了深度残差网络ResNet。

如果发现下层的误差变大,那么接下来的学习目标就转变为恒等映射(identity mapping)的学习,而假设某段神经网络输入为x,若期望输出H(x)是期望的复杂(多个非线性层)潜在映射,这样的模型训练难度较大。作者直接把输入x传到输出作为初始结果,即下图所示的捷径连接(shortcut connections)前馈神经网络来实现。

注:该想法来源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。
在这里插入图片描述
则所需的底层映射转换成H(x)=F(x)+x(is performed by shortcut connections and element-wise addition),之前的复杂潜在映射转换为:F(x)=H(x)-x,即所谓的残差,则目标即为将残差推到零(当F(x)=0时,那么H(x)=x),这要比通过一堆非线性层来匹配一个恒等映射容易得多。且不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。

模型:

在这里插入图片描述在这里插入图片描述
主要受VGGNets的理念启发,卷积层大多用3×3个滤波器,(i)对于相同的输出特征图大小,各层具有相同的填充器数量;(ii)若将feature map的大小减半,则滤波器的数目加倍,以保持每层的时间复杂度。且模型比VGGNets具有更少的滤波器和更低的复杂度。FLOPs(每秒浮点数运算次数)仅为VGGNets的18%.
从图可以看出,“shortcut connections(捷径连接)”有实线or虚线,区别如下:

  1. 实线的Connection部分:表示输入与输出通道相同,可直接相加即H(x)=F(x)+x (公式1)
  2. 虚线的Connection部分:表示通道数增加时,由于两者通道数不同,而F(x)和x相加时维数必须相等,故采用H(x)=F(x)+ Wsx(公式2),通过执行线性投影Ws(有1×1卷积完成),来调整x的维度。
    更多层网络整体框架:
    在这里插入图片描述

实验:

Plain Network vs Residual Networks

在这里插入图片描述
在这里插入图片描述
如上图,左图为普通网络(plain network),网络层次越深(34-layer)比层次浅(18-layer)的误差率更高,而残差网络ResNet(右图)网络层次越深(34-layer)比层次浅(18-layer)的误差率低(ResNet对比plain network没有额外的参数)。经验证,有以下结论:

  1. 34层的ResNet显示出了很低的训练误差,说明深度残差网络确实解决了退化的问题,并且能够设法从增加深度方面来获得更好的精度。
  2. 如表2所示,34-layer的ResNet网络比普通的网络减少了3.5%的top-1的误差率。验证了ResNet在极深的网络上的有效性。
  3. 18-layer的ResNet和plain对比,精度一样,但是ResNet早起收敛速度更快,可以用来简化优化。

Identity vs. Projection Shortcuts:

比较了三种选择:
(A)zero-padding shortcuts用来增加维度(Residual block的维度小于输出维度时,使用0来进行填充),没有参数增加。
(B)在需要升维时,用projection shortcuts,其他的shortcut都是恒等映射(identity)类型。
(C)所有的shortcut都是使用projection shortcuts。
注:理解不了的话,参考上节模型中提到的两个公式:identity(恒等映射)为:H(x)=F(x)+x,projection shortcuts(投影捷径连接)为:H(x)=F(x)+ Wsx,参数增加就增加在Ws。实验数据如表:
在这里插入图片描述
由实验可知,But the small differences among A/B/C indicate that projection shortcuts are not essential for addressing the degradation problem.所以从减少模型参数、降低复杂度的角度考虑,使用Identity shortcuts。

Deeper Bottleneck Architectures:三层残差学习单元

在这里插入图片描述
两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图)其目的主要为了降低参数数目,减少计算量。假设上图左右输入均为256(则左图的64均为256),计算如下:

  1. 左图是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,
  2. 右图是第一个1x1的卷积把256维通道降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,右图的参数数量比左图减少了近17倍.
    故对于常规的ResNet,可以用于34层或者更少的网络中(左图);对于更深的网络(如101层),则使用右图,其目的是减少计算和参数量。

Deeper Bottleneck Architectures:

50、101和152层的ResNet相对于32层网络有更高的准确率,结果如表4(及上面的表3):且152-layer的复杂度仍然低于VGG16/19.
在这里插入图片描述

CIFAR-10 and Analysis:

如下图所示,CIFAR- 10层响应的标准偏差(std),ResNets的响应通常比普通的响应小。这些结果说明了残差函数通常比非残差函数更接近于零。且更深的ResNet具有更小的响应范围
在这里插入图片描述
而对于更深的网络,比如超过1000层的情况,虽然能够进行训练,但是测试的正确率并不理想。原因可能是过拟合,因为超过1000层的网络对于这个小数据集来说,容量还是过大。

总结:

残差神经网络在ILSVRC2015竞赛中将网络深度提升到了152层,且错误率在3.57.比往届比赛结果好很多,为叠加多层网络而使得整个学习模型的错误率不降反升的难题提供了新的方向。

猜你喜欢

转载自blog.csdn.net/Superstar02/article/details/101211160