ResNet简述

引言

  深度网络以端到端多层的方式自然地集成了低/中/高级特征以及分类器,特征可以由网络的深度来丰富,因此ImageNet竞赛的参赛模型都趋向于“非常深”——16 层 到30层 。许多其它的视觉识别任务的都得益于非常深的模型。在深度的重要性的驱使下,出现了一个新的问题,梯度消失/梯度爆炸从一开始便阻碍了模型的收敛。初始归一化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。当深层网络能够收敛时,一个退化问题又出现了:随着网络深度的增加,准确率达到饱和(不足为奇)然后迅速退化。意外的是,这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层却导致了更高的错误率。图1展示了一个典型的例子:
在这里插入图片描述
  退化的出现表明了并非所有的系统都是很容易优化的。对于更深的模型,这有一种通过构建的解决方案:恒等映射(identity mapping)来构建增加的层,而其它层直接从浅层模型中复制而来。这个构建的解决方案也表明一个更深的模型不应当产生比它的浅层版本更高的训练错误率。
  本文提出了一种深度残差学习框架来解决这个退化问题,使得即使在网络层数很深(甚至在1000多层)的情况下,网络依然可以得到很好的性能与效率。

相关工作

  **Residual Representations:**在图像识别中,VLAD(《Aggregating local image descriptors into compact codes》)是残差向量对应于字典进行编码的一种表达形式,Fisher Vector(《Fisher kernels on visual vocabularies for image categorization》)可以看作是VLAD 的一个概率版本。对于图像检索和分类它们都是强力的浅层表达。对于向量量化,残差向量编码比原始向量编码更加有效。
  **Shortcut Connections:**训练多层感知器(MLPs)的一个早期实践就是添加一个连接输入和输出的线性层。在Szegedy2015Going及Lee2015deeply中,将一些中间层直接与辅助分类器相连接可以解决梯度消失/爆炸问题。在 Szegedy2015Going中,一个“inception”层由一个shortcut分支和一些更深的分支组合而成。Highway网络将shortcut连接与门控函数结合起来,当一个门的shortcut是“closed”(接近于0)时,highway网络中的层表示非残差函数,而本文模型总是学习残差函数,在学习额外的残差函数时,所有的信息总是通过的,此外,highway网络并不能由增加层的深度来提高准确率。

方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  对于plain网络,卷积层主要为33的滤波器,并遵循以下两点要求:
  (1)输出特征尺寸相同的层含有相同数量的滤波器;
  (2)如果特征尺寸减半,则滤波器的数量增加一倍来保证每层的时间复杂度相同,直接通过stride 为2的卷积层来进行下采样,在网络的最后是一个全局的平均pooling层和一个1000 类的包含softmax的全连接层,加权层的层数为34。不过该网络比VGG网络有更少的滤波器和更低的计算复杂度。其34层的结构含有36亿个FLOPs,而仅仅只有VGG-19 (196亿个FLOPs)的18%。
  对于残差网络,在以上plain网络的基础上,插入shortcut连接,将网络变成了对应的残差版本,如果输入和输出的维度相同时(图中的实线部分),可以直接使用之前公式1的恒等shortcuts,而维度增加的话(图中的虚线部分),可以考虑两种方案:
  (1)在增加的维度上使用0来填充,这样做不会增加额外的参数;
  (2)使用Eq.2的映射shortcut来使维度保持一致。
  当shortcut跨越两种尺寸的特征图时,均使用stride为2的卷积。
  针对ImageNet的网络实现遵循了Krizhevsky2012ImageNet和Simonyan2014Very,调整图像的大小使它的短边长度随机的从[256,480]中采样来增大图像的尺寸,从一张图像或者它的水平翻转图像中随机采样一个224
224的crop,每个像素都减去均值,图像使用标准的颜色增强,在每一个卷积层之后,激活层之前均使用batch normalization(BN)。本文根据He2014spatial来初始化权值然后从零开始训练所有plain/残差网络。
  对于更深的模型(这一块原文是实验部分讲的),考虑到训练时间的限制,将构建块修改成瓶颈的设计,如图5所示,对于每一个残差函数使用了三个叠加层而不是两个
在这里插入图片描述
  这三层分别是11、33 和11 的卷积,11 的层主要负责减少然后增加(恢复)维度,剩下的3*3的层来减少输入和输出的维度。
  50层的ResNet就是将34层网络中2层的模块替换成3层的瓶颈模块,101层和152层则是使用更多的3层模块来构建,值得注意的是,虽然层的深度明显增加了,但是152层ResNet的计算复杂度(113亿个FLOPs)仍然比VGG-16(153 亿个FLOPs)和VGG-19(196亿个FLOPs)的小很多。
  50/101/152层ResNets比34层ResNet的准确率要高得多,而且并没有观测到退化问题。

实验

  本文在1000类的ImageNet2012数据集上对方法进行评估。
  表2展示了18层网络和34层网络的错误率,对于plain网络,34层的网络比18层的网络具有更高的错误率,至于原因本文没有给出,只是说因为用到了BN,其能保证前向传递的信号是具有非零方差的,因此不太可能是由梯度消失所造成的,并提到在以后的工作研究。
在这里插入图片描述
  表3展示了对于之前不同维度处理的三种选项方式:
  A表示使用零填充以增加维度;
  B表示使用映射shortcut来使维度保持一致;
  C表示无论维度是否相同都用映射shortcut。
在这里插入图片描述
  C略优于B,但考虑内存/时间复杂性和模型规模,本文方法采用B。
  表4和表5展示了单一模型和组合模型的错误率
在这里插入图片描述
  在CIFAR-10上做的实验如表6所示:
在这里插入图片描述
  表7和表8展示了检测方面的实验。
在这里插入图片描述

总结

  本文提出的方法没有很难理解,但是取得的效果是非常好的,作者仔细思考了网络深度的优势以及挑战,以解决退化问题为动机,引入残差网络结构,作者在文中提到:深层网络的训练误差一般比浅层网络更高,但是对一个浅层网络,添加多层恒等映射(y=x)变成一个深层网络,这样的深层网络却可以得到与浅层网络相等的训练误差,作者通过跳跃连接来实现了一个简单的恒等映射,对于残差网络,当残差为0时,此时堆叠层仅仅做了恒等映射,根据上面的结论,理论上网络性能至少不会下降,而如果增加的层中学到了一些有用信息,那性能肯定会得到提升,并且对于更深的网络,本文提出了瓶颈层,有效减少了参数量,使得增加网络深度变得更加简单,不过从CIFAR-10实验中1202层效果变差中可以看出,依旧可能会发生过拟合之类的问题,网络还是不能无限制地增加深度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值