摘要
深度神经网络是很难去训练的,我们提出一种残差学习网络,这种网络相对与以前的一些网络更深一些,但是更加易于训练,通过神经网络层的输入,我们明确的将神经网络层重构为讯息残差函数,而不是去学习未被引用的函数。我们可以提供全面的经验证据表明这些残差网络更加容易优化,并且可以其深度增加的时候,准确性会明显上升。在ImageNet数据集上面,我们对残差网络进行了测评,我们所使用的网络为152层,是VGG网络(19层)的八倍,但是相对于VGG网络,我们仍然取得了更低的复杂性,综合实验结果来看,我们在ImageNet测试数据集上面达到了3.57%的错误率。这个结果为了们赢得了ILSVRC2015图像分类上的第一名,我们通向在CIFAR-10数据集上面使用100层网络和1000层网络进行了分析测试。
模型的深度对于很多的视觉识别任务来说,是至关重要的。仅仅因为我们将模型网络的层数做的极其深入,我们在COCO目标检测数据集上面获得了28%的相对提升,深度残差网络也是我们提交给ILSVRC和COCO2015比赛的基础网络,同时我们也在ImageNet detection,ImageNet location,COCO detection,and COCO segmentation.
1.介绍
深度倦极神经网络在图像分类领域引领了一系列的重大突破,深度网络十分自然的将图像的 低/中/高级特征以及分类器整合到了一起,并且通过一些端到端的多层次网络结构体现出来,而且特征的“水平”可以通过堆叠层的数量来丰富,最近的证据表明神经网络的深度是十分重要的,在ImageNet挑战赛上面的那些排名比较靠前的网络都是一些层数比较多的网络,大多都是16层到30层左右。而且许多非图像识别领域的工作都也倾向于使用比较深的模型结构,
考虑到网络深度的重要性,这里提出一个问题:要想获得更好的结果,就只需要堆叠更多的网络层吗?回答这个问题的一个重大的障碍是一个臭名昭著的问题:梯度消失或梯度爆发的问题,这个问题从一开始就阻碍了融合,然而,这个问题已经在很大程度上通过标准化初始值和中间的归一化层,它似的数十层的网络通过SGD和反向传播开始收敛。
当深度网络能够开始收敛的时候,一个退化问题开始暴露出来:随着网络深度的增加,准确度开始变得饱和(这可能并不意外)接着随后就开始迅速退化。出乎意料的是,这种退化不是由过度配合和添加引起的,`更多层到适当深度的模型会导致更高的训练误差,并且通过我们的实验得到了彻底的验证,上面图一显示了一个典型的例子
这种训练正确率的退化表明并非所有的系统都同样易于优化。让我们考虑一个更前的架构和更深层次的架构,在其上添加更多层, 在深层模型中存在一个解决方案:增加的层是标准映射,其他层是从学习的浅层模型复制的。 这种构建解决方案的存在表明,深层模型不应该比浅层模型产生更高的训练误差。但是实验表明:我们目前的解决办法无法找到比以往的那些构建方法一样好或者更好的方法(或者是在短时间内无法做到)
在本论文中,我们通过引入残差学习框架来解决退化的问题,我们明确地让这些网络层适合残差映射,而不是希望每一个堆叠的网络层都直接适合所需的底层映射。从形式上来看,将所需的基础映射表示为H(x),我们让堆叠的非线性层适合另外一个映射 那么原始的映像被重写为,我们假设优化残差映射比优化更容易原始的,未引用的映射。 极端情况下,如果身份映射是最优的,那么将残差推到零比通过一堆非线性层适合身份映射更容易。
方程可以通过具有“快捷连接”的前馈神经网络来实现,快捷链接是那些跳过一个或者多个网络层,在我们的例子中,快捷连接只需执行特定的映射,并将其输出添加到堆叠层的输出中,特定的快捷连接不会增加额外的参数和计算复杂性,全部的网络仍然可以通过SGD和BP进行端到端的训练,并且可以使用通用库(例如Caffe [19])轻松实现,而不需要修改求解器。
我们在ImageNet上展示全面的实验来展示退化问题并评估我们的方法。 我们发现:1)我们非常深的残差网络很容易优化,但对应的“普通”网(即简单堆叠层)在深度增加时表现出更高的训练误差; 2)我们的深度残余网络可以通过大大增加深度来轻松获得准确性收益,产生的结果大大优于以前的网络。
类似的现象也在CIFAR-10数据集上显示,表明我们的方法的优化困难和效果不只是类似于特定的数据集。我们在这个数据集上提供了超过100层的成功训练模型,并探索 超过1000层的模型
在ImageNet分类数据集上,我们通过让网络的层数极其的深来获得极其优秀的结果,我们的152层残差网络是在Imagenet上面有史以来最深的网络模型,但是他的复杂性依然比VGG网络的复杂性低,在ImageNet上面,我们综合取得来3.57%的top-5错误率,也获得了ILSVRC2015分类比赛的第一名,网络非常的深表明它在别的识别任务上面也拥有非常出色的泛化性能,而且同时让我们在以下的比赛中获得了第一名:ImageNet detection, ImageNet localization,COCO detection, and COCO segmentation in ILSVRC &COCO 2015 competitions,这一有力证据表明,残留学习原则是通用的,我们期望它适用于其他视觉和非视觉问题。
2.相关工作
残差表达:在图像识别中,VLAD 是一个由残差向量对字典进行编码的表示形式,Fisher Vector可以表示为VLAD的概率形式。 它们都是图像检索和分类的强大浅层表示。 对于矢量量化,编码残差矢量显示比编码原始矢量更有效。
在低级视觉和计算机图形学中,为了求解偏微分方程(PDE),广泛使用的Multigrid方法[3]在多个尺度上,将该系统重新定义为子问题,其中每个子问题负责较粗糙和较细尺度之间的残差解。 多重网格的替代方法是分层基础预处理[45,46],它依赖于表示两个尺度之间残差向量的变量。 已经表明,这些解算器比标准求解器更快地收敛,而标准解算器不知道 解决方案。 这些方法表明良好的重构或预处理可以简化优化过程。
快捷链接
长期以来一直在研究导致快捷连接的实践和理论。 训练多层感知器(MLP)的早期实践是添加一个从网络输入连接到输出的线性层。 在[44,24]中,一些中间层直接连接到辅助分类器,以解决消失/爆炸梯度。本论文提出了通过快捷连接来实现层中响应,梯度和传播错误的方法。 在[44]中,“inception”层由一个快捷分支和几个更深的分支组成。
与我们的工作同时,“高速公路网络”[42,43]提供了与门控功能的快捷连接[15]。这些门是数据相关的并且具有参数,与无参数的身份快捷键相反。当门控捷径“闭合”(逼近零)时,高速公路网络中的层代表非残余功能。 相反,我们的公式总是学习剩余函数; 我们的身份捷径永远不会关闭,并且所有信息都会一直传递下去,并学习其他剩余功能。此外,高速网络没有证明网络越深,准确率就会增加,(比如....超过100层)
3.深度残差学习
----------------------------------------------------------------------------------------------------------2018-03-15
让我们考虑H(x)作为一个底层映射,以适合几个堆叠层(不一定是整个网络),其中x表示输入到这些层中的第一层。如果假设多个非线性层可以渐近地逼近复杂函数,那么相当于假设它们可以渐近地逼近残余函数。假设输入输出都是同样的维度,因此,我们明确地让这些层接近残差函数F(x):而不是期望堆叠层接近H(x):= H(x) - x,因此原始的函数可以变为虽然两种形式都应该能够渐近地接近理想的功能(如同假设),但学习的难易可能不同。
这种改写的动机是关于退化问题的一些违反直觉的现象,正如我们引言之中所讨论的那样,如果所增加的网络层可以被构建为恒等映射,那么更深层次的模型应该具有不比其较浅的对应者更大的训练错误,退化问题表明求解器可能在逼近身份映射时遇到困难通过多个非线性层。 通过剩余学习重新表达,如果身份映射是最优的,那么解算器可以简单地将多个非线性层的权重推向零以接近身份映射
在实际情况下,恒等映射不太可能是最佳的,但我们的重新配置可能有助于预先解决问题。 如果最优函数比零映射更接近恒等映射,那么解算器应该更容易参照恒等映射来找到扰动,而不是将函数学习为新函数。 我们展示通过实验(图7)通常所学习的残差函数具有较小的响应,这表明恒等映射提供了合理的预处理。
3.2快捷恒等映射
我们对每几个堆叠层采用残差学习。一个构建模块如图2所示。形式上,在本文中,我们将构建模块定义为:
这里的x和是所考虑网络层的书如何输出响亮,函数表示将要学习到的残差映射,例如在图2中,有两个网络层,其中的表示为RELU函数,同时为了简化符号省略了偏差。函数F + x通过快捷方式连接和元素相加执,
我们采用加法后的第二个非线性(即σ(y),见图2)。
公式(1)中的快捷连接没有引入额外的参数和计算复杂度。 这不仅在实践中很有吸引力,而且在我们的比较
平原网络和残差网络之中也很重要。 我们可以比较普通/残差网络同时具有相同数量的参数,深度,宽度和计算成本(除了可忽略的元素相加)。
公式(1)中x和F的维数必须相等。如果不是这种情况(例如,改变输入/输出通道时)我们可以通过执行一个线性投影Ws的快捷链接以匹配维度:(2)我们也可以在方程(1)中使用方矩阵W s。 但我们会
通过实验证明身份映射是足够的,为了解决退化问题并且是经济的,因此W s仅在匹配尺寸时使用。
残差函数形式是灵活的。 本文中的实验涉及具有两层或三层的函数F(图5),而更多层可能。 但是如果F只有一层,方程(1)与线性层相似:y = W 1 x + x,对此我们没有观察到优点。
3.3网络构造
我们已经测试过各种普通/残差网络,并且观察到了一致的现象。 为了提供讨论的实例,我们描述了两个ImageNet模型,如下所示。
Plain Network.
我们的平原基线(图3,中间)主要受VGG网络原理的启发[41](图3左)。 卷积层主要有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,网络层具有相同数量的滤波器; (ii)如果特征地图大小减半,则滤波器的数量加倍以保持每层的时间复杂度。 我们直接采用跨度为2的卷积层执行下采样。网络以全局平均池化层和具有softmax的1000路完全连接层结束。 图3(中)的加权图层总数为34。
值得注意的是,我们的模型比VGG网络有更少的过滤器和更低的复杂性[41](图3左)。 我们的34层基线有36亿浮点运算(乘加),这只是VGG-19(196亿FLOP)的18%。
Residual Network
基于上述普通网络,我们插入快捷连接(图3,右),将网络变成其对应的残差版本。 当输入和输出具有相同的尺寸时(图3中的实线快捷方式),可以直接使用恒等快捷方式(公式(1))。 当尺寸增加时(图3中的虚线快捷方式),我们考虑两个选项:(A)快捷方式仍然执行恒等映射,为增加尺寸而填充额外的零条目。 该选项不会引入额外的参数; (B)公式(2)中的投影快捷方式用于匹配尺寸(通过1×1卷积完成)。 对于这两个选项,当快捷键跨越两个尺寸的特征地图时,它们将以2的步幅执行。
Implementation
我们的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的动量。 按照[16]的做法,我们不使用辍学[14]。
在测试中,为了进行比较研究,我们采用标准的10-crop测试[21]。 为获得最佳结果,我们采用[41,13]中的完全卷积形式,并在多个比例下平均得分(图像被调整大小,使得短边在{224,256,384,480,640})。
4.Experiments
4.1ImageNet Classification
我们在由1000个类组成的ImageNet 2012分类数据集[36]上评估我们的方法。 模型在128万训练图像上进行训练,并在50k验证图像上进行评估。 我们还获得了测试服务器报告的100k测试图像的最终结果。我们评估了top-1和top-5的错误率。
Plain Networks.
我们首先评估18层和34层plain net。 图3(中)是34层plain net。 18层plain net的形式相似。 有关详细体系结构,请参见表1。
表2中的结果表明,较深的34层平原网比较浅的18层平原网具有更高的验证误差。 为了揭示原因,在图4(左)中,我们比较了他们在训练过程中的训练/验证错误。 我们观察到了退化问题
尽管18层平面网络的解空间是34层平面网络的子空间,但34层平面网络在整个训练过程中都具有较高的训练误差。
我们认为这种优化难度不大可能是由渐变消失引起的。 这些plain networks用BN [16]进行训练,从而确保前向传播信号具有非零差异。 我们还验证了向后传播的梯度与BN具有健康的规范。 所以前进和后退信号都不会消失。 事实上,34层plain networks仍然能够达到竞争的准确性(表3),这表明求解器在某种程度上起作用。 我们猜测,深plain networks的收敛速度可能呈指数级的下降,这会使得网络的训练错误减少3。 未来将研究这种优化困难的原因。
Residual Networks.
接下来我们评估18层和34层残余网络(ResNets)。 基线体系结构与上述普通网络相同,期望将一个快捷连接添加到每对3×3滤波器,如图3(右)所示。 在第一个比较中(表2和图4右),我们对所有快捷方式和零填充使用身份映射来增加维度(选项A)。 所以他们没有额外的参数与普通的相比。
从表2和图4我们可以看到三个主要的观察结果。首先,残差学习情况相反 - 34层ResNet比18层ResNet(2.8%)好。 更重要的是,34层ResNet展示的训练误差相当低,并且可以通用于验证数据。 这表明在这种环境下降解问题得到了很好的解决,并且我们设法获得准确性增加,深度增加。
其次,与其对应的plain相比,34层
ResNet将成功降低训练误差(图4右侧与左侧)所导致的前1%误差减少3.5%(表2)。 这种比较验证了极深系统的残差学习的有效性。
最后,我们还注意到,18层平原/残差网络相当准确(表2),但18层ResNet更快收敛(图4右侧与左侧)。 当网络“不太深”(这里是18层)时,当前的SGD求解器仍然能够找到对于纯净网络的良好解决方案。 在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。
Identity vs. Projection Shortcuts.
我们已经证明,无参数恒等快捷键有助于培训。 下一个
我们研究projection shortcuts (公式(2))。 在表3中,我们比较了三种选择:(A)零填充快捷方式用于增加尺寸,所有快捷方式均无参数(与右表2和图4相同); (B)projection shortcuts 用于增加尺寸,其他shortcuts是indentity; (C)所有捷径都是projection。
表3显示,所有三个选项都比plain net对手好得多。 B稍好于A.我们认为这是因为A中的零填充维数确实没有残差学习。 C稍好于B,我们将其归因于许多(十三)projection shortcuts方式引入的额外参数。 但是A / B / C之间的小差异表明projection shortcuts对解决退化问题并不重要。 所以我们在本文的其余部分不使用选项C来减少内存/时间复杂度和模型大小。 identity shortcuts对于不增加下面介绍的瓶颈体系结构的复杂性非常重要。
Deeper Bottleneck Architectures.
接下来我们介绍一下ImageNet的更深层次的网络。 由于担心我们可以负担得起的培训时间,我们将构建模块修改为瓶颈设计4。 对于每个残差函数F,我们使用3层而不是2层(图5)。 三层是1×1,3×3和1×1的卷积,其中1×1层负责减小并且随后增加(恢复)尺寸,使得3×3层成为具有较小输入/输出尺寸的瓶颈。 图5显示了一个例子,其中两种设计的时间复杂度都相似。
无参数身份快捷键对于瓶颈架构尤为重要。 如果将图5(右)中的身份快捷方式替换为投影,则可以显示时间复杂度和模型大小加倍,因为快捷方式连接到两个高维度末端。 所以身份快捷键可以为瓶颈设计提供更高效的模型。