Abstract

深层的神经网络越来越难以训练。我们提供了一个残差学习框架用来训练那些非常深的神经网络。我们重新定义了网络的学习方式,让网络可以直接学习输入信息与输出信息的差异(即残差),而不必学习一些无关的信息。我们提供了全面的证据来说明这种残差网络更加容易进行优化,而且随着网络层数的增加,准确率也就增加。在ImageNet的数据集中,我们证实了在深度达到152层的残差网络上(相当于VGG net的8倍),网络仍然有着较低的复杂度。这些残差网络的合集在 ImageNet的测试集上进行评测,达到了3.57%的错误率,这一结果赢得 ILSVRC 2015 分类比赛的第一名。我们同时也提供了在CIFAR-10数据集上对于100层和1000层残差网络的分析。

对于许多的视觉检测目标来说,网络的深度是一个非常重要的因素。仅仅是通过对于网络深度的增加,让我们在COCO 目标检测数据集上获得了28%的性能提升。深度的残差网络是我们在 ILSVRC 和 COCO 2015两个比赛中所提交的模型的基础。我们也同时获得了ImageNet 检测,COCO检测和分割比赛的第一名。

1.Introduction

深度卷积神经网络的应用在图像分类领域已经引发了一系列的突破。深度网络很自然地集成了图像中的低/中/高级别的特征信息和分类器,并且是以端到端的形式完成的。与此同时,不同级别的特征信息可以通过增加网络堆叠(层数)的方式来进行丰富。最近的研究也表明网络的深度是非常重要的一部分,例如在ImageNet数据集的挑战中,排名靠前的结果无一不是使用了非常深的网络来完成的(从16层到30层)。许多其他的非常著名的视觉识别任务也从深度网路中收益很多。

由于’深度‘对于网络的重要意义,一个问题开始出现:学习更好的网络是否像堆叠更多的层一样容易?众所周知的一个障碍是梯度的消失/爆炸问题,他们都会影响深度网路的收敛。当然,这两个已经被网络参数的初始标准化以及网络中间层的标准化两个方法有效的解决了,让拥有着数十层深度的网络都可以通过随机梯度下降的方法进行反向传播。

当网络的深度变得越来越深的时候,一个关于网络‘退化’的问题又显现出来了,即随着网路层数的增加,模型的准确性开始饱和,然后迅速退化。然而令人意外的是这些退化并不是来源于“过拟合”,而且向一个适度的神经网络中增加更多的层还会导致更高的训练误差,这一点在论文[11, 42]以及我们自己的实验中都有证明。图1也展示了这样的例子。

Resnet读论文笔记_数据集

图1:使用20层和56层神经网络的训练误差(左)和测试误差(右)在CIFAR-10数据集上的表现. 更深的网络拥有更深的训练误差和测试误差。相同的现象也出现在ImageNet的数据集上,如图4所示

网络训练精度的退化问题让我们意识到并不是所有的网络都可以比较容易的进行优化。首先,让我们来考虑一个浅层的网络和在它的一个对照组,即在它的结构的基础上增加了一些深层的网络。对于更深的网络的一种构建方式为所增加的层都是恒等层,另外其他的层则完全复制浅层网络。这种构造解决方案的存在表明,较深的模型不应该产生比其对应的较浅模型更高的训练误差。然而实验的结果却告诉我们,我们所构建的深层网络在训练时很难得到跟浅层网络一样的或者高于浅层网络的结果(或者说无法在可控的一个时间范围内完成)。

注:恒等即H(x)=x,这里所说的恒等层即图像进入网络前跟从网络出来后是一样的,也就是所增加的层中,所有的权重都是1. 这样就构成了文章中所说的恒等层

在这篇文章中,我们通过引入一种叫做’残差‘的学习框架来解决上面所提到的训练退化的问题。我们明确地让这些层拟合残差映射,而不是希望每几个堆叠的层直接拟合期望的基础映射。通过公式来表示的话:我们把开始期望拟合映射示为H(x),那么现在我们想让这些新加的层去拟合另外一个映射,我们把它示为F(x):= H(X) -X。那么开始期望拟合的映射H(x)= F(x) + x。我们假设这种残差映射相对于原始的映射是更加容易进行优化的。我们可以设想下如果这个恒等映射可以被优化出来,那么让残差变为0应该比(通过一堆非线性层来拟合恒等映射更容易)让那些新堆叠进去的非线性的层的权重都变为1要容易的多。

Resnet读论文笔记_数据集_02

图2:残差学习:一个构建模块

F(x) + x这种形式很容易在网路中通过 ’shorcut connections‘的形式来实现(如图2所示)。’shorchut connection‘ 可以跳过一层或者多层来进行。在我们的示例中,’shorchut connection‘ 很容易的完成了恒等映射,同时,把这些输出添加到新堆叠层的输出中(如图2所示)。通过这种方式进行添加一方面没有增加额外的参数,另一方面也没有增加计算的复杂度。同时,整个网络仍然可以使用SGD和通用的训练框架进行端到端的训练,如可以使用公共库(例如,Caffe [19])轻松实现,而无需修改求解器。

我们在ImageNet[35]上进行了综合实验来显示退化问题并评估我们的方法。我们发现:1)我们极深的残差网络易于优化,但当深度增加时,对应的“简单”网络(简单堆叠层)表现出更高的训练误差;2)我们的深度残差网络可以从大大增加的深度中轻松获得准确性收益,生成的结果实质上比以前的网络更好。

CIFAR-10数据集上[20]也显示出类似的现象,这表明了优化的困难以及我们的方法的影响不仅仅是针对一个特定的数据集。我们在这个数据集上展示了成功训练的超过100层的模型,并探索了超过1000层的模型。

在ImageNet分类数据集[35]中,我们通过非常深的残差网络获得了很好的结果。我们的152层残差网络是ImageNet上最深的网络,同时还具有比VGG网络[40]更低的复杂性。我们的模型集合在ImageNet测试集上有3.57% top-5的错误率,并在ILSVRC 2015分类比赛中获得了第一名。这个极其深的网络也在其他的比赛中有着出色的表现,并带领我们进一步赢得了第一名:包括ILSVRC & COCO 2015竞赛中的ImageNet检测,ImageNet定位,COCO检测和COCO分割。坚实的证据表明残差学习准则是通用的,并且我们期望它适用于其它的视觉和非视觉问题。

2.Related Work

残差表示

在图像识别中,VLAD用来表示字典被残差编码后的结果, Fisher VLAD用来表示VLAD的概率形式。他们都可以被用来非常直接的表述图像的检索和分类问题。在对图像进行向量化表示的时候,通过残差进行表示已经被证明比直接通过原始图像进行表示有着更高的效率。

在low-level的计算机视觉和计算图形学中,为了解决求偏导的问题,广泛的使用Multigrid 方法,将问题解构成不同尺度的子问题,每一个子问题则用不同粒度(从粗粒度到细粒度)的残差向量来进行表示。Multigrid的一种代替方案是层次化预处理, 它也依赖于那种用两种尺度残差表示的参数。论文[3,45,46]都证明了这种残差的方法比那么没有意识到残差性质的方法能够更快的得到收敛的结果。这些方法都表明一个好的变换或者预处理方法可以简化优化器。

捷径连接(Shortcut connection)

促成捷径连接的理论和时间已经被研究了很长一段时间了。其中最早的实践是在训练多层感知机(MLPs)的时候,在输入和输出之间添加一个线性的连接。在论文[44, 24]中,为了解决梯度消失/梯度爆炸的问题, 一小段中间层被直接连接到辅助的分类器上。论文[39, 38, 31, 47]为了解决层间相应,梯度和传播错误问题,同样也使用了捷径连接的方法。在论文[44]中,初始层是有一个捷径连接和几个更深的分支组成的。

在我们写论文的同时,’高速网络‘还提供了一个带有门功能的捷径连接。当然相对于我们这里的这种不需要额外参数的恒等捷径连接,带有门功能的捷径连接是需要依赖于数据本身和特殊参数的。比如,当门关闭的时候,整个’高速网路‘更加相当于一个没有残差的网络。相对来说,我们的方式则需要总是去学习残差,并且我们的恒等网络是不会关闭的,因此所有的信息都会通过残差网络别学习到。另外,高速网络并没有去论证在网络非常深的情况下,其准确率是否可以提升。

3.Deep Residual Learning

3.1. Residual Learning

我们考虑H(x)作为几个堆叠层(不必是整个网络)要拟合的基础映射,x表示这些层中第一层的输入。假设多个非线性层可以渐近地近似复杂函数,它等价于假设它们可以渐近地近似残差函数,即H(x)−x(假设输入输出是相同维度)。因此,我们明确让这些层近似残差函数 F(x):=H(x)−x,而不是期望堆叠层近似H(x)。因此原始函数变为F(x)+x。尽管两种形式应该都能渐近地近似要求的函数(如假设),但学习的难易程度可能是不同的。

这种变换方式的灵感来自于对于退化问题的反直觉现象(如图1,左侧)。正如我们在引言中讨论的那样,如果添加的层可以被构建为恒等映射,更深模型的训练误差应该不大于它对应的更浅版本。但是训练退化问题让我们了解到网络应该很难让所添加的这些非线性的层训练成恒等映射。但是在残差网路的框架下,如果恒等映射是最优的结果,那么网络应该可以简单的去驱动新增加的非线性层的权重都变为0,从而达到拟合恒等映射的目的。

在实际的例子中,恒等映射或许并不是最优的结果,但是我们的方法却有助于解决训练退化的问题。如果最优函数相对于一个全是0的映射更接近一个恒等映射,那么相对于去拟合一个新的函数,我们的这种操作更容易让求解器根据所输入的恒等映射去发现扰动。我们通过实验(图7)表明通常情况下学习残差网路会比学习普通的网络有很小的调整标准差,这也表明我们使用的恒等映射提供了很好的模型预处理。

3.2. Identity Mapping by Shortcuts

我们将残差学习应用到每一个小的模块中。一个模块的示例如图2所示。使用公式表示这个小模块的话:

Resnet读论文笔记_卷积_03

其中x 和y为模块的输入和输出向量。函数F(x,{wi})为网络需要学习的残差映射。例如图2中所示,该模块含有两层, F = W2σ(W1x), 其中σ表示ReLu, 为了简化假设,biases也被省略。关于F +x 的操作,则通过捷径连接的方式实现,进行对应位置像素的加和操作。我们在加和操作结束后,再进行第二次的非线性激活。(即σ(y),看图2)

在公式1中的捷径连接操作,即没有增加新的参数,也没有增加计算复杂度。这不仅在实际应用中具有很强的应用性,而且对于我们所进行的普通网络和残差网络的对比实验也是很重要的。因为这样的话,我们就可以公平的比较具有相同的参数,深度,宽度和计算复杂度的普通网络和残差网络。(除了不可忽略的元素加法之外)

在公式1中,x和F的维度一定要一样,如果不一样(例如当我们改变了输入/输出的通道数),我们可以通过线性投影的方式来让他们的维度相互匹配:

Resnet读论文笔记_数据集_04

我们也可以在公式1中使用一个平方矩阵Ws。 但是我们的实验结果表明使用恒等映射对于解决训练退化的问题是足够的,而且他还比较经济,因此Ws只会在当输入和输出的维度不匹配的时候才使用。

函数F的形式是非常灵活的。在本文的实验中,我们分别使用了2层和3层网络来进行(如图5所示),于此同时,更多的层数也是可以的。当然如果F只有一层的话,那么公式1则近似为一个线性层: y =W1X + X, 对此我们还没有观察到他的优点。

Resnet读论文笔记_数据集_05

我们需要说明的是尽管上面的所有的表述都是用的全连接层举例,但是这是为了方便起见,他们是可以被部署在卷积层上的。函数F(x,Wi)可以表示多个卷积层。元素的相加是被应用在两个特征图像上的,他们在对应的通道上进行加和操作。

3.3. Network Architectures

我们测试了各种简单/残差网络,并观察到了一致的现象。为了提供讨论的实例,我们描述了ImageNet的两个模型如下。

普通网络

我们的普通网络的架构(图3,中间)主要受到VGGnet(图3,左)的启发。其中的卷积层更多的使用3x3的过滤器,并且紧跟着两个简单的设计规则:(i)对于输出和输入相同的特征图,那么层具有相同数量的过滤器;(ii)如果特征图的尺寸减半,那么过滤器的数量则需要翻倍,用来保证层的时间复杂性。我们的下采样直接通过使用步长为2的卷积来实现。在网络的末尾连接了一个全局平均池化层和经过softmax的1000个参数的全连接层。网络的总体层数是34层(如图3,中间)所示。

值得注意的是,我们的网络相对于VGGnet有更少的过滤器和更小的复杂度(图3,左)。我们的34层基础模型有36亿浮点运算次数(乘法和加法),这只有VGG-19(196亿浮点运算次数)模型参数的18%。

Resnet读论文笔记_卷积_06

图3.在ImageNet上示例的网络结构。左:VGG19模型(196亿浮点运算次数);中:普通网络具有34层参数(36亿浮点运算次数); 右:残差网络具有34层参数(36亿浮点运算次数),其中虚线的捷径连接需要增加维度。表1列出了其他的指标和参数。

残差网络

基于上述的普通网路,我们在其中插入残差部分(如图3,右),则把该网络转换成了他的对照组残差网络。当输入和输出的尺寸一致的时候,shortcut(公式1)可以被直接使用(图3中实线部分)。当维度增加的时候(图3中虚线部分),我们考虑了两种方案:(A)shortcut部分仍然使用恒等映射,但是对于新增加的维度则全部使用0来代替。这种方案不增加任何的参数。(B)通过公式2中所提供的线性投影的方式来匹配增加的维度(通过使用1x1的卷积的方式来实现)。对于这两种方案,当两个特征图的尺寸不一致时,都用过使用步长为2的卷积来让他们统一。

3.4. Implementation

我们在ImageNet上的部署参考了论文[21, 41]的方式。图像被进行随机缩放,缩放的方式为让它的短边在[256,480]之间进行随机采样。然后将图像随机裁剪出224x224大小,并进行随机水平方向的旋转,最后将所有的像素点减去均值。论文[21]中的标准颜色增广也被用到。我们在每次卷积和激活之间都添加了批量标准化操作。我们按照论文[13]的方法初始化了网络权重,并从头开始训练普通网络/残差网络。我们使用了SGD作为优化器,并把最小批量设置为256. 我们的学习率从0.1开始,当训练误差不减小的时候,我们将之前的学习率缩小10倍,直到模型进行了60x10的4次方的迭代数量。我们所使用的权重衰减系数为0.0001,动量为0.9.我们沿用了论文[16]的方法,即没有在训练过程中使用dropout。

在测试时,为了进行比较研究,我们采用了标准的10-crop的测试方法。为了获得最佳的结果,我们采用了如论文[41,13]一样的全卷积的方式,并使用了多尺度图像的平均值作为结果(图像的短边会被缩放到{224,256,384,480,640})。

参考文章

https://zhuanlan.zhihu.com/p/159162779

https://blog.csdn.net/Quincuntial/article/details/772636