https://arxiv.org/pdf/1512.03385.pdf
摘要:
更深层次的神经网络更难训练。我们提出了一个残差学习框架,以减轻网络的训练,实质上比以前使用的网络更深。我们明确地将层重新表述为参考层输入的学习残差函数,而不是学习未引用的函数。我们提供了全面的经验证据,表明这些残差网络更易于优化,并且可以通过大大增加的深度来获得准确性。在ImageNet数据集上,我们评估了深度高达152层的残差网——比VGG网[41]深8倍,但仍然具有较低的复杂性。这些残留网络的整体在ImageNet测试仪上实现了3.57%的误差。 该结果在ILSVRC 2015分类任务中获得第一名。 我们还将介绍具有100和1000层的CIFAR-10的分析。
表示的深度是许多视觉识别任务的核心重要性。仅由于我们的深度表示,我们在COCO对象检测数据集上获得了28%的相对改进。深残留网络是我们提交给ILSVRC和COCO 2015竞赛的基础,我们在ImageNet检测,ImageNet本地化,COCO检测和COCO分割方面也获得了第一名。
1.简介
深度卷积神经网络[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给出了一个典型示例。
图1所示。20层和56层“plain”网络上的CIFAR-10的训练错误(左)和测试错误(右)。网络越深,训练误差越大,测试误差也越大。ImageNet上的类似现象如图4所示。
训练精度的降低表明并不是所有的系统都同样容易优化。让我们考虑一个较浅的体系结构和一个在其上添加更多层的较深的对等物。通过构建更深层的模型,可以找到一种解决方案:添加的层是identity mapping,而其他层是从学习的浅层模型中复制的。这个构造的解的存在表明一个更深的模型应该不会产生比它的浅层对应的更高的训练误差。但是实验表明,我们现有的求解器无法找到比构造的解决方案好或更好的解决方案(或无法在可行的时间内找到解决方案)。
在本文中,我们通过引入深度残差学习框架来解决退化问题。我们明确让这些层适合残差映射,而不是希望每个堆叠的层都直接适合所需的底层映射。形式上,将期望的底层映射表示为H(x),我们让堆叠的非线性层适合另一个映射F(x):= H(x)−x。原始的映射被重新映射为F(x)+x。我们假设优化残差映射比优化原始的、未引用的映射更容易。极端的情况是,如果一个identity mapping是最优的,那么将残差推到零将比通过一堆非线性层来匹配一个identity mapping更容易。
F(x)+ x的公式化可以通过具有“快捷连接”的前馈神经网络来实现(图2)。快捷连接[2,34,49]是那些跳过一个或多个层的连接。在我们的例子中,快捷连接简单地执行identity mapping,它们的输出被添加到堆叠层的输出中(图2)。identity快捷连接既不增加额外的参数,也不增加计算复杂度。整个网络仍然可以使用反向传播SGD来训练端到端,并且可以很容易地使用公共库(例如Caffe[19])来实现,而不需要修改求解器。
图2。残差学习:一个构建块。
我们在ImageNet上进行了全面的实验以[36]显示退化问题并评价我们的方法。结果表明:1)我们的极深残差网易于优化,但相对的“普通”网(简单叠加层)在深度增加时训练误差较大;2)我们的深层残差网络可以通过大大增加深度来轻松享受精度提升,从而产生比以前的网络更好的结果。在CIFAR-10集上也显示了类似现象[20],这表明优化困难和我们方法的效果不仅类似于特定数据集。我们成功地在这个数据集上展示了超过100层的训练模型,并探索超过1000层的模型。
在ImageNet分类数据集[36]上,我们通过极深的残差网获得了出色的结果。 我们的152层残差网络是ImageNet上提出的最深的网络,同时其复杂度仍低于VGG网络[41]。极深表示在其他识别任务中也有良好的泛化性能。这有力的证据表明,残差学习原理是通用的,我们希望它也适用于其他视觉和非视觉问题。
2.相关工作
残差表示。在图像识别中,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]中,一个“inception”层由一个快捷分支和一些较深的分支组成。
与我们的工作同时,“高速公路网络”[42,43]提供了具有门控功能[15]的快捷连接。这些门依赖于数据,并且有参数,而我们的identity快捷方式不需要参数。当一个封闭的捷径被“关闭”(接近于零)时,高速公路网络中的各层就代表了非残差功能。相反,我们的公式总是学习残差函数。 我们的identity快捷键永远不会关闭,所有信息始终都会通过传递,并需要学习其他残余功能。此外,高速网络并没有在深度(例如,超过100层)增加的情况下显示出精度的提高。
3.深度残差学习
3.1.残差学习
让我们把H(x)看作一个由几个堆叠层(不一定是整个网络)拟合的底层映射,x表示这些层中的第一个层的输入。如果假设多个非线性层可以渐进地逼近复杂的函数,则等价于假设它们可以渐近逼近剩余函数H(x) - x(假设输入和输出具有相同的维数)。因此,我们明确地让这些层近似于残差函数F(x) = H(x)−x,而不是期望堆叠层近似于H(x)。原来的函数因此变成F (x) + x。尽管两种形式都应该能够渐进地逼近期望函数(如假设的那样),但学习的难易程度可能是不同的。
这种重新表述的动机是退化问题的反直觉现象(图1,左)。正如我们在介绍中讨论的那样,如果添加的层可以构造为 identity mappings,那么较深的模型的训练误差应该不会大于较浅模型的训练误差。退化问题表明求解器在通过多个非线性层逼近 identity mapping时可能存在困难。利用参残差学习重构方法,在身份映射是最优的情况下,求解器只需将多个非线性层的权值趋近于零即可逼近identity mapping。
在实际情况下,identity mapping不太可能是最佳的,但我们的重新制定可能有助于解决问题。如果最优函数更接近identity mapping而不是零映射,那么对于求解器来说,它应该更容易根据identity mapping找到扰动,而不是把函数当作一个新的函数来学习。我们通过实验表明(图7),所学的残差函数一般具有较小的响应,这表明identity mapping提供了合理的预处理。
图7. CIFAR10上层响应的标准偏差(std)。 响应是BN之后和非线性之前每个3×3层的输出。 顶部:图层以其原始顺序显示。 下:响应按降序排列。
3.2.快捷方式的Identity Mapping
我们对每几个堆叠层采用残差学习。构建模块如图2所示。形式上,在本文中,我们考虑一个定义为:
这里x和y是考虑层的输入和输出向量。函数F(x,{Wi})表示要学习的残差映射。对于图2中具有两层的示例,F =W2σ(W1x),其中σ表示ReLU [29],并且为了简化符号省略了偏置。F + x操作通过快捷连接和逐元素加法执行。 在加法之后我们采用第二个非线性度(即σ(y),见图2)。
Eqn(1)中的快捷连接既不引入额外参数,也不增加计算复杂度。这不仅在实践中很有吸引力,而且在比较普通网络和残差网络时也很重要。我们可以比较那些同时具有相同数量的参数、深度、宽度和计算代价(除了可忽略的元素加成)的普通网络和剩余网络。
在Eqn(1)中x和F的维数必须相等。如果不是这样(例如,当改变输入/输出通道时),我们可以通过快捷连接执行一个线性投影Ws来匹配尺寸:
我们也可以在等式(1)中使用平方矩阵Ws。 但是我们将通过实验证明Identity Mapping足以解决降级问题并且很经济,因此Ws仅在匹配尺寸时使用。
残差函数F的形式是灵活的。 本文中的实验涉及一个具有两层或三层的函数F(图5),而更多的层是可能的。 但是,如果F仅具有单层,则等式(1)类似于线性层:y = W1x + x,为此我们没有观察到优势。
图5。ImageNet的更深层次残差函数F。左图:ResNet34的构建块(56×56特征地图上)如图3所示。右:ResNet-50/101/152的“瓶颈”构建块。
我们还注意到,尽管为简化起见,上述符号是关于全连接层的,但它们也适用于卷积层。 函数F(x,{Wi})可以表示多个卷积层。 基于元素的添加是在两个特征图上逐个通道执行的。
3.3网络结构
我们测试了各种普通网络/残差网络,并观察到一致的现象。为了提供实例供讨论,我们如下描述了ImageNet的两个模型。
普通的网络。我们的普通网络的基线(图3,中)主要是受到了VGG nets[41]理念的启发(图3,左)。卷积层通常有3×3的滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征映射大小,各层有相同数量的滤波器;(i)对于相同的输出特征图尺寸,各层具有相同数量的滤波器;(ii)如果feature map的大小减半,那么过滤器的数量就增加一倍,以保持每层的时间复杂度。我们通过步幅为2的卷积层直接执行降采样。网络以一个全局平均池层和一个softmax的1000路全连接层结束。图3(中间)中加权层的总数为34。
图3. ImageNet的示例网络架构。 左:作为参考的VGG-19模型[41](196亿个FLOPs)。中:包含34个参数层(36亿个FLOPs)的普通网络。 右图:一个具有34个参数层的残差网络(36亿个FLOPs)。 虚线快捷方式会增加维度。 表1显示了更多详细信息和其他变体。(FLOPs每秒浮点运算次数)
值得注意的是,我们的模型比VGG nets[41]具有更少的滤波器和更低的复杂度(图3,左)。我们的34层基线有36FLOPs(乘加),只有VGG-19的18%(196亿FLOPs)。
残差网络。在上述普通网络的基础上,我们插入快捷连接(图3,右),将网络变成对应的残差版本。当输入和输出的尺寸相同时,可以直接使用identity快捷方式(等式(1))(图3中的实线快捷方式)。当尺寸增加时(图3中的虚线捷径),我们考虑两种选择:(A)快捷方式仍然执行身份映射,并添加了额外的零条目以增加尺寸。 此选项不引入任何额外的参数。(B)等式(2)中的投影快捷方式用于匹配尺寸(按1×1卷积完成)。 对于这两个选项,当快捷方式跨越两种尺寸的特征图时,它们的步幅为2。
3.4 实现
我们对ImageNet的实现遵循[21,41]中的实践。在[256,480]中随机采样图像的较短边,以调整图像的大小,用于缩放[41]。从图像或其水平翻转中随机抽取224×224,并减去每像素均值[21]。 使用[21]中的标准颜色增强。我们采用批归一化(BN)[16],在每次卷积后和激活前,紧随[16]。我们初始化了[13]中的权值,并从头训练所有plain/residual网络。我们使用小批大小为256的SGD。学习速率从0.1开始,当误差趋于平缓时除以10,训练模型的迭代次数高达60×10000次。我们使用0。0001的重量衰减和0。9的动量。我们不使用dropout[14],遵循[16]中的做法。在测试中,为了比较研究,我们采用标准
10-crop测试[21]。为了获得最好的结果,我们采用了如[41,13]所示的完全卷积形式,并在多个尺度上对分数进行平均(图像被调整大小,使较短的一侧为{224,256,384,480,640})。
4.实验
4.1. ImageNet 分类
我们在包含1000个类的ImageNet 2012分类数据集[36]上评估了我们的方法。模型在128万张训练图像上进行训练,并在50k验证图像上进行评估。我们还获得了由测试服务器报告的100k测试映像的最终结果。我们评估了前1和前5的错误率。
普通的网络。我们首先评估18层和34层的普通的网络。34层平网如图3(中)所示。18层的平网也是类似的形式。参见表1了解详细的架构。
表1. ImageNet的体系结构。 括号中显示了构建块(另请参见图5),其中堆叠了许多块。 下采样由conv3_1,conv4_1和conv5_1执行,步幅为2。
由表2的结果可知,较深的34层plain网比较浅的18层plain网具有更高的验证误差。为了揭示原因,在图4(左)中,我们比较了他们在训练过程中的训练/验证错误。我们已经观察到退化问题-尽管18层普通网络的解决方案空间是34层普通网络的子空间,但在整个训练过程中34层普通网络具有较高的训练误差。
表2。前1错误(%,10作物测试)对ImageNet验证。这里的残差网与普通网相比没有额外的参数。训练过程如图4所示。
我们认为,这种优化困难不太可能是由消失的梯度引起的。 这些普通网络使用BN [16]训练,可确保前向传播的信号具有非零方差。我们还验证了向后传播的梯度具有BN的健康规范。 因此,前进或后退信号都不会消失。实际上,34层的plain net仍然能够达到竞争精度(表3),说明求解器在一定程度上是有效的。我们推测,深层平原网络收敛速度可能呈指数级下降,这会影响训练误差的降低。未来将研究这种优化困难的原因。
表3。在ImageNet验证上的错误率(%,10作物测试)。VGG-16是基于我们的测试。ResNet-50/101/152是选项B,只使用投影来增加尺寸。
残差网络。接下来我们评估18层和34层残差网(ResNets)。基线架构与上述普通网相同,只是在每对3×3滤波器上增加了一个快捷连接,如图3所示(右)。在第一个比较中(表2和图4右),我们对所有快捷方式使用identity mapping,并对增加维度使用零填充(选项A)。因此,与普通方式相比,它们没有额外的参数。更重要的是,34层ResNet显示出相当低的训练误差,并可推广到验证数据。这表明,退化问题在这种设置下得到了很好的解决,我们设法通过增加深度来获得精度的提高。
图4。ImageNet培训。细曲线表示训练误差,粗曲线表示center crops的验证误差。左图:18层和34层的普通网络。右图:18层和34层的ResNets。在这个图中,与普通网络相比,剩余网络没有额外的参数。
其次,与普通的相比,34层ResNet将top-1错误减少了3.5%(表2),这是由于成功减少了训练错误(图4右与左)。 这项比较验证了残差学习在极深系统上的有效性。
最后,我们还注意到,18层的plain/residual网相对准确(表2),但18层的ResNet收敛更快(图4右vs左)。当网络“不是太深”(这里有18层)时,当前的SGD求解器仍然能够找到普通网络的良好解决方案。在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。
Identity vs. Projection Shortcuts.我们已经证明,无参数的identity快捷方式有助于训练。 接下来,我们研究投影快捷方式(等式(2))。 在表3中,我们比较了三个选项:(A)用零填充的快捷方式增加维度,所有快捷方式都是无参数的(同表2和图4右);(B)投影快捷方式用于增加尺寸,其他快捷方式是identity。 ©所有捷径都是投影。
表3显示了所有这三个选项都比普通网络好得多。B略好于A。我们认为这是因为A中的零填充维数确实没有剩余学习。C略优于B,我们将此归因于许多(13)投影捷径引入的额外参数。但是A/B/C之间的微小差异表明投影捷径对于解决退化问题并不是必需的。因此,在本文的其余部分中,我们不使用选项C来减少内存/时间复杂性和模型大小。identity快捷方式特别重要,因为它不会增加下面介绍的瓶颈架构的复杂性。
更深层次的瓶颈架构。接下来,我们将描述ImageNet的更深层次网络。由于考虑到我们能够承担的训练时间,我们修改了构建块作为瓶颈设计。对于每个残差函数F,我们使用一个3层的堆栈而不是2层(图5)。这三层分别是1×1,3×3和1×1卷积,其中1×1层负责减少和增加(恢复)维数,使3×3层成为输入/输出维数较小的瓶颈。图5显示了一个示例,其中两种设计具有相似的时间复杂度。
无参数identity快捷方式对于瓶颈体系结构尤其重要。如果用投影代替图5(右)中的identity捷径,可以看出时间复杂度和模型尺寸都增加了一倍,因为该捷径连接到两个高维端。因此,identity捷径为瓶颈设计带来了更高效的模型。
50-layer ResNet:我们用这个3层的瓶颈块替换34层网络中的每个2层的块,从而得到一个50层的ResNet(表1)。我们使用选项B来增加维度。这个型号有38亿FLOPs。
101-layer and 152-layer ResNets
我们没有观察到退化问题,因此从深度的显著增加中获得了显著的精度提高。所有评估指标都证明了深度的好处(表3和表4)。
表4。ImageNet验证集上单一模型结果的错误率(%)(除了†在试验集上的报告)
探索超过1000层。在如此深入的模型上,仍然存在一些悬而未决的问题。这个1202层网络的测试结果比我们的110层网络的测试结果差,虽然两者都有类似的训练错误。我们认为这是由于过度拟合。对于这个小数据集,1202层的网络可能太大了(19.4M)。使用强正则化,如maxout[10]或dropout[14],在该数据集上获得最佳结果([10,25,24,35])。本文中,我们不使用maxout/dropout,只是简单地通过设计的深度和薄架构施加正则化,而不分散对优化困难的关注。但与更强的正规化相结合可能会改善结果,这是我们将在未来研究的。