Resnet——Deep Residual Learning for Image Recognition

Abstact

为了更容易地对深度网络进行训练,本文提出了学习残差网络的框架,并根据数据证明深度的残差网络更容易优化。作者在ImgeNet数据集上实现了152层的残差网络,深度是VGG网络的8倍,取得了3.75%误差的结果,在ILSVRC2015比赛中获得了第一名。除此之外本文作者还提供了在CIFAR-10数据集上的1000层残差网络的分析。

1.Introduction

随着CNN网络的发展,尤其的VGG网络的提出,大家发现网络的层数是一个关键因素,貌似越深的网络效果越好。但是随着网络层数的增加,问题也随之而来。

首先一个问题是 vanishing/exploding gradients,即梯度的消失或发散。这就导致训练难以收敛。但是随着 normalized initialization  (归一初始化)and intermediate normalization layers(中间归一化层)的提出,解决了这个问题,这使得具有数十层的网络就能开始收敛,可以用于随机梯度下降(SGD)和反向传播。

当收敛问题解决后,又一个问题暴露出来:随着网络深度的增加,系统精度得到饱和之后,迅速的下滑。让人意外的是这个性能下降不是过拟合导致的。例如对一个合适深度的模型加入额外的层数会导致训练误差变大。如下图所示:

è¿éåå¾çæè¿°

作者考虑这样构建一个深层网络:在训练过的较浅网络上直接增加idenity mapping(恒定映射)层。这样构建的的深层网络不应该比其对应的较浅网络的误差大,那么可以认为,可能存在另一种构建方法,随着深度的增加,训练误差不会增加,只是我们没有找到该方法而已。

本文作者提出了一个 deep residual learning 框架来解决这种因为深度增加而导致性能下降问题。不再是让堆叠层直接拟合所需的网络关系映射,而是地让这些层拟合残差映射。假设我们期望的网络层关系映射为 H(x), 我们让 the stacked nonlinear layers 拟合另一个映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 这里我们假设优化残差映射F(x) 比优化原来的映射 H(x)容易。在极端情况下,如果idenity mapping是最优的,可以将残差设置到0。

è¿éåå¾çæè¿°

F(x)+ x的公式可以通过具有“shortcut connections”的前馈神经网络实现(如上图)。shortcut connections是跳过一个或多个层的连接。 在我们的例子中,shortcut connections只是执行identity mapping恒定映射,它们的输出被添加到堆叠层的输出中。shortcut connections既不增加额外参数也不会增加计算复杂度。整个网络仍然可以通过反向传播由SGD(随机梯度下降)端到端地进行训练,并且可以使用公共库(例如,Caffe)轻松实现,而无需修改求解器。

2.Deep Residual Learning

2.1 Resisual Learning

假设H(x)是堆叠网络层拟合的网络关系映射,其中x定义为第一层的输入。如果多个堆叠的非线性层可以拟合复杂的函数,那么当然也可以拟合残差函数H(x)-x(假设输入和输出的维数相同)。因此,作者让堆叠的非线性层拟合残差函数F(x):=H(x)-x而不是H(x),这样原来的映射函数就变为了F(x)+x。虽然这两种拟合方式都应该逐渐地逼近所需的函数,但训练的难易程度可能会很大的差异。

这种残差网络的构建动机就是因为网络深度增加之后系统精度产生退化了现象,但是如果仅在浅层网络上增加identity mappings构建深层网络的话,深层网络模型的训练误差不应该比浅层模型的训练误差大 。因此作者提出了如图2所示的网络构建方式,通过残差函数的方式在网络上增加identity mappings。在极端情况下,如果Identity mappings是最优,可以将网络中的非线性层的权重逼近为0,但是在实际情况下这种极端情况是不可能出现的。

2.2 Identity Mapping by Shortcuts

作者在对叠层上采用残差学习算法。一个构建块如图2所示,构建块的定义如下所示:

y=F(x,\left \{ W_{i} \right \})+x                 (1)

其中x和y分别表示层的输入和输出。函数F(x,\left \{ W_{i} \right \})代表训练的残差映射。图2 中的例子是包含2层,F=W_{2}\delta (W_{1}x),其中,\delta代表ReLU,为了简化省略了偏置项。F+x操作由一个shortcut连接和元素级(element-wise)的加法来表示。在加法之后我们再执行另一个非线性操作(例如, σ(y)),如图2所示。

等式(1)中的shortcut连接没有增加额外的参数和计算复杂度。在该等式中,x和F的维度必须相同,如果不相同(当改变了输入/输出的通道数),我们可以通过shortcut连接执行一个线性映射W_{s}来匹配两者的维度:

y=F(x,\left \{ W^{_{i}} \right \})+W_{s}x           (2)

在等式(1)中同样可以使用方阵Ws。但我们的实验表明,恒等映射已足够解决退化问题,并且是经济的,因此WsWs只是用来解决维度不匹配的问题。

残差函数F的形势是灵活可变的。该论文实验中涉及到的函数F是两层或者三层的,当然更多层也是可行的。但是如果F只含有一层,等式1就和线性函数:y=W1x+x一致,并没有任何意义。

尽管上述符号是关于完全连接层的,但是对于卷积层也是同样适用的。函数F(x,{Wi})可以表示多个卷积层,在两个特征图的通道之间执行元素级的加法。

2.3 Network Architectures

作者在多个plain网络和残差网络上进行了测试,并都观测到了一致的现象。接下来在ImageNet上对两个模型进行讨论。

Plain网络。
我们的plain网络结构(Fig.3,中)主要受VGG网络 (Fig.3,左)的启发。
卷积层主要为3*3的滤波器,并遵循以下两点要求:(1) 输出特征尺寸相同的层含有相同数量的滤波器;(2) 如果特征尺寸减半,则滤波器的数量增加一倍来保证每层的时间复杂度相同。我们直接通过stride 为2的卷积层来进行下采样。在网络的最后是一个全局的平均pooling层和一个1000 类的包含softmax的全连接层。加权层的层数为34,如Fig.3(中)所示。

值得注意的是,这里的模型比VGG网络(Fig.3,左)有更少的滤波器和更低的计算复杂度。34层的结构含有36亿个FLOPs(乘-加),而这仅仅只有VGG-19 (196亿个FLOPs)的18%。

残差网络。
在以上plain网络的基础上,我们插入shortcut连接(Fig.3,右),将网络变成了对应的残差版本。如果输入和输出的维度相同时,可以直接使用恒等shortcuts (Eq.1)(Fig.3中的实线部分)。当维度增加时(Fig.3中的虚线部分),考虑两个选项:
(A) shortcut仍然使用恒等映射,在增加的维度上使用0来填充,这样做不会增加额外的参数;
(B) 使用Eq.2的映射shortcut来使维度保持一致(通过1*1的卷积)。
对于这两个选项,当shortcut跨越两种尺寸的特征图时,均使用stride为2的卷积。

Fig.3

Fig.3 对应于ImageNet的网络框架举例。 :VGG-19模型 (196亿个FLOPs)作为参考。:plain网络,含有34个参数层(36 亿个FLOPs)。:残差网络,含有34个参数层(36亿个FLOPs)。虚线表示的shortcuts增加了维度。Table 1展示了更多细节和其它变体。

Table 1

Table 1 对应于ImageNet的结构框架。括号中为构建块的参数(同样见Fig.5),数个构建块进行堆叠。下采样由stride为2的conv3_1、conv4_1和conv5_1 来实现。

Fig.5

Figure.5

2.4 Implementation

针对ImageNet的网络实现遵循了Krizhevsky2012ImageNetSimonyan2014Very。调整图像的大小使它的短边长度随机的从[256,480][256,480] 中采样来增大图像的尺寸。 从一张图像或者它的水平翻转图像中随机采样一个224*224的crop,每个像素都减去均值。图像使用标准的颜色增强。在每一个卷积层之后,激活层之前均使用batch normalization(BN)。根据He2014spatial来初始化权值然后从零开始训练所有plain/残差网络。
使用的mini-batch的尺寸为256。学习率从0.1开始,每当错误率平稳时将学习率除以10,整个模型进行60∗104次迭代训练。我们将权值衰减设置为0.0001,动量为0.9。根据 Ioffe2015Batch,并没有使用Dropout。

在测试中,为了进行比较,采取标准的10-crop测试。为了达到最佳的结果,使用Simonyan2014VeryHe2014spatial中的全卷积形式,并在多个尺度的结果上取平均分(调整图像的大小使它的短边长度分别为{224,256,384,480,640})。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值