🌄残差网络ResNet论文翻译
2023-8-28
| 2023-8-28
0  |  阅读时长 0 分钟
type
status
password
date
slug
summary
category
URL
tags
icon
notion image

摘要

深层的神经网络越来越难以训练。我们提供了一个残差学习框架用来训练那些非常深的神经网络。我们重新定义了网络的学习方式,让网络可以直接学习输入信息与输出信息的差异(即残差),而不必学习一些无关的信息。我们提供了全面的证据来说明这种残差网络更加容易进行优化,而且随着网络层数的增加,准确率也会增加。在ImageNet的数据集中,我们证实了在深度达到152层的残差网络上(相当于VGG net的8倍),网络仍然有着较低的复杂度。这些残差网络的合集在 ImageNet的测试集上进行评测,达到了3.57%的错误率,这一结果赢得 ILSVRC 2015 分类比赛的第一名。我们同时也提供了在CIFAR-10数据集上对100层和1000层残差网络的分析。
对于许多的视觉检测目标来说,网络的深度是一个非常重要的因素。仅仅是通过对于网络深度的增加,让我们在COCO 目标检测数据集上获得了28%的性能提升。深度的残差网络是我们在 ILSVRC 和 COCO 2015两个比赛中所提交的模型的基础。我们也同时获得了ImageNet 检测,COCO检测和分割比赛的第一名。

1.介绍

深度卷积神经网络的应用在图像分类领域已经引发了一系列的突破。深度网络很自然地集成了图像中低/中/高级别的特征信息和分类器,并且是以端到端的多层形式完成的。与此同时,不同级别的特征信息可以通过增加网络层数的方式来进行丰富。最近的研究也表明网络的深度是非常重要的一部分,例如在ImageNet数据集的挑战中,排名靠前的结果无一不是使用了非常深的网络来完成的(从16层到30层)。许多其他的非常著名的视觉识别任务也从深度网络中收益很多。
由于’深度‘对于网络的重要意义,一个问题开始出现:学习深度的网络就是简单的堆叠网络的层数吗?众所周知的一个障碍是梯度的消失/爆炸问题,他们都会影响深度网络的收敛。当然,这两个问题已经被网络参数的初始化(XaiverHe初始化等)以及网络中间层的标准化(batch normalization两个方法有效的解决了,让拥有着数十层深度的网络都可以通过随机梯度下降(SGD)的方法进行反向传播。
当网络的深度变得越来越深的时候,一个关于网络‘退化’的问题又显现出来了,即随着网络层数的增加,模型的准确性开始饱和,然后迅速退化。然而令人意外的是这些退化并不是来源于“过拟合”,而且向适当深度的神经网络中增加更多的层还会导致更高的训练误差,这一点在论文以及我们自己的实验中都有证明。图1也展示了这样的例子。
图1. 20层和56层神经网络在CIFAR-10上的训练误差(左)和测试误差(右)。更深的网络拥有更大的训练误差和测试误差。相同的现象也出现在ImageNet的数据集上,如图4所示
图1. 20层和56层神经网络在CIFAR-10上的训练误差(左)和测试误差(右)。更深的网络拥有更大的训练误差和测试误差。相同的现象也出现在ImageNet的数据集上,如图4所示
网络训练精度的退化问题让我们意识到并不是所有的网络都可以比较容易的进行优化。首先,让我们来考虑一个浅层的网络和在它的一个对照组(即在它的结构的基础上添加更多层而构成的更深层的架构)。对于更深的网络的一种构建方式为所增加的层都是恒等映射层,另外其他的层则完全复制浅层网络。这种结构的直观感受是我们所构建的深层网络的训练误差应该不会高于之前的浅层网络。然而实验的结果却告诉我们,我们所构建的深层网络在训练时很难得到跟浅层网络一样的或者比浅层网络更好的结果(或在合理时间内无法做到)。
在这篇文章中,我们通过引入一种叫做’残差‘的学习框架来解决上面所提到的训练退化的问题。相对于之前的期望这些在浅层网络中增加的’新层‘可以直接拟合我们所说的恒等映射,我们让这些层直接去拟合一个残差映射。通过公式来表示的话:我们把开始期望拟合映射示为,那么现在我们想让这些新加的层去拟合另外一个映射,我们把它示为。那么开始期望拟合的映射可以表达成。我们假设这种残差映射相对于原始的映射是更加容易进行优化的;因为极端情况下,如果恒等映射是最优的,那么让残差拟合0应该比让那些新添加的非线性层拟合恒等映射更容易。
这种形式很容易在网络中通过 ’shorcut connections‘形式的前馈神经网络来实现(如图2所示)。’shorchut connection‘ 可以跳过一层或者多层来进行连接。在我们的示例中,’shorchut connection‘ 很容易的完成了恒等映射,同时,把这些输出添加到新堆叠层的输出中(如图2所示)。通过这种方式进行添加一方面没有增加额外的参数,另一方面也没有增加计算的复杂度。同时,整个网络仍然可以使用SGD和通用的库(例如Caffe [19])进行端到端的训练。
图2:残差学习:构建块
图2:残差学习:构建块
我们在ImageNet的数据集上详细的展示了训练退化问题以及我们的解决方法。我们展示了:1) 当网络深度增加的时候,普通的网络体现出更高的训练误差,而残差网络则表现的非常容易进行优化。2)随着网络层数的增加,残差网络可以很容易的获得较好的准确率,并且准确率还会高于之前的网络。
我们同时还在CIFAR-10的数据集上进行了实验,以此来说明训练退化和我们的解决方法并不是只适用于一些特定的数据集。我们成功的在这个数据集上训练了超过100层的神经网络,最高的层数到达了1000层。
我们的深度残差网络在ImageNet 分类数据集上获得了优异的成绩。尽管我们的152层残差网络是ImageNet数据集上迄今为止最深网络,却具有比VGG网络更低的复杂度。我们在ImageNet测试集上的错误率为top5-3.57%,同时也赢得了ILSVRC 2015 分类比赛的冠军。这个极其深的网络也在其他的比赛中有着出色的表现,让我们赢得了很多比赛的冠军,比如: ImageNet detection, ImageNet localization, CoCo detection 和 COCO segmentation。这些证据都表明残差网络的方法有着很好的适用性,我们期望它可以被应用在其他的视觉/非视觉的领域。

2. 相关工作

残差表示:在图像识别中,VLAD 是一个用残差向量对字典进行编码的表示形式 Fisher Vector用来表示VLAD的概率形式。他们都可以被用来非常直接的表述图像的检索和分类问题。在对图像进行向量化表示的时候,通过残差进行表示已经被证明比直接通过原始图像进行表示有着更高的效率。
在low-level的计算机视觉和计算图形学中,为了解决求偏导的问题,广泛的使用Multigrid 方法,将问题解构成不同尺度的子问题,每一个子问题则用不同粒度(从粗粒度到细粒度)的残差向量来进行表示。Multigrid的一种代替方案是层次化预处理, 它也依赖于那种用两种尺度残差表示的参数。论文[3,45,46]都证明了这种残差的方法比那么没有意识到残差性质的方法能够更快的得到收敛的结果。这些方法都表明一个好的变换或者预处理方法可以简化优化器。
捷径连接(Shortcut connection): 促成捷径连接的理论和实践已经被研究了很长时间。其中最早的实践是在训练多层感知机(MLPs)的时候,在输入和输出之间添加一个线性的连接。在论文[44, 24]中,为了解决梯度消失/梯度爆炸的问题,一小段中间层被直接连接到辅助的分类器上。论文[39, 38, 31, 47]为了解决层间相应,梯度和传播错误问题,同样也使用了捷径连接的方法。在论文[44]中,初始层是由一个捷径连接和几个更深的分支组成的。
在我们写论文的同时,’高速网络‘还提供了一个带有门功能的捷径连接。当然相对于我们这里的这种不需要额外参数的恒等捷径连接,带有门功能的捷径连接是需要依赖于数据本身和特殊参数的。比如,当门关闭的时候,整个’高速网络‘更加相当于一个没有残差的网络。相对来说,我们的方式则需要总是去学习残差,并且我们的恒等网络永远不会关闭的,因此所有的信息都会通过残差网络别学习到。另外,高速网络在深度非常深的情况下(例如超过100层)没有表现出准确性的提高。

3.深度残差学习

3.1 残差学习

让我们把当成通过几层神经网络(不一定是整个网络)拟合的输出结果,其中表示这几层神经网络的输入。如果假设多个非线性的层可以近似成一个复杂函数,那么也就可以假设他们同样可以近似拟合残差函数(假设输入和输出有着相同的维度)。所以相对于期望这段网络可以去拟合,我们则希望的让网络去拟合一个残差函数。那么原始的方程则变成了。尽管两种方式应该都可以逐渐的拟合期望函数,但是他们的难易程度应该是不同的。
这种变换方式的灵感来自于随着深度增加,网络性能退化的现象(如图1,左侧)。正如我们在’介绍‘中所讨论的,如果所添加的层可以被构造成恒等映射,那么更深的网络的网路的训练误差应该不会高于之前的浅层网络。但是训练退化问题让我们了解到网络应该很难让所添加的这些非线性层训练成恒等映射。但是在残差网路的框架下,如果恒等映射是最优的结果,那么网络应该可以简单的将非线性层的权重都变为0,从而达到拟合恒等映射的目的。
在实际情况下,恒等映射往往并不是最优的结果,但是我们的方法却有助于解决训练退化的问题。如果最优函数相对于一个全是0的映射更接近一个恒等映射,那么相对于去拟合一个新的函数,我们的这种操作更容易让求解器根据所输入的恒等映射去发现扰动。我们通过实验(图7)表明通常情况下学习残差网络会比学习普通的网络有很小的调整标准差,这也表明我们使用的恒等映射提供了很好的模型预处理。

3.2 捷径恒等映射

我们将残差学习应用到每一个小的模块中。一个模块的示例如图2所示。使用公式表示这个小模块的话:
其中x 和y为模块的输入和输出向量。函数为网络需要学习的残差映射。例如图2中所示,该模块含有两层,, 其中表示ReLu,为了简化假设,biases也被省略。关于的操作,则通过捷径连接的方式实现,进行对应位置元素的加和操作。我们在加和操作结束后,再进行第二次的非线性激活(即,见图2)。
在公式1中的捷径连接操作,即没有增加新的参数,也没有增加计算复杂度。这不仅在实际应用中具有很强的应用性,而且对于我们所进行的普通网络和残差网络的对比实验也是很重要的。因为这样的话,我们就可以公平的比较具有相同的参数,深度,宽度和计算复杂度的普通网络和残差网络。
在公式1中,的维度一定要一样,如果不一样(例如当我们改变了输入/输出的通道数),我们可以通过线性投影的方式来让他们的维度相互匹配:
我们也可以在公式(1)中使用一个矩阵。 但是我们的实验结果表明使用恒等映射足以解决退化问题而且计算开销更少,因此只会在当输入和输出的维度不匹配的时候才使用。
残差函数的形式是非常灵活的。在本文的实验中,我们分别使用了2层和3层残差网络(如图5所示),但使用更多层也是可以的。当然如果残差网络只有一层的话,那么公式(1)则近似为一个线性层: ,对此我们还没有观察到这种情况的任何优点。
我们需要说明的是尽管上面的所有的表述都是用的全连接层举例,但是这是为了方便起见,他们同样可以被部署在卷积层上。元素的相加是被应用在两个特征图像上的,他们在对应的通道上进行加和操作。

3.3 网络架构

我们在多个神经网络以及其对应的残差网络上进行了测试,他们都得到了一致的结果。为了提供实际的例证,接下来我们将使用两个在ImageNet上训练的网络进行讲解。
普通网络:我们的普通网络的架构(图3,中间)主要受到VGGnet(图3,左)的启发。其中的卷积层主要的使用3x3的过滤器,并遵循两个简单的设计规则:(i)对于相同的输出特征图尺寸,层具有相同数量的滤波器;(ii)如果特征图的尺寸减半,那么过滤器的数量则需要翻倍,用来保证层的时间复杂度。我们采用步幅为2的卷积层直接进行下采样。网络以全局平均池化层和具有1000维的全连接层(softmax)结尾。网络一共34层(如图3,中间)所示。
值得注意的是,我们的模型比VGGnet有更少的过滤器和更低的复杂性(图3左)。我们的34层基础模型有36亿浮点运算次数——FLOP(乘法和加法),这只有VGG-19(196亿FLOP浮点运算次数——FLOP)模型参数的18%。
残差网络:基于上述的普通网路,我们在其中插入捷径连接(如图3,右),则把该网络转换成了它的对照组残差网络。当输入和输出相同尺寸的时候,shortcut(公式1)可以被直接使用(图3中实线部分)。当维度增加的时候(图3中虚线部分),我们考虑了两种方案:(A)shortcut部分仍然使用恒等映射,但是对于新增加的维度则全部使用0来代替。这种方案不增加任何的参数。(B)通过公式2中所提供的线性投影的方式来匹配增加的维度(通过使用1x1的卷积的方式来实现)。对于这两种方案,当两个特征图的尺寸不一致时,都用过使用步长为2的卷积来让他们统一。
图3.在ImageNet上示例的网络结构。左:VGG-19模型(196亿浮点运算次数);中:普通网络具有34层参数(36亿浮点运算次数);右:残差网络具有34层参数(36亿浮点运算次数),其中虚线的捷径连接需要增加维度。表1列出了其他的指标和参数
图3.在ImageNet上示例的网络结构。左:VGG-19模型(196亿浮点运算次数);中:普通网络具有34层参数(36亿浮点运算次数);右:残差网络具有34层参数(36亿浮点运算次数),其中虚线的捷径连接需要增加维度。表1列出了其他的指标和参数

3.4 实现

我们在ImageNet上的部署参考了论文[21, 41]的方式。图像被进行随机缩放,缩放的方式为让它的短边在[256,480]之间进行随机采样;然后将图像随机裁剪出224x224大小,并进行随机水平方向的旋转;最后将所有的像素点减去均值。论文[21]中的标准颜色增广也被用到。我们在每次卷积和激活之间都添加了批量标准化操作(BN) [16]。我们按照论文[13]的方法初始化了网络权重,并从头开始训练普通网络/残差网络。我们使用了SGD作为优化器,并把mini-batch设置为256. 我们的学习率从0.1开始,当训练误差不减小的时候,我们将之前的学习率缩小10倍,直到模型进行了60万次迭代训练。我们所使用的权重衰减系数为0.0001,动量为0.9。我们沿用了论文[16]的方法,即没有在训练过程中使用dropout。
在测试时,为了进行比较研究,我们采用了标准的10-crop的测试方法[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(左)中,我们对比了他们在整个训练过程中的训练/验证误差。我们观察到了退化问题——尽管18层普通网络的解空间是34层普通网络的子空间,但34层普通网络在整个训练过程中表现出了更高的训练误差。
表1.网络结构. 构建模块和堆叠的数量即括号中的部分(参见图5)。下采样被应用到conv_3,conv_4,conv_5中,都是通过步长等于2来实现的。
表1.网络结构. 构建模块和堆叠的数量即括号中的部分(参见图5)。下采样被应用到conv_3,conv_4,conv_5中,都是通过步长等于2来实现的。
图4.ImageNet的训练过程。细线表示训练误差,粗线表示验证误差。左: 18层和34层的普通网络。右: 18和34层的残差网络。在此处,残差网络和普通网络的参数数量是相同的。
图4.ImageNet的训练过程。细线表示训练误差,粗线表示验证误差。左: 18层和34层的普通网络。右: 18和34层的残差网络。在此处,残差网络和普通网络的参数数量是相同的。
表2.ImageNet验证集上top-1的误差(%,10个裁剪的验证集中)。在此处,残差网络和普通网络的参数数量是相同的。图4展示了整个训练过程。
表2.ImageNet验证集上top-1的误差(%,10个裁剪的验证集中)。在此处,残差网络和普通网络的参数数量是相同的。图4展示了整个训练过程。
我们认为这种优化难题不太可能是由于梯度消失引起的。因为普通的网络在训练过程中都使用了批量标准化BN [16]操作,这确保了参数在正向传播的时候不会出现方差为0的情况。我们同样验证了由于批量标准化的使用,模型在反向传播的过程中所展示出来的梯度也是健康的。所以无论是正向传播还是反向传播都没有显示出梯度消失的问题。事实上,34层的普通网络仍然可以达到一个有竞争力的精度(如图3),这表明在一定程度上求解器还是有效果的。我们猜测,或许是由于本身更深的普通网络就具有指数级的更低的收敛速度,这或许影响了训练误差的减小。这种优化困难的原因将在未来进行研究。
残差网络。接下来,我们开始验证18层和34层的残差网络(ResNets)。同样,网络的基础架构跟上面的普通网络是类似的,只是在每一对3x3的过滤器中添加了捷径连接,如图3(右)所示。在第一组比较中(表2和图4右)中,对于所有的捷径,我们使用了恒等映射,对于所增加的维度,我们使用了0进行填充(方案A). 所以相对于普通网络,并没有增加新的参数。
在表2和图4中,我们有3个主要的发现。首先,形势随着残差学习的引入发生了逆转——34层的残差网络的错误率要优于18层残差网络(降低了2.8%)。更重要的是,34层残差网络展示了相当低的训练误差,并且可以泛化到验证集。这表明了训练退化问题通过这种设置得到了很好的解决,我们可以通过增加网络深度来获得准确率。
表3. 在ImageNet验证集上的错误率(%,10-crop 测试)。VGG16是基于我们的测试结果的。ResNet-50/101/152只使用了方案B中所说的线性投影的方式来增加维度。
表3. 在ImageNet验证集上的错误率(%,10-crop 测试)。VGG16是基于我们的测试结果的。ResNet-50/101/152只使用了方案B中所说的线性投影的方式来增加维度。
表4. 单个模型在ImageNet验证集上的错误率(%)(除了†是测试集上的错误率)。
表4. 单个模型在ImageNet验证集上的错误率(%)(除了†是测试集上的错误率)。
表5.模型综合的错误率(%),top-5错误率是在ImageNet的测试集由测试服务器所计算的结果
表5.模型综合的错误率(%),top-5错误率是在ImageNet的测试集由测试服务器所计算的结果
第二,相比对照组的普通网络,34层的残差网成功的降低了训练误差(图4.右VS左),它的top-1误差减少了3.5%(表2)。这个对照试验验证了残差在极度深的网路上的有效性。
最后,我们也注意到18层的普通网络/残差网络的准确率是相当的(表2),但是18层残差网络的收敛更加迅速(图4 右VS左)。当网络不是非常深的时候(例如这里的18层),对于普通的网络,现在所使用的SGD求解器还是可以找到一个较好的结果。在这种情况下,残差网络可以比较快的在早期的阶段就找到结果,从而简化优化过程。
图5.ImageNet中更深的残差函数。左:和图3一样,是一个在34层残差网络上使用的56x56特征图上的构建块。右:一个在ResNet50/101/152上使用的’瓶颈‘构建块
图5.ImageNet中更深的残差函数。左:和图3一样,是一个在34层残差网络上使用的56x56特征图上的构建块。右:一个在ResNet50/101/152上使用的’瓶颈‘构建块
恒等捷径VS投影捷径。我们已经证明了无参数的恒等映射可以帮助训练。接下来,我们将调查投影捷径(公式2)。在表3中,我们对比了三种方案:(A)通过使用0来填充捷径中所增加的维度,那么这种方法无需增加任何参数(和表2,图4右,所说的一致);(B)投影捷径用于所增加的那部分维度,而其他的部分保持恒等映射不变;(C)所有的捷径都采用投影捷径。
表3显示了这三种方式都要优于普通网络的对照组。其中方案B稍微好于方案A,我们认为这是由于通过0填充的维度确实没有进行残差学习所造成的。方案C勉强比方案B好一些。我们把它归因于通过投影捷径引入了额外的参数。但是方案A/B/C间的微小的差异证明了投影捷径对解决退化问题并不重要。所以为了减少内存使用,时间的复杂度和模型的大小,我们在文章的余下部分的实验中并没有使用方案C的方法。恒等映射对于下面即将要介绍的这种没有增加复杂性的瓶颈结构是非常重要的。
深度瓶颈结构。接下来,我们讲介绍在ImageNet数据集上所使用的更深的网络结构。考虑到可以负担得起的训练时间,我们把残差块的结构修改成一种瓶颈的结构。对于每一个残差函数,我们使用了一个三层的堆叠来代替之前的两层堆叠(如图5)。这个三层的卷积分别是1X1, 3X3, 1X1, 其中1X1的卷积层用来减小/扩大维度,使得3x3层成为输入/输入较小维度的瓶颈。图5显示了一个示例,其中这两种设计具有相似的时间复杂度。
无参数的恒等映射对于瓶颈结构来说尤其重要。如果恒等映射(图5,右)被替换成投影映捷径,那么时间复杂度和模型的大小将成倍增加,因为捷径连接到的是两个高维度的末端。所以恒等映射的捷径对于瓶颈模块来说更加高效。
50层残差网络:在34层的网络中,我们用3层的堆叠块代替了2层的堆叠块,最终形成的50层残差网路的结果如表1。我们使用了方案B来增加维度。这个模型拥有38亿浮点运算次数。
101层和152层残差网络:我们使用了更多的3层堆叠块,来构成了101层和152层的残差网络(表1)。值得注意的是,虽然网络的深度已经明显的增加了很多,152层的残差网络(113亿浮点运算次数)仍然比VGG16/19(153/196亿次浮点运算次数)复杂度低。
50/101/152层的ResNets比34层的ResNets更精确(表3和表4)。由于没有了训练退化问题,因此我们可以通过增加网络的深度来获得更高的准确性。 深度增加的好处在所有的评估指标上都显现了出来。
与最先进方法的比较:在表4中,我们对比了之前单一模型最好的结果。我们的34层基准模型已经可以获得非常有竞争力的准确率了。我们152层的残差网络的单模型具有4.49%的top-5验证错误率。这个单模型的性能已经超过了之前所有模型的综合结果(表5)。我们将六种不同深度的模型组合到一起(当时提交的时候只有两个152层的模型)。这个组合在测试集上获得了3.57%的top-5错误(表5)。这个模型获得了ILSVRC 2015比赛的第一名。

4.2 CIFAR-10数据集测试和分析

我们也在CIFAR-10数据集上进行了研究[20],该数据集有10个类别,其中包括5万个训练图片,1万个测试图片。我们的实验,在训练数据集上训练,在测试数据集上进行测试。由于我们的关注点是网络在极度深的情况下的表现,而不是一定要达到最高的准确率,所以我们刻意选择了结构较为简单的模型来进行实验。
普通网路和残差网路的结构如图3(中/右)所示。网络输入是32×32图像,它的每个像素减去平均值。第一层是3×3卷积。然后,我们分别在尺寸为{32,16,8}的特征图上使用3×3卷积的6n个堆栈层,每个特征图尺寸为2n层。过滤器的数量分别为{16,32,64}。下采样通过以2的步长卷积来执行。网络以全局平均池化,10维全连接层和softmax结束。总共有6n + 2个堆叠的权重层。下表总结了架构:
notion image
当使用捷径连接时,他们总共连接3x3个层对(共3n个捷径)。在这个数据集上,我们在所有的实验中都使用了恒等映射(即方案A),所以我们的残差网络相对于普通网络有着相同的深度,宽度和参数数量。
表6.在CIFAR-10测试集上的分类误差。所有的方法都使用了数据增广。ResNet110我们总共跑了5次ResNet-110模型,给出了最好的结果(均值±标准差)[43]
表6.在CIFAR-10测试集上的分类误差。所有的方法都使用了数据增广。ResNet110我们总共跑了5次ResNet-110模型,给出了最好的结果(均值±标准差)[43]
我们使用的权重衰减系数为0.0001,动量为0.9。并使用初始化方法[13]和批量标准化[16],但是没有使用dropout。这个模型在两块GPU上进行训练,所使用的mini-batch为128。我们开始使用的学习率为0.1,在第3.2万次和4.8万次迭代的时候,分别缩小了之前学习率的10倍。最终在第6.4万次迭代的时候结束了训练。网络是在4.5万/5千的训练集/验证集上训练的。我们使用了论文24的数据增广的方法:每个边padding4个像素,然后在pandding后的图像或者他的水平翻转图像上随机截取32x32的图像。在测试集上,我们只使用了原始的32x32的图像进行评估。
我们对比了n={3, 5, 7, 9},即20/32/44/56层的神经网络。图6(左)显示了普通网络的效果。随着网路的加深,普通网络出现了训练退化问题。这种现象和在ImageNet(图4左侧)上或者MNIST(见[41])上是一致的,以此可以说明训练退化问题是一个普遍存在的问题。
图6(中)展示了残差网络的表现。跟用Imagenet做实验时表现的差不多(图4右),我们残差网络就克服了优化困难的问题,并且做到了让精度随着深度增加而增加。
图6.在CIFAIR-10上的训练。虚线是训练误差,实线是测试误差。左:普通网路。110层网络的训练误差高达60%,这里没有显示。中:ResNet。右:100层和1202层的ResNet
图6.在CIFAIR-10上的训练。虚线是训练误差,实线是测试误差。左:普通网路。110层网络的训练误差高达60%,这里没有显示。中:ResNet。右:100层和1202层的ResNet
我们进一步研究了n=18的情况,以此来获得一个110层的残差网络。在这种情况下,我们发现0.1的初始学习率稍大,导致不能收敛。因此,我们使用0.01的学习率开始训练,直到训练误差低于80%(大约400次迭代),然后把学习率设回0.1并继续训练。其余的学习过程与以前的一样。最后这个110层的神经网络得到了较好的收敛(图6,中)。它比其他深且窄的网络(如FitNet [35]和Highway [42](表6))的参数更少,但仍得到最好的结果(6.43%,表6)。
图7.CIFAIR-10数据集上模型层间相应的标准差。这里的响应指的是每一个3x3的卷积层在经过批量标准化后,但是在激活函数之前的值。上图是原始的顺序;下图是经过降序后的顺序。
图7.CIFAIR-10数据集上模型层间相应的标准差。这里的响应指的是每一个3x3的卷积层在经过批量标准化后,但是在激活函数之前的值。上图是原始的顺序;下图是经过降序后的顺序。
层响应分析. 图7显示了层响应的标准差。这里的响应是指每一个3x3的卷积在进行批量标准化后,以及激活函数之前的输出值。对于残差网络来说,这个分析揭示了残差函数的响应强度。图7显示了残差网络相对于普通网络有着更小的响应强度。这个结果也佐证了我们最初的动机(3.1节所述),残差函数可能相对于非残差函数更加接近于0。我们还注意到更深的网络有着更小的响应幅度,如图7中的ResNet20/56和110层的对照。当层数增多时候,残差网路中单一的一个层往往趋向于减小对于参数的修改。
研究超过1000层的网络。我们开发了一个大于1000层的网络。我们把n设置成200,因此得到了一个1202层的网络,然后使用上面所述的方法进行训练。我们的方法显示在训练这个1000多层的网络的时候没有遇到训练退化的问题,并且他的训练误差小于0.1%(图6,右)。它的测试误差也相当的好(7.93%,表6)
但是这种极度深的网络仍然存在一些问题。尽管1202层网络的训练误差和110层网络是相似的,但是它的测试结果却要差于110层的网络。我们猜测可能是由于过拟合造成的。因为对于这样的一个小数据集,也许并不需要一个有着1202层的网路进行训练。为了获得最佳结果,在这个数据集上采用了强正则化方法,如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]作为检测的方法。我们对将VGG-16 [41]替换为ResNet-101所带来的改进非常感兴趣。对于这两种模型的部署是相同的,所以收益只能归因于模型的结构。值得庆幸的是,在COCO数据集的挑战中,我们比COCO的标准指标(mAP@[.5,.95])提升了6%,这相当于有了28%的提升。这个结果完全归功于所学习到的特征。
表7 在PASCAL VOC 2007/2012测试集上使用Faster R-CNN的目标检测mAP(%)。更好的结果请看附录。
表7 在PASCAL VOC 2007/2012测试集上使用Faster R-CNN的目标检测mAP(%)。更好的结果请看附录。
表8 在COCO验证集上使用Faster R-CNN的目标检测mAP(%)。更好的结果请看附录。
表8 在COCO验证集上使用Faster R-CNN的目标检测mAP(%)。更好的结果请看附录。
基于深度残差网络,我们在ILSVRC&COCO 2015比赛中赢得了多个赛道的第一名:ImageNet检测,ImageNet定位,COCO检测和COCO分割。更多细节请看附录。
 
  • 图像
  • Language Models are Unsupervised Multitask Learners(GPT2 2019)-翻译AlexNet论文翻译——中文版
    Loading...
    目录