我们提出了一个residual learning framework来简化网络的训练,这些网络比以前使用的要深得多。我们显式地将层重新表示为根据层输入学习residual function,而不是学习未引用的函数。我们提供了全面的经验证据表明,这些残差网络更容易优化,并可以获得准确性从相当大的深度。在ImageNet数据集上,我们评估的residual network深度可达152层,比VGG网络深8层,但仍然具有较低的复杂性。这些残余网的集合在ImageNet测试集上的误差达到3.57%,该结果在ILSVRC 2015分类任务中获得第一名。我们还对CIFAR-10进行了100层和1000层的分析。
对于许多视觉识别任务来说,表征的深度是至关重要的。仅仅由于我们非常深入的表示,我们在COCO对象检测数据集上获得了28%的相对改进。深残差网是我们提交给ILSVRC的基础。在2015年COCO竞赛中,我们在ImageNet检测、ImageNet定位、COCO检测、COCO分割任务上也获得了第一名。
Deeper neural networks are more difficult to train. We
present a residual learning framework to ease the training
of networks that are substantially deeper than those used
previously. We explicitly reformulate the layers as learning residual functions with reference to the layer inputs, instead of learning unreferenced functions. We provide comprehensive empirical evidence showing that these residual
networks are easier to optimize, and can gain accuracy from
considerably increased depth. On the ImageNet dataset we
evaluate residual nets with a depth of up to 152 layers—8×
deeper than VGG nets [41] but still having lower complexity. An ensemble of these residual nets achieves 3.57% error
on the ImageNet test set. This result won the 1st place on the
ILSVRC 2015 classification task. We also present analysis
on CIFAR-10 with 100 and 1000 layers.
The depth of representations is of central importance
for many visual recognition tasks. Solely due to our extremely deep representations, we obtain a 28% relative improvement on the COCO object detection dataset. Deep
residual nets are foundations of our submissions to ILSVRC
& COCO 2015 competitions1, where we also won the 1st
places on the tasks of ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation.
深度卷积神经网络[22,21]在图像分类方面取得了一系列突破[21,50、40]。深度网络以端到端的多层方式自然地集成了低/中/高层特征[50]和分类器,特征的“层”可以通过层叠层(深度)的数量来丰富。最近的证据[41,44]表明网络深度至关重要,在挑战性方面领先[41,44,13,16] ImageNet数据集[36]均采用“非常深”的[41]模型,深度为16[41]~ 30[16]。许多其他重要的视觉识别任务[8,12,7,32,27]也从非常深层模型中获益良多。
在深度的重要性的驱动下,一个问题出现了:学习更好的网络就像叠加更多的层一样容易吗?
回答这个问题的一个障碍是众所周知的梯度消失/爆炸问题[1,9],这从一开始就阻碍了收敛。然而,这个问题在很大程度上是通过规范化初始化[23,9,37,13]和中间规范化层来解决的[16],使具有数十层网络的随机梯度下降(SGD)与反向传播[22]开始收敛。
当较深的网络能够开始收敛时,就会暴露出一个退化问题:随着网络深度的增加,精度会饱和(这可能并不奇怪),然后迅速退化。出乎意料的是,这种退化并不是由过拟合引起的,向适当深度的模型中添加更多的层会导致更高的训练误差,这一点在[11,42]中有报道,我们的实验也得到了充分的验证。图1是一个典型的例子。
(训练精度的)下降表明并非所有系统都同样容易优化。让我们考虑一个更浅的体系结构及其更深层的对应结构,它向体系结构中添加了更多的层。通过构造更深层次的模型,存在一种解决方案:添加的层是身份映射,其他层是从学到的更浅层次的模型中复制的。该构造解的存在性表明,较深的模型不会产生比浅模型更高的训练误差。但实验表明,我们现有的求解器无法找到比构造的解决方案好或更好解(或未能在可行时间内完成)。
在本文中,我们通过引入一个深度残差框架来解决退化问题。
我们不希望每几个堆叠的层直接适合所需的底层映射,而是显式地让这些层适合残差映射。形式上,表示所需的底层映射为H(x),我们让堆叠非线性层适合另一个映射F(x):= H(x)−x。原始映射被重新转换为F(x)+x。我们假设优化残差映射比优化原始的、未引用的映射更容易。在极端情况下,如果一个恒等映射是最优的,那么将残差推到零要比通过一堆非线性层来拟合一个恒等映射更容易。
F(x)+ x的公式可以通过具有快捷连接的前馈神经网络来实现(图2)。在我们的例子中,快捷连接只是执行标识映射,它们的输出被添加到堆叠层的输出中(图2)。标识快捷连接既不添加额外的参数,也不增加计算复杂性。整个网络仍然可以通过具有反向传播的SGD进行端到端训练,并且可以使用公共库(例如Caffe[19])轻松实现,而无需修改求解器。
我们在ImageNet上进行了全面的实验用[36]表示降解问题,并对我们的方法进行评价。我们发现:1)我们的极深残差网络易于优化,而对应的“普通”网络(即简单的堆叠层)在深度增加时训练误差较大;2)我们的深度残差网可以很容易地从深度的大幅增加中获得精度收益,产生的结果比以前的网络要好得多。
类似的现象也出现在CIFAR-10上[20],表明我们的方法的优化困难和效果并不仅仅类似于一个特定的数据集。我们在这个超过100层的数据集上展示了成功训练的模型,并探索了超过1000层的模型
在ImageNet分类数据集[36]上,我们利用极深的残差网络得到了很好的结果。我们的152层残差网络是迄今为止展示的最深的网络虽然ImageNet的复杂度仍然低于VGG nets[41]。
我们的集合有3.57%的前5的错误率在ImageNet测试集,获得ILSVRC第一名2015年分类竞赛。极深的表征在其他识别任务上也有很好的泛化性能,使我们进一步赢得了第一名:ImageNet检测,ImageNet定位,coco检测,和可可分割在ILSVRC &coco2015比赛。这有力的证据表明,残差学习原则是通用的,我们希望它适用于其他视觉和非视觉问题。
在图像识别中,VLAD[18]是对字典的残差向量进行编码的表示,Fisher向量[30]可以表示为VLAD的概率版本[18]。它们都是用于图像检索和分类的强大的浅层表示[4,48]。在矢量量化方面,对剩余矢量[17]进行编码比对原始矢量进行编码更有效。
在低水平视觉和计算机图形学中,为了求解偏微分方程(PDEs),广泛使用的多网格方法[3]将系统重新表示为多尺度的子问题,其中每个子问题负责粗尺度和细尺度之间的残差解。多网格的另一种选择是分层基础预处理[45,46],它依赖于表示两个尺度之间的残差向量的变量。已经证明[3,45,46],这些解的收敛速度远远快于那些不知道解的剩余性质的标准解。这些方法表明,一个好的配方或预处理可以简化优化。
快捷方式连接。导致快捷连接的实践和理论[2,34,49]已经研究了很长时间。训练多层感知机(MLPs)的一个早期实践是从网络输入到输出的线性层[34,49]。在[44,24]中,一些中间层直接连接到辅助分类器,用于寻址消失/爆炸梯度。[39,38,31,47]的论文提出了通过快捷连接实现的对中层响应、梯度和传播误差的方法。在[44]中,先启层由一个快捷分支和几个更深层次的分支组成。
与我们的工作同时,公路网[42,43]提供了与门控功能[15]的快捷连接。这些门是依赖于数据的,有参数,而我们的标识快捷方式没有参数。当一个封闭的捷径关闭(接近零)时,公路网中的层代表非剩余函数。相反,我们的公式总是学习残差函数;我们的身份捷径永远不会被关闭,所有的信息总是被传递,还有额外的剩余功能需要学习。
让我们把H(x)看作是一个底层映射,由几个叠加的层(不一定是整个网络)来匹配,其中x表示第一个层的输入。假设多个非线性层可以渐近逼近复杂函数,则等价于假设它们可以渐近逼近残差函数,即H (x)−x(假设输入和输出是相同的尺寸)。所以我们不期望叠加层近似H(x)我们明确地让这些层近似一个残差函数F(x):= H(x)−x。最初的功能从而成为F(x)+ x。尽管这两种形式都应该能够渐进地近似所需的函数(如假设的那样),但学习的难易程度可能有所不同。
这种重新配方的动机是关于降解问题的反直觉现象(图1,左)。正如我们在引言中所讨论的,如果添加的层可以构造为标识映射,那么较深的模型的训练误差应该不大于较浅的模型。退化问题表明,求解器在用多个非线性层逼近恒等映射时可能存在困难。通过残差学习重构,如果恒等映射是最优的,求解器可以简单地将多个非线性层的权值趋近于零来逼近恒等映射。
在实际情况下,恒等映射不太可能是最优的,但是我们的重新构造可能有助于为这个问题提供先决条件。如果最优函数更接近恒等映射,而不是零映射,那么求解器应该更容易找到关于恒等映射的扰动,而不是把这个函数作为一个新函数来学习。实验结果表明(图7),学习到的残差函数一般响应较小,说明恒等映射提供了合理的预处理。
我们对每一个堆叠层都采用残差学习。构建块如图2所示。在本文中,我们正式将构建块定义为:
这里x和y是考虑的层的输入和输出向量。函数F(x, {W_i})表示待学习的残差映射。对于图2中的示例有两层,F = W2σ(W1x)中σ表示ReLU[29]和简化后的偏差。F + x操作是通过快捷连接和按element-wise添加来执行的。我们采用加法后的第二个非线性(即σ(y),请参见图2)。
上式中的快捷连接既不引入额外的参数,也不引入计算复杂度。这不仅在实践中很有吸引力,而且在我们比较纯网络和剩余网络时也很重要。我们可以比较同时具有相同数量的参数、深度、宽度和计算成本的普通/剩余网络(可忽略的元素相加除外)。
在上式中,x和F的维数必须相等。如果情况并非如此(例如,在更改输入/输出通道时),我们可以通过快捷连接执行线性投影Ws,以匹配维度:
我们也可以在第一个式子中使用方阵Ws。但是,我们将通过实验证明,恒等映射对于解决退化问题是足够的,并且是经济的,因此Ws仅在匹配维度时使用。残差函数F的形式是灵活的。本文的实验涉及到一个函数F,该函数有两层或三层(图5),而更多的层是可能的。但是如果F只有一个单层,那么第一个式子类似于线性层:y = W1x + x,对于线性层我们没有观察到优势。我们还注意到,尽管为了简单起见,上面的符号是关于完全连接的层的,但是它们适用于卷积层。函数F(x;{Wi}是在两个特性映射上逐个通道执行元素相乘element-wise。
这里的残差网络基于之前的VGG-19的网络,在其中插入了许多短连接,即为残差网络。当输入和输出的尺寸相同时,可以直接使用恒等链接。当尺寸增加时(图3中的虚线快捷方式),我们考虑两个选项:(A)快捷方式仍然执行恒等映射,为增加尺寸增加了额外的零项填充。此选项不引入额外参数;(B)投影在等式二的短连接。(2)是用于匹配维度(由1×1旋转)。对于这两个选项,当快捷方式跨两个大小的功能图时,它们的步长都是2。
我们在包含1000个类的ImageNet 2012分类数据集[36]上评估我们的方法。对128万张训练图像进行模型训练,对50k验证图像进行评估。我们还获得了测试服务器报告的100k测试图像的最终结果。我们评估前1和前5的错误率,下图是我们的结构:
接下来我们评估了18层和34层的剩余网(ResNets)。以及使用了ResNet和原来的普通plainNet的对比:
基线架构与上面的普通网络相同,期望在每对3 - 3个过滤器中添加一个快捷连接,如图3(右)所示。在第一个比较中(表2和图4右),我们对所有的短连接使用恒等映射,对增加的维度使用零填充(选项A)。
我们从表2和图4中得到三个主要的观察结果。首先,通过残差学习将情况逆转,34层ResNet优于18层ResNet(上升2.8%)。更重要的是,34层ResNet显示出较低的训练误差,并且可推广到验证数据。这表明退化问题在这个设置中得到了很好的解决,我们设法从增加的深度中获得准确性的提高。
其次,与它的普通网络相比,34层ResNet将top-1错误降低了3.5%(表2),这是由于成功地降低了训练错误造成的(图4右对右)。
左)。这一比较验证了在深度网络上残差学习的有效性。
最后,我们还注意到,18层的纯/残余网格相对准确(表2),但18层ResNet收敛更快(图4右vs左)。当网络“不太深”(这里是18层)时,当前的SGD求解器仍然能够找到针对普通网络的良好解决方案。在这种情况下,ResNet通过在早期提供更快的收敛速度。
接下来我们研究投影短连接公式二。在表3中,我们比较了三个选项:(A)增加维度使用零填充短连接,且所有短连接均无参数(与表2和图4右);(B)投影短连接用于增加尺寸,其他短连接为恒等;所有的短连接都是投影
表3显示,这三个选项都比普通的选项要好得多。B略优于A,我们认为这是因为A的零填充维度确实没有残差学习。我们将此归因于由许多(13个)投影快捷方式引入的额外参数。但是A/B/C之间的细微差别表明,投影捷径对于解决退化问题并不是必不可少的。因此我们在本文的其余部分中不使用选项C,以减少内存/时间复杂性和模型大小。
我们使用三层block来代替34层网络 的二层block。
50/101/152层的反演比34层的精度高得多(表3和表4)。我们没有观察到退化问题,因此从深度的显著增加中获得了显著的准确性。对于所有的评估指标,深度的好处都是显而易见的(表3和4)。
我们对CIFAR-10数据集[20]进行了更多的研究,该数据集由10个类的50k训练图像和10k测试图像组成。我们在训练集上进行实验,并在测试集上进行评估。我们关注的是深度网络的行为,而不是推动最先进的结果,因此我们有意使用以下简单的架构。
并且进行了实验:
图6(左)显示了普通网络的结果。普通网络深度越深,训练误差越大。这种现象类似于ImageNet(图4,左)和MNIST(见[42]),说明这种优化困难是一个基本问题。图6(中)显示了ResNets的行为。与ImageNet的情况类似(图4,右),我们的ResNets能够克服优化困难,并在深度增加时显示出精度的提高。
图7为各层响应的标准差(std)。响应为BN后和其它非线性(ReLU/加法)前各33层的输出。分析结果揭示了残差函数的响应强度。从图7可以看出,ResNets的响应通常小于普通的ResNets。这些结果支持了我们的基本动机(3.1节),即残差函数通常比非残差函数更接近于零。我们还注意到更深的ResNet具有更小的响应量,如图7中ResNet-20、56和110之间的比较证明了这一点。当有更多的层时,单个层的ResNets倾向于较少地修改信号。
该方法对其它识别任务具有良好的泛化性能。表7、8为PASCAL VOC 2007、2012[5]、COCO[26]的目标检测基线结果。我们采用更快的R-CNN[32]作为检测方法。在这里,我们感兴趣的是用ResNet-101替换VGG-16[41]的改进。使用这两种模型的检测实现(参见附录)是相同的,因此所获得的收益只能归功于更好的网络。最值得注意的是,在具有挑战性的COCO数据集上,我们获得了COCO标准度量(mAP@[)的6.0%的增长。5, .95]),相对改善28%。
这种增益完全是由于习得的表示。基于深度剩余网,我们在ILSVRC和amp中获得了多个赛道的第一名。COCO 2015竞赛:ImageNet检测、ImageNet定位、COCO检测、COCO分割。详情见附录。