英文原文:《Deep Residual learning for Image Recognition》
中文翻译:用于图像识别的深度残差学习 何恺明
摘要
更深的神经网络更难以训练。我们提出了一个残差学习框架来减轻网络的训练,这些网络比以前使用的网络要深得多。我们明确地将层次重新定义为参照层次输入学习残差功能,而不是学习未引用的功能。我们提供全面的经验证据,显示这些残留网络更容易优化,并且可以从深度增加中获得准确性。在ImageNet数据集上,我们评估了深度达152层的残余网络,其深度比VGG网络深8倍,但仍然具有较低的复杂度。这些残差网络的集合在ImageNet测试集上达到3.57%的误差。这一成绩赢得了ILSVRC 2015分类任务的第一名。我们还分析了100和1000层的CIFAR-10。
网络表示的深度对于许多视觉识别任务来说具有核心重要性。仅仅由于我们对深层的表示,我们对COCO目标检测数据集获得了28%的相对改进。深度残留网络是我们提交ILSVRC&COCO 2015比赛的基础,我们还在ImageNet检测,ImageNet本地化,COCO检测和COCO分割任务中赢得了第一名。
1.引言
深卷积神经网络[22,21]已经为图像分类带来了一系列突破[21,49,39]。深度网络自然地以端到端的多层方式集成了低/中/高级特征[49]和分类器,并且特征的“水平”可以通过堆叠层数(深度)来丰富。最近的证据[40,43]揭示了网络深度是至关重要的,并且在具有挑战性的ImageNet数据集[36]中的主要结果[40,43,12,16]都利用“非常深”的[40]模型,深度十六[40]至三十[16]。许多其他非平凡的视觉识别任务[7,11,6,32,27]也从非常深的模型中获益匪浅。
受深度意义的驱动,出现了一个问题:学习更好的网络就像堆叠更多层一样简单吗?回答这个问题的一个障碍是臭名昭著的消失/爆发梯度问题[1,9],这阻碍了从一开始的融合。然而,这个问题已经基本上通过归一化初始化[23,8,36,12]和中间归一化层[16]来解决,这使得具有数十个层的网络开始收敛以用于反向传播的随机梯度下降(SGD)[22]。
当更深的网络能够开始收敛时,就会出现退化问题:随着网络深度的增加,准确度变得饱和(这可能不令人意外),然后迅速退化。出乎意料的是,这种退化不是由过拟合引起的,并且向适当深度的模型中添加更多层会导致更高的训练错误,如[10,41]中所报告并且我们的实验已经完全验证。图1显示了一个典型的例子。
图1:在20层和56层纯网络的CIFAR-10上,训练误差(左)和测试误差(右)。网络越深,训练误差越大,测试误差越大,在ImageNet上类似的现象如图4所示
退化(训练准确性)表明并非所有系统都同样易于优化。让我们考虑一个更浅的架构和更深层次的架构,在其上添加更多层。在深层模型中存在一个解决方案:增加的层是恒等映射,其他层是从学习的浅层模型复制的。这个构建的解决方案的存在表明,深层模型不应该比浅层模型产生更高的训练误差。但是实验表明,我们目前的求解器无法找到比构建的解决方案相当好或更好的解决方案(或在可行时间内无法这样做)。
在本文中,我们通过引入深度残差学习框架来解决退化问题。除了希望每个堆叠层都直接适合所需的底层映射外,我们明确地让这些层适合残差映射。形式上,将期望的底层映射表示为H(x),我们让堆叠的非线性层适合F(x)的另一个映射:= H(x) - x。原始映射重写为F(x)+ x。我们假设优化残差映射比优化原始的,未引用的映射更容易。极端情况下,如果身份映射是最优的,那么将残差推到零比通过一堆非线性层适合身份映射更容易。
图2:残差学习:一个构件块
F(x)+ x的公式可以通过具有“捷径连接”的前馈神经网络来实现(图2)。快捷方式连接[2,33,48]是跳过一个或多个图层的连接。在我们的例子中,快捷方式连接只需执行标识映射,并将其输出添加到堆叠层的输出中(图2)。身份快捷连接既不增加额外的参数,也不增加计算复杂性。整个网络仍然可以通过反向传播以SGD进行端对端培训,并且可以使用通用库(例如Caffe [19])轻松实施,而无需修改解算器。
我们在ImageNet上展示全面的实验[35]来展示退化问题并评估我们的方法。 我们表明:1、我们极深的残余网络很容易优化,但当深度增加时,对应的“简单”网络(即简单叠加层)表现出更高的训练误差; 2、我们的深度残余网络可以通过大大增加的深度轻松获得准确性收益,产生的结果大大优于以前的网络。
类似的现象也在CIFAR-10集[20]上显示,这表明我们的方法的优化困难和影响不仅仅是类似于特定的数据集。 我们在这个数据集上提供了超过100层的成功训练模型,并探索超过1000层的模型。
在ImageNet分类数据集[35]中,我们通过非常深的残余网络获得了极好的结果。我们的152层残留网络是有史以来在ImageNet上提供的最深的网络,但仍比VGG网络复杂度低[40]。我们的团队在ImageNet测试集中出现了3.57%的前5名错误,并在ILSVRC 2015分类竞赛中获得了第一名。在其他识别任务中,这些非常深刻的表达也具有出色的泛化性能,并使我们在ILSVRC和COCO 2015比赛中进一步赢得了第一名:ImageNet检测,ImageNet本地化,COCO检测和COCO分割。这一有力证据表明,残留学习原则是通用的,我们期望它适用于其他视觉和非视觉问题。
2.相关工作
残差表示 在图像识别中,VLAD [18]是一个由残差向量对字典进行编码的表示形式,Fisher Vector [30]可以表示为VLAD的概率形式[18]。它们都是图像检索和分类的强大浅层表示[4,47]。对于矢量量化,编码残差向量[17]显示比编码原始向量更有效。
在低层视觉和计算机图形学中,对于求解偏微分方程(PDE),广泛使用的多重网格方法[3]将系统重新定义为多尺度的子问题,其中每个子问题都对残差解产生影响在较粗的和较细的比例之间。多重网格的一种替代方法是基于预定条件的分层基础[44,45],它依赖于代表两个尺度之间的残差向量的变量。已经表明[3,44,45],这些求解器比不知道解的剩余性质的标准求解器收敛得快得多。这些方法表明良好的重新配方或预处理可以简化优化。
捷径连接(跳远连接)长期以来一直在研究导致捷径的实践和理论[2,33,48]。培训多层感知器(MLP)的早期实践是添加从网络输入连接到输出的线性层[33,48]。在[43,24]中,几个中间层直接连接到辅助分类器,以解决消失/爆炸梯度。 [38,37,31,46]的论文提出了通过快捷连接来实现层中响应,梯度和传播错误的方法。在[43]中,“初始”层由一个快捷分支和几个更深的分支组成。
与我们的研究同时,“高速公路网络”[41,42]提供了与门控功能的快捷连接[15]。这些门依赖于数据并且具有参数,与我们的无参数的身份快捷键相反。当门控捷径“闭合”(逼近零)时,高速公路网络中的层代表非残余功能。相反,我们的公式总是学习剩余函数;我们的身份捷径永远不会关闭,并且所有信息总是通过,还有其他剩余功能需要学习。另外,高速公路网络还没有表现出精确度的提高,并且深度增加了很多(例如超过100层)。
3.深度残差学习
3.1残差学习
让我们考虑H(x)作为一个底层映射,以适合几个堆叠层(不一定是整个网络),其中x表示输入到这些层中的第一层。如果假设多个非线性层可以渐近逼近复杂函数,那么它就等于假设它们可以渐近地逼近残差函数,即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. (2)
我们也可以在方程(1)中使用方矩阵Ws。但是我们将通过实验证明,恒等映射足以解决退化问题并且是有效的,因此Ws仅在匹配维度时使用。
剩余函数F的形式是灵活的。本文中的实验涉及具有两层或三层的函数F(图5),而更多层也是可能的。但是,如果F只有一个层,方程(1)类似于线性层:y = W1x + x,对此我们没有观察到优势。
我们还注意到,尽管为了简单起见上述符号是关于全连接层,但它们适用于卷积层。函数F(x,{Wi})可以表示多个卷积层。元素相加是在两个特征图上逐个通道执行的。
3.3网络架构
我们测试了各种普通/残余网络,并观察到一致的现象。为了提供讨论的实例,我们描述了两个ImageNet模型,如下所示。
普通网络 我们的普通基线(图3,中)主要受VGG网络[40]的哲学启发(图3左)。卷积层主要有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,层具有相同数量的滤波器; (ii)如果特征映射大小减半,则滤波器的数量加倍以保持每层的时间复杂度。我们直接采用跨度为2的卷积层执行下采样。网络以全局平均池层和具有softmax的1000路全连接层结束。 图3(中)的加权图层总数为34。
值得注意的是,我们的模型比VGG网络有更少的卷积核和更低的复杂性[40](图3左)。我们的34层基线拥有36亿FLOP(乘加),仅为VGG-19(196亿FLOP)的18%。
残差网络 基于上述普通网络,我们插入捷径(图3,右),将网络变成其对应的残差版本。当输入和输出具有相同的尺寸时(图3中的实线快捷方式),可以直接使用恒等快捷方式(公式(1))。当尺寸增加时(图3中的虚线快捷方式),我们考虑两个选项:(A)快捷方式仍然执行恒等映射,为增加尺寸填充额外的零条目。该选项不会引入额外的参数; (B)公式(2)中的投影捷径用于匹配尺寸(通过1×1卷积完成)。对于这两个选项,当快捷键跨越两种尺寸的特征地图时,它们将以2的步。
图3:ImageNet的网络架构示例。左:参照VGG-19型号40。中间:一个34个参数层的普通网络(36亿次失败)。右:34个参数层的剩余网络(36亿次失败)。虚线捷径增加维度。表1显示了更多的细节和其他变体。
3.4实现
我们的ImageNet实现遵循[21,40]中的实践。图像的缩放比例为[256,480]中的短边随机采样,用于缩放[40]。从图像或其水平翻转中随机采样224×224的作物,每像素平均值减去[21]。使用[21]中的标准颜色增强。我们在每次卷积之后和激活之前采用批量归一化(BN)[16]。我们如[12]初始化权重,并从头开始训练所有普通/剩余网络。我们使用SGD,最小批量为256.学习率从0.1开始,在误差平稳时除以10,模型训练达60×104次迭代。我们使用0.0001的重量衰减和0.9的动量。按照[13]的做法,我们不使用辍学[16]。
在测试中,为了进行比较研究,我们采用标准的10-crop测试[21]。为获得最佳结果,我们采用[40,12]中的完全卷积形式,并在多个比例下平均得分(图像被调整大小,使得短边在{224,256,384,480,640}中)。
4.实验
4.1 ImageNet分类
我们在由1000个类组成的ImageNet 2012分类数据集[35]上评估我们的方法。这些模型在128万训练图像上进行训练,并对50k验证图像进行评估。我们还获得了测试服务器报告的100k测试图像的最终结果。我们评估top-1和top-5的错误率。
普通网络 我们首先评估18层和34层普通网。图3(中)是34层平网。 18层普通网的形式相似。详细的体系结构,请参见表1。
表1:ImageNet架构。构建块显示在方括号中(也参见图5),其中包含堆叠的块的数量。下采样由conv3 1、conv4 1和conv5 1执行,步长为2。
表2中的结果表明,较深的34层普通网比较浅的18层普通网具有更高的验证误差。为了揭示原因,在图4(左)中我们比较了训练过程中的训练/验证错误。我们观察到了退化问题 - 尽管18层普通网络的解空间是34层普通网络的子空间,但整个训练过程中34层平面网络的训练误差更高。
图4:ImageNet培训。细曲线表示训练误差,粗曲线表示中心作物的验证误差。左:18层和34层的普通网络。右图:重铺18层和34层。在这个图中,与普通网络相比,剩余网络没有额外的参数。
表2:ImageNet验证的前1个错误(%,10-crop test)。在这里,ResNets没有额外的参数,与它们的普通副本相比。图4为培训流程。
我们认为这种优化难度不大可能是由梯度消失引起的。这些普通网络用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将成功降低训练误差(图4右侧与左侧)的结果降低了前1%的误差3.5%(表2)。这种比较验证了极深系统的残差学习的有效性。
最后,我们还注意到,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的更深层次的网络。由于担心我们可以承受的训练时间,我们将构建模块修改为瓶颈设计。对于每个残差函数F,我们使用3层而不是2层(图5)。三层是1×1,3×3和1×1的卷积,其中1×1层负责减小并且随后增加(恢复)尺寸,使得3×3层成为具有较小输入/输出尺寸的瓶颈。图5显示了一个例子,其中两个设计具有相似的时间复杂度。
图5:一个更深层次的残差函数F用于ImageNet。左图:ResNet的构建块(在56 56个feature map上),如图3所示
无参恒等捷径对于瓶颈架构尤为重要。如果将图5(右)中的标识替换为投影,则可以显示时间复杂度和模型大小加倍,因为快捷方式连接到两个高维端点。所以恒等捷径可以为瓶颈设计提供更高效的模型。
50层ResNet:我们用这个3层瓶颈块替换34层网络中的每个2层块,产生50层ResNet(表1)。我们使用选项B来增加尺寸。这个模型有38亿FLOP。
101层和152层ResNets:我们使用更多的3层块构建101层和152层ResNets(表1)。值得注意的是,尽管深度显着增加,152层ResNet(113亿个FLOP)的复杂性仍然低于VGG-16/19网络(15.3 / 19.6亿FLOP)。
表3:在ImageNet验证上的错误率(%,10-crop testing)。VGG-16是基于我们的测试。ResNet-50/101/152属于选项B,只对增加的维度使用投影。
表4:在ImageNet验证集上的单模型结果的错误率(%)(测试集上的报告除外)。
50/101/152层的ResNets比34层的ResNets更精确(表3和表4)。我们没有观察到退化问题,因此可以从深度上显着增加显着的准确度。所有评估指标都体现了深度的好处(表3和表4)。
表5:总体的错误率(%)。前5个错误位于ImageNet的测试集中,由测试服务器报告。
与最先进的方法进行比较。在表4中,我们将比较以前的最佳单模型结果。我们的基线34层ResNets已经实现了非常有竞争力的准确性。我们的152层ResNet具有4.49%的单模型前5验证错误。这种单模型结果优于以前的所有集合结果(表5)。我们将六个不同深度的模型组合在一起(在提交时只有两个152层模型)。这导致测试集上的3.57%前5位错误(表5)。本条目赢得ILSVRC 2015第一名。
4.2 CIFAR-10和分析
我们对CIFAR-10数据集进行了更多的研究[20],其中包括10类的50k训练图像和10k测试图像。我们提出在训练集上训练并在测试集上评估的实验。我们关注的是极深网络的行为,而不是推动最先进的结果,所以我们故意使用如下简单的体系结构。
普通/残差体系结构遵循图3(中/右)的形式。网络输入是32×32图像,每像素平均值被减去。第一层是3×3的解决方案。然后,我们分别在尺寸为{32,16,8}的特征地图上使用3×3个控制的6n层堆栈,每个特征地图尺寸为2n个图层。过滤器的数量分别为{16,32,64}。子采样是通过以2为步长的卷积执行的。网络以全局平均池,10路完全连接层和softmax结束。总共有6n + 2个堆叠的加权层。下表总结了架构:
当使用捷径时,它们连接到3×3层(总共3n个快捷键)。 在这个数据集中,我们在所有情况下都使用恒等捷径(即选项A),所以我们的残差模型具有与普通模型完全相同的深度、宽度和参数数量。
我们使用0.0001的权重衰减和0.9的动量,并采用[12]和BN [16]中的权重初始化,但没有丢失。这些模型在两个GPU上以128个小批量进行训练。我们从0.1的学习率开始,在32k和48k迭代时将其除以10,并且以64k迭代终止训练,这是在45k / 5k训练/验证分配。我们按照[24]中的简单数据增量训练:每边填充4个像素,从填充图像或其水平翻转中随机采样32×32裁剪。对于测试,我们只评估原始32×32图像的单个视图。
表6:在CIFAR-10测试集上的分类误差。对于ResNet-110,我们运行它5次,并显示最佳(平均std),如在[42]中。
我们比较n = {3,5,7,9},导致20,32,44和56层网络。图6(左)显示了平网的行为。深层普通网的深度增加,并且在深入时表现出更高的训练误差。这种现象与ImageNet(图4左侧)和MNIST(见[41])类似,表明这种优化难度是一个基本问题。
图6(中)显示了ResNets的行为。与ImageNet案例类似(图4,右图),我们的ResNets设法克服优化难度,并在深度增加时提高准确度。
我们进一步探索导致110层ResNet的n = 18。在这种情况下,我们发现0.1的初始学习率稍大,开始收敛。因此,我们使用0.01来预热训练,直到训练误差低于80%(大约400次迭代),然后返回到0.1并继续训练。其余的学习时间表与以前一样。这个110层网络收敛良好(图6,中间)。它比其他深度和精细网络(如FitNet [34]和Highway [41](表6))的参数更少,但仍属于最先进的结果(6.43%,表6)。
图6:CIFAR-10培训。虚线表示训练错误,粗体表示测试错误。左:纯网络。plain-110的误差大于60%,不显示。中间:ResNets。右图:重铺110层和1202层。
图7:CIFAR- 10层响应的标准偏差(std)。响应为BN后和非线性前各33层的输出。顶部:图层按原来的顺序显示。底部:响应按降序排列。
表7所示。在PASCAL VOC 2007/2012测试集上使用更快的基线R-CNN绘制目标检测图(%)。有关更好的结果,请参见ap- pendix。
表8:对象检测地图(%)上的可可验证集使用基线更快的R-CNN。有关更好的结果,请参见附录。
层表现分析 图7显示了层响应的标准偏差(std)。响应是每个3×3层的输出,在BN之后和其他非线性(ReLU /加法)之前。对于ResNets,这个分析揭示了剩余函数的响应强度。图7显示ResNets的响应总体上比他们的普通对象小。这些结果支持我们的基本动机(Sec.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 [9]或dropout [13]来获得该数据集的最佳结果([9,25,24,34])。在本文中,我们不使用maxout / dropout,而仅仅是通过设计的深度和精简架构来实现规则化,而不会将注意力集中在优化的困难上。但结合更强的正规化可能会改善我们将来研究的结果。
4.3PASCAL和MS COCO上的对象检测
我们的方法在其他识别任务上具有良好的泛化性能。表7和表8显示了PASCAL VOC 2007和2012 [5]和COCO [26]的目标检测基线结果。我们采用更快的R-CNN [32]作为检测方法。在这里,我们感兴趣的是用ResNet-101取代VGG-16 [40]的改进。使用这两种模型的检测实现(请参阅附录)是相同的,所以收益只能归因于更好的网络。最显着的是,在具有挑战性的COCO数据集中,我们获得了COCO标准指标(mAP @ [.5,.95])增加6.0%,这相对提高了28%。这种收益完全是由于学习的表现。
基于深度残差网络,我们在ILSVRC&COCO 2015比赛中赢得了多个赛道的第一名:图像检测,ImageNet本地化,COCO检测和COCO分割。细节在附录中。