文章目录
图像识别的深度残差学习
摘要
更深的神经网络更难训练。我们提出了一个残差学习框架,以缓解训练比以前使用的网络深度更深的网络的难度。我们明确地将层重新表述为参照层输入学习残差函数,而不是学习无参考的函数。我们提供了全面的实证证据,表明这些残差网络更容易优化,并且可以从显著增加的深度中获得精度。在ImageNet数据集上,我们评估了深度高达152层的残差网络,比VGG网络[41]深8倍,但仍然具有较低的复杂度。这些残差网络的集成在ImageNet测试集上实现了3.57%的错误率。这一结果在ILSVRC 2015分类任务中获得了第一名。我们还在CIFAR - 10上展示了具有100层和1000层的分析。
表征的深度对于许多视觉识别任务至关重要。仅仅由于我们极其深度的表征,我们在COCO目标检测数据集上获得了28%的相对改进。深度残差网络是我们提交给ILSVRC和COCO 2015竞赛的基础,我们还在ImageNet检测、ImageNet定位、COCO检测和COCO分割任务中获得了第一名。
一、引言
深度卷积神经网络[22, 21]为图像分类带来了一系列突破[21, 50, 40]。深度网络以端到端的多层方式自然地整合了低/中/高级特征[50]和分类器,并且通过堆叠的层数(深度)可以丰富特征的“级别”。最近的证据[41, 44]表明,网络深度至关重要,在具有挑战性的ImageNet数据集[36]上的领先结果[41, 44, 13, 16]都采用了“非常深”[41]的模型,深度为十六[41]到三十[16]。许多其他重要的视觉识别任务[8, 12, 7, 32, 27]也极大地受益于非常深的模型。
受深度重要性的驱动,出现了一个问题:学习更好的网络是否就像堆叠更多层一样容易?回答这个问题的一个障碍是臭名昭著的梯度消失/爆炸问题[1, 9],这从一开始就阻碍了收敛。然而,这个问题已经在很大程度上通过归一化初始化[23, 9, 37, 13]和中间归一化层[16]得到解决,这使得具有数十层的网络能够开始使用随机梯度下降(SGD)和反向传播进行收敛。
当更深的网络能够开始收敛时,一个退化问题暴露出来:随着网络深度的增加,精度达到饱和(这可能并不令人惊讶),然后迅速下降。出乎意料的是,这种退化并不是由过拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差,如[11, 42]所报道的,并通过我们的实验得到了彻底验证。图1展示了一个典型的例子。
训练精度的退化表明,并非所有系统都同样容易优化。让我们考虑一个较浅的架构及其更深的对应架构,即在其上添加更多层。对于更深的模型,存在一个通过构造得到的解决方案:添加的层是恒等映射,其他层从学习到的较浅模型中复制。这个构造解决方案的存在表明,更深的模型的训练误差不应高于其较浅的对应模型。但实验表明,我们当前的求解器无法找到与构造解决方案相当或更好的解决方案(或在可行的时间内无法做到)。
在本文中,我们通过引入深度残差学习框架来解决退化问题。我们不期望每几个堆叠层直接拟合所需的底层映射,而是明确让这些层拟合残差映射。形式上,将所需的底层映射表示为H(x),我们让堆叠的非线性层拟合另一个映射F(x) := H(x) - x。原始映射被重铸为F(x) + x。我们假设优化残差映射比优化原始的、无参考的映射更容易。极端情况下,如果恒等映射是最优的,那么将残差推向零比通过非线性层的堆栈拟合恒等映射更容易。
F(x) + x的公式可以通过具有“快捷连接”(图2)的前馈神经网络实现。快捷连接[2, 34, 49]是跳过一个或多个层的连接。在我们的情况下,快捷连接简单地执行恒等映射,它们的输出被添加到堆叠层的输出中(图2)。恒等快捷连接既不增加额外的参数也不增加计算复杂度。整个网络仍然可以通过SGD和反向传播进行端到端的训练,并且可以使用常见的库(例如Caffe [19])轻松实现,而无需修改求解器。
我们在ImageNet [36]上进行了全面的实验,以展示退化问题并评估我们的方法。我们表明:1)我们极其深度的残差网络易于优化,但对应的“普通”网络(简单地堆叠层)在深度增加时表现出更高的训练误差;2)我们的深度残差网络可以轻松地从深度的大幅增加中获得精度收益,产生的结果明显优于以前的网络。
类似的现象也在CIFAR - 10数据集上展示,表明优化困难和我们方法的效果不仅仅类似于特定的数据集。我们展示了在该数据集上成功训练的超过100层的模型,并探索了超过1000层的模型。
在ImageNet分类数据集[36]上,我们通过极其深度的残差网络获得了优异的结果。我们的152层残差网络是ImageNet上有史以来呈现的最深网络,同时仍然比VGG网络[41]具有更低的复杂度。我们的集成在ImageNet测试集上的top - 5错误率为3.57%,并在ILSVRC 2015分类竞赛中获得了第一名。极其深度的表示在其他识别任务上也具有出色的泛化性能,并使我们进一步在ILSVRC和COCO 2015竞赛中赢得了ImageNet检测、ImageNet定位、COCO检测和COCO分割的第一名。这强有力的证据表明,残差学习原理是通用的,我们期望它适用于其他视觉和非视觉问题。
二、相关工作
残差表示。在图像识别中,VLAD[18]是一种通过相对于字典的残差向量进行编码的表示,而Fisher Vector[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]的快捷连接。这些门是数据依赖的并且具有参数,与我们的无参数恒等快捷连接不同。当一个门控快捷连接“关闭”(接近零)时,高速公路网络中的层表示非残差函数。相反,我们的公式总是学习残差函数;我们的恒等快捷连接永远不会关闭,所有信息总是通过,同时学习额外的残差函数。此外,高速公路网络在深度极大增加(例如,超过100层)时并未展示出精度的提升。
三、深度残差学习
3.1 残差学习
让我们考虑H(x)作为由几个堆叠层(不一定是整个网络)拟合的底层映射,其中x表示这些层中第一层的输入。如果假设多个非线性层可以渐近地逼近复杂函数2,那么这等同于假设它们可以渐近地逼近残差函数,即H(x) - x(假设输入和输出具有相同的维度)。因此,我们不是期望堆叠层逼近H(x),而是明确地让这些层逼近残差函数F(x) := H(x) - x。原始函数因此变为F(x) + x。尽管两种形式都应该能够渐近地逼近所需的函数(如假设所述),但学习的难易程度可能不同。
这种重新表述是由关于退化问题的反直觉现象(图1,左)推动的。正如我们在引言中讨论的,如果添加的层可以构建为恒等映射,那么更深的模型应该具有不大于其较浅对应模型的训练误差。退化问题表明,求解器可能在通过多个非线性层逼近恒等映射时存在困难。通过残差学习的重新表述,如果恒等映射是最优的,求解器可能会简单地将多个非线性层的权重推向零,以接近恒等映射。
在实际情况中,恒等映射不太可能是最优的,但我们的重新表述可能有助于对问题进行预处理。如果最优函数比零映射更接近恒等映射,那么求解器应该更容易找到相对于恒等映射的扰动,而不是将函数作为新的函数来学习。我们通过实验(图7)表明,学习到的残差函数通常具有较小的响应,这表明恒等映射提供了合理的预处理。
3.2 通过快捷连接实现恒等映射
我们将残差学习应用于每几个堆叠层。一个构建块如图2所示。形式上,在本文中,我们考虑一个定义为:y = F(x, {Wi}) + x的构建块。(1)
这里x和y是所考虑的层的输入和输出向量。函数F(x, {Wi})表示要学习的残差映射。对于图2中具有两层的示例,F = W2σ(W1x),其中σ表示ReLU[29],为了简化符号,省略了偏置。操作F + x由快捷连接和元素级加法执行。我们在加法后采用第二个非线性(即σ(y),见图2)。
式(1)中的快捷连接既不引入额外的参数也不增加计算复杂度。这不仅在实践中具有吸引力,而且在我们对普通网络和残差网络的比较中也很重要。我们可以公平地比较同时具有相同数量的参数、深度、宽度和计算成本(除了可忽略的元素级加法)的普通/残差网络。
在式(1)中,x和F的维度必须相等。如果情况并非如此(例如,当改变输入/输出通道时),我们可以通过快捷连接执行线性投影Ws来匹配维度:y = F(x, {Wi}) + Wsx。
我们也可以在式(1)中使用方阵Ws。但我们将通过实验表明,恒等映射足以解决退化问题并且是经济的,因此Ws仅在匹配维度时使用。
残差函数F的形式是灵活的。本文中的实验涉及具有两层或三层的函数F(图5),而更多层也是可能的。但是,如果F只有一层,式(1)类似于线性层:y = W1x + x,对于这种情况我们没有观察到优势。
我们还注意到,尽管为了简单起见上述符号是关于全连接层的,但它们适用于卷积层。函数F(x, {Wi})可以表示多个卷积层。元素级加法是在两个特征图上逐通道执行的。
3.3 网络架构
我们测试了各种普通/残差网络,并观察到了一致的现象。为了提供讨论的实例,我们如下描述两个用于ImageNet的模型。
普通网络。我们的普通基线(图3,中)主要受VGG网络[41]的哲学启发(图3,左)。卷积层大多具有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,层具有相同数量的滤波器;(ii)如果特征图大小减半,则滤波器的数量加倍,以保持每层的时间复杂度。我们通过步幅为2的卷积层直接进行下采样。网络以全局平均池化层和具有softmax的1000路全连接层结束。图3(中)中的总加权层数为34。
值得注意的是,我们的模型比VGG网络[41]具有更少的滤波器和更低的复杂度。我们的34层基线具有36亿FLOPs(乘加运算),仅为VGG - 19(196亿FLOPs)的18%。
残差网络。基于上述普通网络,我们插入快捷连接(图3,右),将网络转换为其对应的残差版本。当输入和输出具有相同维度时(图3中的实线快捷连接),恒等快捷连接(式(1))可以直接使用。当维度增加时(图3中的虚线快捷连接),我们考虑两个选项:(A)快捷连接仍然执行恒等映射,通过填充额外的零条目来增加维度。此选项不引入额外参数;(B)在式(2)中使用投影快捷连接来匹配维度(通过1×1卷积完成)。对于这两个选项,当快捷连接跨越两个大小不同的特征图时,它们以步幅为2执行。
3.4. 实现
我们对ImageNet的实现遵循[21, 41]中的实践。图像通过随机采样其较短边在[256, 480]之间进行缩放增强[41]。从图像或其水平翻转中随机采样一个224×224的裁剪,并减去每个像素的平均值[21]。使用[21]中的标准颜色增强。我们在每个卷积后和激活前采用批量归一化(BN)[16],遵循[16]。我们按照[13]中的方式初始化权重,并从头开始训练所有普通/残差网络。我们使用SGD,小批量大小为256。学习率从0.1开始,当误差平稳时除以10,模型训练最多60×10^4次迭代。我们使用0.0001的权重衰减和0.9的动量。我们不使用 dropout[14],遵循[16]中的实践。
在测试中,为了进行比较研究,我们采用标准的10 - 裁剪测试[21]。为了获得最佳结果,我们采用[41, 13]中的全卷积形式,并在多个尺度上平均得分(图像被调整大小,使得较短边在{224, 256, 384, 480, 640}中)。
四、4. 实验
4.1 ImageNet分类
我们在ImageNet 2012分类数据集[36]上评估我们的方法,该数据集由1000个类别组成。模型在128万张训练图像上进行训练,并在5万张验证图像上进行评估。我们还在10万张测试图像上获得最终结果,该结果由测试服务器报告。我们评估了top - 1和top - 5的错误率。
普通网络。我们首先评估了18层和34层的普通网络。34层的普通网络如图3(中)所示。18层的普通网络形式类似。详细架构见表1。
表2中的结果表明,更深的34层普通网络的验证错误率高于较浅的18层普通网络。为了揭示原因,在图4(左)中,我们比较了它们在训练过程中的训练/验证错误。我们观察到了退化问题——34层的普通网络在整个训练过程中具有更高的训练误差,尽管18层普通网络的解空间是34层普通网络解空间的子空间。
我们认为这种优化困难不太可能是由梯度消失引起的。这些普通网络是使用BN[16]训练的,这确保了前向传播的信号具有非零方差。我们还验证了使用BN时,反向传播的梯度具有健康的范数。因此,前向和反向信号都不会消失。实际上,34层的普通网络仍然能够达到具有竞争力的精度(表3),这表明求解器在一定程度上起作用。我们推测,深度普通网络可能具有指数级低的收敛速度,这影响了训练误差的降低3。这种优化困难的原因将在未来进行研究。
残差网络。接下来,我们评估了18层和34层的残差网络(ResNets)。基线架构与上述普通网络相同,只是像图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右与左相比)。当网络“不是太深”(这里是18层)时,当前的SGD求解器仍然能够为普通网络找到好的解决方案。在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。
恒等与投影快捷连接。我们已经表明,无参数的恒等快捷连接有助于训练。接下来,我们研究投影快捷连接(式(2))。在表3中,我们比较了三个选项:(A)使用零填充快捷连接来增加维度,并且所有快捷连接都是无参数的(与表2和图4右相同);(B)使用投影快捷连接来增加维度,其他快捷连接是恒等的;(C)所有快捷连接都是投影。
表3表明,所有三个选项都比普通网络好得多。B比A略好。我们认为这是因为A中零填充的维度确实没有进行残差学习。C比B略好,我们将其归因于许多(十三个)投影快捷连接引入的额外参数。但是A / B / C之间的微小差异表明,投影快捷连接对于解决退化问题不是必不可少的。因此,为了减少内存/时间复杂度和模型大小,我们在本文的其余部分不使用选项C。恒等快捷连接对于下面介绍的瓶颈架构特别重要,因为不增加其复杂度。
更深的瓶颈架构。接下来,我们描述我们用于ImageNet的更深网络。由于我们对能够承担的训练时间的担忧,我们将构建块修改为瓶颈设计4。对于每个残差函数F,我们使用三层堆栈而不是两层(图5)。这三层是1×1、3×3和1×1卷积,其中1×1层负责减少然后增加(恢复)维度,使3×3层成为具有较小输入/输出维度的瓶颈。图5展示了一个示例,其中两种设计具有相似的时间复杂度。
无参数的恒等快捷连接对于瓶颈架构特别重要。如果图5(右)中的恒等快捷连接被投影替换,可以证明时间复杂度和模型大小会加倍,因为快捷连接连接到两个高维端。因此,恒等快捷连接导致瓶颈设计的模型更高效。
50层的ResNet:我们将34层网络中的每个两层块替换为这个三层瓶颈块,从而得到一个50层的ResNet(表1)。我们使用选项B来增加维度。这个模型具有38亿FLOPs。
101层和152层的ResNets:我们通过使用更多的三层块来构建101层和152层的ResNets(表1)。值得注意的是,尽管深度显著增加,但152层的ResNet(113亿FLOPs)仍然比VGG - 16/19网络(153/196亿FLOPs)具有更低的复杂度。
50/101/152层的ResNets比34层的ResNets具有更高的精度(表3和4)。我们没有观察到退化问题,因此从深度的显著增加中获得了显著的精度提升。深度的好处在所有评估指标中都得到了体现(表3和4)。
与最先进方法的比较。在表4中,我们与以前的最佳单模型结果进行了比较。我们的基线34层ResNets已经达到了非常有竞争力的精度。我们的152层ResNet的单模型top - 5验证错误率为4.49%。这个单模型结果优于以前的所有集成结果(表5)。我们组合了六个不同深度的模型来形成一个集成(在提交时只有两个152层的模型)。这导致在测试集上的top - 5错误率为3.57%(表5)。这个结果在ILSVRC 2015中获得了第一名。
4.2 CIFAR - 10和分析
我们在CIFAR - 10数据集[20]上进行了更多研究,该数据集由10个类别的5万张训练图像和1万张测试图像组成。我们展示了在训练集上训练并在测试集上评估的实验。我们的重点是极深网络的行为,而不是推动最先进的结果,因此我们有意使用如下简单的架构。
普通/残差架构遵循图3(中/右)的形式。网络输入是32×32的图像,减去了每个像素的平均值。第一层是3×3卷积。然后,我们使用一堆6n层的3×3卷积在大小为{32, 16, 8}的特征图上,每个特征图大小有2n层。滤波器的数量分别为{16, 32, 64}。子采样是通过步幅为2的卷积来执行的。网络以全局平均池化、10路全连接层和softmax结束。总共有6n + 2个堆叠的加权层。下表总结了架构:
输出图大小 | 32x32 | 16x16 | 8x8 |
---|---|---|---|
#层 | 1 + 2n | 2n | 2n |
#滤波器 | 16 | 32 | 64 |
当使用快捷连接时,它们连接到3×3层的对(总共3n个快捷连接)。在这个数据集上,我们在所有情况下都使用恒等快捷连接(即选项A),因此我们的残差模型与普通对应模型具有完全相同的深度、宽度和参数数量。
方法 | 结果 | ||
---|---|---|---|
Maxout[10] | |||
NIN[25] | |||
DSN[24] | |||
#层 | #参数 | ||
FitNet[35] | 19 | 2.5M | 8.39 |
Highway[42, 43] | 19 | 2.3M | 7.54(7.72±0.16) |
Highway[42, 43] | 32 | 1.25M | 8.80 |
ResNet | 20 | 0.27M | 8.75 |
ResNet | 32 | 0.46M | 7.51 |
ResNet | 44 | 0.66M | 7.17 |
ResNet | 56 | 0.85M | 6.97 |
ResNet | 110 | 1.7M | 6.43(6.61±0.16) |
ResNet | 1202 | 19.4M | 7.93 |
表6. CIFAR - 10测试集上的分类错误。所有方法都使用了数据增强。对于ResNet - 110,我们运行了5次,并展示了“最佳(均值±标准差)”,如[43]所示。
我们使用0.0001的权重衰减和0.9的动量,并采用[13]中的权重初始化和BN[16],但不使用dropout。这些模型在两个GPU上使用128的小批量大小进行训练。我们从0.1的学习率开始,在32k和48k迭代时除以10,并在64k迭代时终止训练,这是在45k/5k的训练/验证分割上确定的。我们遵循[24]中简单的数据增强进行训练:在每边填充4个像素,并从填充后的图像或其水平翻转中随机采样一个32×32的裁剪。对于测试,我们只评估原始32×32图像的单视图。
我们比较了n = {3, 5, 7, 9}×,导致了20、32、44和56层的网络。图6(左)展示了普通网络的行为。深度普通网络受到深度增加的影响,并且在更深时表现出更高的训练误差。这种现象与ImageNet(图4,左)和MNIST(见[42])上的类似,表明这种优化困难是一个基本问题。
图6(中)展示了ResNets的行为。也与ImageNet的情况类似(图4,右),我们的ResNets设法克服了优化困难,并在深度增加时展示了精度的提升。
我们进一步探索了n = 18,这导致了一个110层的ResNet。在这种情况下,我们发现初始学习率0.1稍微太大,无法开始收敛5。因此,我们使用0.01来预热训练,直到训练误差低于80%(约400次迭代),然后回到0.1并继续训练。其余的学习计划如前所述。这个110层的网络收敛良好(图6,中)。它比其他深度薄的网络(如FitNet[35]和Highway[42])具有更少的参数(表6),但仍然处于最先进的结果之中(6.43%,表6)。
对层响应的分析。图7展示了层响应的标准偏差(std)。响应是每个3×3层的输出,在BN之后和其他非线性(ReLU/加法)之前。对于ResNets,这个分析揭示了残差函数的响应强度。图7表明,ResNets通常比它们的普通对应网络具有更小的响应。这些结果支持我们的基本动机(第3.1节),即残差函数可能通常比非残差函数更接近零。我们还注意到,更深的ResNet具有更小的响应幅度,如图7中ResNet - 20、56和110的比较所示。当有更多层时,ResNets的单个层倾向于更少地修改信号。
探索超过1000层。我们探索了一个超过1000层的激进深度模型。我们设置n = 200,这导致了一个1202层的网络,该网络按照上述描述进行训练。我们的方法没有显示出优化困难,并且这个103层的网络能够实现训练误差<0.1%(图6,右)。它的测试误差仍然相当好(7.93%,表6)。
但是,对于这样的激进深度模型仍然存在开放问题。这个1202层网络的测试结果比我们的110层网络差,尽管它们具有相似的训练误差。我们认为这是由于过拟合。对于这个小数据集,1202层的网络可能不必要地大(19.4M)。为了在这个数据集上获得最佳结果,应用了如maxout[10]或dropout[14]等强正则化([10, 25, 24, 35])。在本文中,我们不使用maxout/dropout,只是通过设计深度薄的架构来简单地施加正则化,而不会分散对优化困难的关注。但是结合更强的正则化可能会改善结果,我们将在未来进行研究。
4.3 PASCAL和MS COCO上的目标检测
我们的方法在其他识别任务上具有良好的泛化性能。表7和8展示了在PASCAL VOC 2007和2012[5]以及COCO[26]上的目标检测基线结果。我们采用Faster R - CNN[32]作为检测方法。在这里,我们感兴趣的是用ResNet - 101替换VGG - 16[41]的改进。使用这两个模型的检测实现是相同的,因此增益只能归因于更好的网络。最值得注意的是,在具有挑战性的COCO数据集上,我们在COCO的标准指标(mAP@[.5,.95])上获得了6.0%的增加,这是28%的相对改进。这一增益仅仅是由于学习到的表示。
基于深度残差网络,我们在ILSVRC和COCO 2015竞赛的几个赛道中获得了第一名:ImageNet检测、ImageNet定位、COCO检测和COCO分割。详细信息见附录。