ResNet —— Deep Residual Learning for Image Recognition

                                               ResNet

原文:https://arxiv.org/pdf/1512.03385.pdf

摘要

更深的神经网络更难训练。 我们提出了一个残差学习框架,以减轻网络训练的负担,这些网络比以前使用的网络要深得多。我们明确地将这些层重新定义为根据参考层的输入来学习残差函数,而不是学习无参考的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从深度增加中获得准确性的提高。 在ImageNet数据集上,我们评测了深度达152层的残差网络,其深度是VGG网络8倍[40],却仍然有着相对较低的复杂度。 这些残差网络的集合在ImageNet测试集上取得了3.57%的错误率,这一成绩赢得了ILSVRC 2015分类任务的第一名。我们也在CIFAR-10上分析了100层和1000层的残差网络。

表示的深度对于许多视觉识别任务来说至关重要。 完全是因为我们的网络有着极其深的表示,我们在COCO目标检测数据集上才能获得了28%的改进。 深度残差网络是我们提交ILSVRC&COCO 2015比赛的基础,我们还在ImageNet检测,ImageNet定位,COCO检测和COCO分割任务中赢得了第一名。

1.介绍

深度卷积神经网络[22,21]为图像分类带来了一系列突破[21,50,40]。 深度网络自然地以端到端的多层方式集成了低/中/高级特征[50]和分类器,并且特征的“级别”可以通过堆叠层数(深度)来丰富。 最近的证据[41,44]表明,网络深度是至关重要的,并且具有挑战性的ImageNet数据集[35]上领先的结果[41,44,13,16]都利用了“非常深”[40]模型, 深度从16[41]至30[16]。 许多其他重要的视觉识别任务[8,12,7,32,27]也从非常深的模型中获益匪浅。

受深度的重要性的驱动,引发了这样一个问题:学习更好的网络就像堆叠更多层一样简单吗? 回答这个问题的一个障碍是著名的梯度消失/爆炸的问题[14,1,8],它从一开始就妨碍了收敛。 然而,这个问题主要通过标准初始化层(normalized initialization )[23,8,36,12]和中间的标准化层(intermediate normalization layers)[16]来解决,这使得数十层的网络能通过具有反向传播的随机梯度下降(SGD)开始收敛。

当更深的网络能够开始收敛时,就会出现退化问题:随着网络深度的增加,准确度变得饱和(这可能不令人意外),然后迅速退化。 出乎意料的是,这种退化不是由过度拟合引起的,并且向适当深度的模型中添加更多层会导致更高的训练误差,如[10,41]中所报告并且我们的实验已经充分验证。 图1显示了一个典型的例子。

(训练准确率的)退化表明并非所有系统都同样易于优化。 让我们考虑一个较浅的架构,和一个在较浅架构上添加更多层而构成的更深层的架构。 构建更深的模型的一个解决方案是:增加的层是恒等映射,而其他层是从已经训练好的浅层模型复制来的。 这种构建解决方案的存在表明,深层模型不应该比浅层模型产生更高的训练误差。 但是实验表明,我们目前已有的方案无法找到与这种构建解决方案相当或比之更好的解决方案(或在合理时间内无法做到)。

在本文中,我们通过引入深度残差学习框架来解决退化问题。我们明确地让这些层拟合残差映射,而不是希望每几个堆叠的层直接拟合期望的基础映射。 形式上,将期望的基础映射表示为H(x),我们让堆叠的非线性层拟合另一个映射F(x):= H(x)-x。 那么原来的基础映射H( x )重写为F(x)+ x。 我们假设优化残差映射比优化原来无参考的映射更容易。 极端情况下,如果恒等映射是最优的,那么将残差逼近零比通过一堆非线性层拟合恒等映射更容易。

公式F(x) + x 可以通过具有“捷径连接”(shortcut connections)的前馈神经网络来实现(图2)。捷径连接[2,34,49]是那些跳过一层或多层的连接。在我们的例子中,捷径连接只需执行恒等映射,并将其输出添加到堆叠层的输出中(图2)。恒等捷径连接不会增加额外的参数和计算复杂性。整个网络仍然可以通过反向传播的SGD进行端对端训练,并且可以在不修改求解器的情况下使用公共库(例如Caffe [19])轻松实现。

我们在ImageNet上进行了综合全面的实验[36]来展示退化问题并评估我们的方法。我们表明: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. 相关工作

剩差表示。在图像识别中,VLAD [18]是一个用残差向量对字典进行编码的表示形式,Fisher Vector [30]可以表示为VLAD的概率形式[18]。它们都是图像检索和分类中强大的浅层表示[4,48]。向量量化,编码残差向量[17]被证实比编码原始向量更有效。

在低级视觉和计算机图形学中,为了求解偏微分方程(PDE),广泛使用的Multigrid方法[3]将系统重构为多尺度的子问题,其中每个子问题负责对较粗的和较细的尺寸间的残差解。Multigrid的一种替代方法是层次化预处理([45,46],它依赖于代表两个尺度之间的残差向量的变量。[3,45,46]已经表明,这些求解器比不知道解的残差性质的标准求解器收敛速度要快得多。这些方法表明良好的重构或预处理可以简化优化。

捷径连接。促成捷径连接的实践和理论[2,34,49]已经被研究了很长的时间。训练多层感知器(MLP)的早期实践是添加一个从网络输入连接到输出的线性层[34,49]。在[44,24]中,几个中间层直接连接到辅助分类器,以解决梯度消失/爆炸问题。 论文[39,38,31,47]提出了通过捷径连接实现层间响应,梯度和传递错误的方法。在[44]中,“Inception”层由一个捷径分支和几个更深的分支组成。

与我们的工作同时,“高速网络”(highwar networks)[42,43]提出了门控[15]功能的捷径连接。这些门依赖于数据并且具有参数,这与我们的无参数的恒等捷径不同。当门控捷径“闭合”(逼近零)时,高速网络中的层代表非残差函数。相反,我们的公式总是学习残差函数;我们的恒等捷径永远不会关闭,并且所有信息总是通过,还有额外的残差函数需要学习。另外,高速网络在深度非常深的情况下(例如超过100层)没有表现出准确性的提高。
 

3.深度残差学习

3.1 残差学习

让H(x)作为由若干堆叠层(不一定是整个网络)拟合的基础映射,其中x表示这些层中的第一层的输入。如果假设多个非线性层可以渐近地近似复杂函数,那么这就等于假设它们可以渐近地逼近残差函数——H(x) - x(假设输入和输出是尺寸相同)。因此,我们明确地让这些层逼近残差函数F(x):= H(x) - x,而不是期望让堆叠层逼近H(x)。原来的函数因此变成F(x)+ x。尽管两种形式都应该能够渐近地接近理想的函数(如同假设),但学习的难易度可能不同。

关于退化问题的反直觉现象激发了这种重构(图1,左图)。正如我们在引言中所讨论的那样,如果增加的层可以被构建为恒等映射,那么更深的模型应该具有不超过其较浅的版本的训练错误率。退化问题表明,求解器在通过多个非线性层来近似恒等映射方面可能有困难。利用残差学习重构,如果恒等映射是最优的,那么求解器可以简单地将多个非线性层的权重逼近零以接近恒等映射。

实际上,恒等映射不太可能是最佳的,但我们的重构将有助于对此问题做预处理。如果最优函数比零映射更接近恒等映射,那么求解器根据输入的恒等映射会更容易发现扰动,而不是将其作为一个全新的函数来学习。我们通过实验(图7)表明,学习的残差函数通常具有较小的响应,这表明恒等映射提供了合理的预处理。

3.2 捷径恒等映射

我们将残差学习应用到每一组堆叠层。 一个构建模块如图2所示。在本文中,我们把一个构建模块定义为:

这里x和y是层的输入和输出向量。函数 表示要学习的残差映射。对于图2中具有两层的示例, 其中σ表示ReLU [29],为简化注释省略了偏差。操作F + x通过捷径连接并进行逐元素相加得到。在在加法后使用第二次非线性映射(即σ(y),见图2)。

公式(1)中的捷径连接既不涉及外部参数也没有增加计算复杂度。这不仅在实践中很有吸引力,而且在我们对普通网络和残差网络进行比较时也很重要。我们可以公平地比较具有相同数量的参数,深度,宽度和计算成本(除了可忽略的元素相加操作)的简单/残差网络。

公式(1)中x和F的维数必须相等。如果不相等(例如,当改变输入/输出通道时),我们可以通过捷径连接执行线性投影Ws以匹配尺寸

我们也可以使用方程(1)中方阵Ws。 但是我们将通过实验证明,恒等映射足以解决退化问题而且开销更少,因此Ws仅在匹配维度时使用。

残差函数F的形式是灵活的。 本文中的实验涉及具有两层或三层的函数F(图5),但使用更多层也是可以的。 但是如果F只有一层,公式(1)与线性层相似: ,我们没有观察到这种情况的任何优势。

我们还注意到,尽管为了简单起见上述符号是关于全连接层,但它们也适用于卷积层。 函数 可以表示多个卷积层。 元素相加是在按照通道对应的两个特征图上执行的。
 

3.3 网络架构

我们已经测试了各种普通/残差网络,并观察到一致的现象。为了提供讨论的实例,我们在下文描述两个在ImageNet上训练的模型。

普通网络。我们的普通基准网络(图3,中)主要受VGG网络[41]的设计哲学启发(图3左)。卷积层主要有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图尺寸,层具有相同数量的滤波器; (ii)如果特征图大小减半,则滤波器的数量加倍以保持每层的时间复杂度。我们采用步幅为2的卷积层直接执行下采样。网络以全局平均池化层和具有softmax的1000路全连接层结束。图3(中)的权重层总数为34。

值得注意的是,我们的模型比VGG网络有更少的过滤器和更低的复杂性[41](图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亿FLOPs)。右:具有34个参数层的残差网络(36亿FLOPs)。带点状的快捷连接增加了维度。表1显示了更多细节和其它变种。

3.4 实现

我们的ImageNet实现遵循[21,40]中的实践。图片根据短边等比例缩放,在[256,480]区间的尺寸随机采样以进行尺度增强[40]。从图像或其水平翻转中随机采样224×224的裁剪块,把它的每个像素都减去平均值[21]。采用[21]中的标准颜色增强方法。我们在每次卷积之后和激活之前采用批量标准化(BN) [16]。我们按照[12]初始化权重,并从头开始训练所有普通/残差网络。我们使用SGD,设置最小批量为256。学习率从0.1开始,在误差平稳时除以10,对各模型进行了长达60万次迭代训练。我们设置权重衰减为0.0001,动量参数为0.9。按照[16]的做法,我们不使用dropout[13]。

在测试中,为了进行比较研究,我们采用标准的10-crop测试[21]。为了获得最佳结果,我们采用[40,12]中的全卷积形式,并在多个尺度(调整图像的大小,使其短边在{224,256,384,480,640}中)上的结果进行平均。

表1. ImageNet架构。构建块显示在括号中(也可看图5),还有构建块的堆叠数量。下采样通过步长为2的conv3_1, conv4_1和conv5_1执行

4.实验

4.1 ImageNet分类

我们在具有1000个类的ImageNet 2012分类数据集[35]上评估我们的方法。模型在128万训练图像上进行训练,并在50k验证图像上进行评估。我们还获得了测试服务器报告的100k测试图像的最终结果。我们评估top-1和top-5的错误率。

普通网络。我们首先评估18层和34层普通网络。图3(中)是34层普通网络,而 18层普通网络与之类似。有关详细体系结构,请参见表1。

表2中的结果表明,较深的34层普通网比较浅的18层普通网具有更高的验证误差。为了揭示原因,在图4(左)中,我们比较了他们在训练过程中的训练/验证错误。我们观察到了退化问题 - 尽管18层普通网络的解空间是34层普通网络的子空间,但34层普通网络在整个训练过程中具有更高的训练误差。

表2. ImageNet验证集上的Top-1错误率(%,10个裁剪图像测试)。与对应的普通网络相比,ResNet没有额外的参数。图4显示了训练的过程。

图4. 在ImageNet上训练。细曲线表示训练误差,粗曲线表示中心裁剪图像的验证误差。左:18层和34层的普通网络。右:18层和34层的ResNet。在本图中,残差网络与相应的简单网络比较,没有额外的参数。

我们认为这种优化难度不大可能是由剃度消失引起的。这些普通网络用BN [16]进行训练,这可以确保正向传播的信号具有非零方差。我们还验证了反向传播的梯度,结果符合BN的正常规范内。所以正向和反向信号都不会消失。事实上,34层普通网仍然能够达到有竞争力的准确性(表3),表明求解器在一定程度上起作用。我们推测,深度普通网络可能具有指数级低的收敛速度,这会影响训练误差的减少。我们将在研究这种优化困难的原因。

表3. 在ImageNet验证集上的错误率(%,10-crop 测试)。VGG16是基于我们的测试结果的。ResNet-50/101/152的选择B仅使用投影增加维度。
 

残差网络。接下来我们评估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)。这种比较验证了极深系统的残差学习的有效性。

最后,我们还注意到,18层普通/残差网络的准确度相当(表2),但18层ResNet更快地收敛(图4右侧与左侧)。当网络“不太深”(这里是18层)时,当前的SGD求解器仍然能够找到普通网络的良好的解。在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。

恒等捷径VS投影捷径。我们已经证明,无参数恒等捷径连接有助于训练。接下来我们研究投影捷径(公式(2))。在表3中,我们比较了三种选择:(A)用零填充捷径捷径增加尺寸,所有捷径连接均无参数(与右表2和图4相同); (B)投影捷径用于增加尺寸,其他捷径是恒等; (C)所有捷径都是投影。

表3显示,所有三个选项都比相应的普通网络好得多。 B稍好于A.我们认为这是因为A中的零填充维数确实没有残差学习。 C稍好于B,我们将其归因于许多(13个)投影捷径连接引入的额外参数。但是A / B / C之间的小差异表明投影捷径对解决退化问题并不重要。所以我们在本文其余部分不使用选项C,这样可以减少内存/时间复杂度和模型大小。恒等捷径连接对于不增加下面介绍的瓶颈体系结构的复杂性非常重要。

更深的瓶颈架构。接下来我们介绍一下ImageNet的更深层次的网络。由于担心需要承受的训练时间,我们将构建模块修改为瓶颈设计。对于每个残差函数,我们使用3层而不是2层(图5)。三层是1×1,3×3和1×1的卷积,其中1×1层负责减小和增加(恢复)尺寸,使得3×3层成为具有较小输入/输出尺寸的瓶颈。图5显示了一个例子,其中两个设计具有相似的时间复杂度。

图5. ImageNet的更深层残余函数F. 左图:ResNet34的构建块(位于56×56特征图上)如图3所示。 右图:RESNET-50/101/152中的“瓶颈”构建块。

无参数恒等捷径连接对于瓶颈架构尤为重要。如果将图5(右)中的恒等捷径连接替换为投影,可以看到时间复杂度和模型大小加倍,这是因为该捷径连接连到两个高维度末端。所以恒等捷径连接可以为瓶颈设计提供更高效的模型。

50层ResNet:我们用这个3层瓶颈块替换34层网络中的所有的2层块,产生50层ResNet(表1)。我们使用选项B来增加维度。这个模型有38亿FLOPs。

101层和152层ResNet:我们使用更多的3层块(表1)构建101层和152层ResNets。值得注意的是,虽然深度显着增加,但152层ResNet(113亿个FLOPs)的复杂性仍然低于VGG-16/19网络(15.3 / 196亿个FLOPs)。

50/101/152层的ResNets比34层的ResNets更精确(表3和表4)。我们没有观察到退化问题,因此可以从深度上显着增加而获得准确度的提高。所有评估指标都体现了深度的好处(表3和表4)。

与最先进的方法进行比较。在表4中,我们将与以前的最佳的单模型结果比较。我们的基准34层ResNets已经实现了非常有竞争力的准确性。我们的152层ResNet单模型具有4.49%的top-5验证错误。这种单模型结果优于以前的所有的综合模型的结果(表5)。我们将六个不同深度的模型组合在一起(在提交时只有两个152层模型)形成一个综合模型。这在测试集上获得了3.57%的top-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]中的权重初始化,但没有使用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(见[41])类似,表明这样的优化难度是一个根本的问题。

图6(中)展示了残差网络的表现。跟用Imagenet做实验时表现的差不多(图4右),我们残差网络就克服了优化困难的问题,并且做到了让精度随着深度增加而增加.

图6. 在CIFAR-10上训练。虚线表示训练误差,粗线表示测试误差。左:普通网络。没有展示普通的110层网络错误率超过60%的部分。中间:ResNet。右:110层ResNet和1202层ResNet。

们进一步研究了n=18的情况,这个对应了110层的残差网络。在这种情况下,我们发现0.1的初始学习率稍大,导致不能收敛。因此,我们使用0.01的学习率开始训练,直到训练误差低于80%(大约400次迭代),然后把学习率设回0.1并继续训练。其余的学习过程与以前的一样。这个110层网络收敛良好(图6,中间)。它比其他深且窄的网络(如FitNet [34]和Highway [41](表6))的参数更少,但仍得到最先进的结果(6.43%,表6)。

层响应分析。图7显示了层响应的标准偏差(std)。响应指的是每个3×3层的输出,它在BN之后和其他非线性(ReLU /加法)之前。对于ResNets,这个分析揭示了残差函数的响应强度。图7显示ResNets的响应总体上比相映的普通网络小。这些结果支持我们的基本动机(Sec.3.1),即残差函数可能比非残差函数更接近零。我们还注意到ResNet的深度越大,响应的幅度越小,如图7中ResNet-20,56和110的比较所证明。当层数更多时,单独的ResNets层往往会更少地修改信号。

表6. CIFAR-10测试集上的分类错误。 所有的方法都使用了数据增强。 对于ResNet-110,按照[43]我们运行了5次,并显示“最佳(平均值±标准差)”。
 

研究超过1000层的网络。我们探索超过1000层的过深的模型。我们把n设成200,这对应了1202层的网络,按照上文所述进行训练。我们的方法没有显示出优化的困难,并且该层网络能够实现<0.1%的训练误差(图6,右)。它的测试错误仍然相当不错(7.93%,表6)。

但是,这种过深的模型仍然存在一些问题。这个1202层网络的测试结果比我们的110层网络差,尽管两者都有类似的训练错误。我们认为这是因为过拟合。对于这个小数据集,1202层网络可能不必要地大(19.4M)。在数据集上应用强大的正则化如maxout [9]或dropout [13]来获得最佳结果([9,25,24,34])。在本文中,我们不使用maxout / dropout,只是通过设计的深且窄的架构,进行简单的正则化,而不会偏离优化困难上的主要问题上。但结合更强的正则化可能会改善结果,我们将在未来研究。

4.3 PASCAL和MS COCO上的对象检测

我们的方法在其他识别任务上具有良好的泛化性。表7和表8显示了PASCAL VOC 2007和2012 [5]和COCO [26]的目标检测基准结果。我们采用Faster R-CNN [32]作为检测方法。这里我们感性趣的是对用ResNet-101替代VGG-16 [40]的改进。使用这两种模型的检测实现(请参阅附录)是相同的,所以收益只能归因于更好的网络结构。最显着的是,在具有挑战性的COCO数据集中,我们获得了比COCO标准指标(mAP @ [.5,.95])提升了6.0%,相对提高了28%。这种收益完全归功于学习到的表征。

基于深度残差网络,我们在ILSVRC&COCO 2015比赛中赢得了多个赛道的第一名:ImageNet检测,ImageNet定位,COCO检测和COCO分割。更多细节请看附录。


作者:深度智能
链接:https://zhuanlan.zhihu.com/p/36967285
来源:知乎

猜你喜欢

转载自blog.csdn.net/qq_41251963/article/details/108631477