摘要
更深层次的神经网络更难训练。我们提出了一个残差学习框架,以便对使用了更深层的网络进行训练。我们根据层的输入明确地将层重新表示为学习残差函数,而不是学习未引用的函数。我们提供全面的经验证据表明这些残差网络更容易优化,并且可以通过显着增加的深度来获得更高的准确性。在ImageNet数据集上,我们评估了残差网络,其深度最多为152层 - 比VGG网络深8倍,但仍然具有较低的复杂度。 这些残差网络的集合在ImageNet测试集上实现了3.57%的误差。 该结果在ILSVRC 2015分类任务中获得第一名。 我们还提供了100和1000层的CIFAR-10分析。
表示的深度对于许多视觉识别任务而言至关重要。仅仅由于我们的深度表示,我们在COCO目标检测数据集上获得了28%的相对改进。深度残差网络是我们向ILSVRC和COCO 2015竞赛提交的基础,我们还在ImageNet检测,ImageNet定位,COCO检测和COCO分割任务中获得了第一名。
1.介绍
深度卷积神经网络已经为图像分类带来了一系列突破。深度网络自然地以端到端多层方式集成低/中/高级特征和分类器,并且可以通过堆叠层的数量(深度)来丰富特征的“级别”。 最近的证据表明,网络深度至关重要,而具有挑战性的ImageNet数据集的主要结果都是利用“非常深”的模型,深度为16到30。 许多其他的视觉识别任务也从非常深的模型中获得较好结果。
在网络深度的重要性驱动下,出现了一个问题:学习更好的网络就像堆叠更多层一样容易吗?回答这个问题的一个障碍是梯度消失/爆炸的问题,这从一开始就阻碍了训练。然而,这个问题在很大程度上通过归一化初始参数和引入归一化层来解决,这使得具有数十个层的网络能够开始收敛以用于具有反向传播的随机梯度下降(SGD)。
当更深的网络能够开始收敛时,就会出现降级问题:随着网络深度的增加,准确度变得饱和(这可能不足为奇),然后迅速降低。 出乎意料的是,这种退化不是由过度拟合引起的,并且在适当的深度模型中添加更多层会导致更高的训练误差,如我们的实验所报告和彻底验证的那样。 图1显示了一个典型的例子。
训练精度的降低表明并非所有系统都易于优化。让我们考虑一个浅层的结构,以及在其上添加更多层的对照结构。对于更深层次的模型,存在这种构造的解决方案:添加的层是恒等映射(identity mapping),并且其他层是从学习的浅层模型中复制的。这种构造的解决方案的存在表明,更深的模型不应该产生比其较浅的对应结构更高的训练误差。但实验表明,我们现有的求解器无法找到比构造的解决方案更好的方法(或者在可行的时间内无法做到这一点)。
在本文中,我们通过引入深度残差学习框架来解决这种退化问题。我们明确地让这些层适合残差映射,而不是希望每个少数堆叠层直接适合所需的底层映射。形式上,将期望的底层映射表示为
H
(
x
)
H(x)
H(x),我们让堆叠的非线性层为适合
F
(
x
)
:
=
H
(
x
)
−
x
F(x):= H(x)-x
F(x):=H(x)−x的另一个映射。原始映射因而被重构为
F
(
x
)
+
x
F(x)+x
F(x)+x。我们假设优化残差映射比优化原始的,未引用的映射更容易。在极端情况下,如果恒等映射是最优的,则将残差置为零比通过一堆非线性层拟合恒等映射更容易。
F
(
x
)
+
x
F(x)+x
F(x)+x的公式可以通过具有“快捷连接(shortcut connections)”的前馈神经网络来实现(图2)。快捷连接(shortcut connections)指的是是跳过一个或多个层的连接。在我们的例子中,快捷连接只是执行恒等映射,它们的输出被添加到堆叠层的输出中(图2)。恒等快捷连接既不增加额外参数也不增加额外的计算复杂度。整个网络仍然可以由SGD通过反向传播端到端地进行训练,并且可以使用公共库(例如,Caffe)轻松实现,而无需修改求解器。
我们在ImageNet上进行了全面的实验,以展示退化问题并评估我们的方法。我们展示出:
1)我们深层的残差网络很容易优化,但对应的“普通”网络(简单地堆叠层)在深度增加时会表现出更高的训练误差;
2)我们的深度残差网络可以从大大增加的深度,轻松获得更高的准确性。
类似的现象也显示在CIFAR-10集上,这表明优化的困难和我们的方法的效果不仅仅类似于特定的数据集。我们在该数据集上提供了100多个成功训练的模型,并探索了超过1000层的模型。
在ImageNet分类数据集中,我们通过深度残差网络获得了出色的结果。我们的152层残差网络是ImageNet上有史以来最深的网络,同时仍然比VGG网络具有更低的复杂性。我们的团队在ImageNet测试集上有3.57%的前5名错误,并在ILSVRC 2015分类竞赛中获得第一名。该表现也在其他识别任务上体现出模型具有出色的泛化性能,并使我们在ILSVRC和COCO 2015竞赛中进一步赢得第一名:ImageNet检测,ImageNet本地化,COCO检测和COCO分割。 这一有力证据表明残差学习原则是通用的,我们希望它适用于其他视觉和非视觉问题。
2.相关工作
(1)残差表示(Residual Representations)
在图像识别中,VLAD是一种通过关于字典的残差向量进行编码的表示,并且Fisher Vector可以被表达为VLAD的概率版本。 它们都是图像检索和分类的强大浅层表示。 对于矢量量化,编码残差矢量被证明比编码原始矢量更有效。
在低级视觉和计算机图形学中,为了求解偏微分方程(PDEs),广泛使用的多重网格方法将系统重新制定为多个尺度的子问题,其中每个子问题负责较粗和较精细规模之间的残差解 。 Multigrid的替代方法是层次偏差预处理,它依赖于表示两个尺度之间的残差向量的变量。已经显示[3,45,46]这些求解器比不知道解的残余性质的标准求解器收敛得快得多。这些方法表明良好的重构或预处理可以简化优化。
(2)快捷连接(shortcut connections)
快捷连接的实践和理论已经有很长的研究时间了。训练多层感知器(MLP)的早期实践是添加从网络输入连接到输出的线性层。 在[44,24]中,一些中间层直接连接到附加分类器,用于解决梯度消失/爆炸。 [39,38,31,47]的论文提出了通过快捷连接实现的中心层响应,梯度和传播错误的方法。 在[44]中,“初始”层由快捷分支和一些较深的分支组成。
与我们的工作同时期的文章中,“高速公路网络”提出了拥有门控功能的快捷连接。与我们的无参数恒等快捷连接相比,这些门是数据相关的并且具有参数。当门控快捷方式“关闭”(接近零)时,公路网络中的层表示非残差功能。相反,我们的表述总是学习残差函数; 我们的恒等快捷连接永远不会关闭,所有信息都会通过,还需要学习额外的残差函数。此外,高速公路网络未显示出具有极大增加的深度(例如,超过100层)的准确度增益。
3.深度残差学习
3.1残差学习
让我们将
H
(
x
)
H(x)
H(x)视为由几个层堆叠形成的一个底层映射,
x
x
x表示这些层中第一层的输入。如果假设多个非线性层可以逐渐逼近任意一个复杂函数,那么可等效地假设它们可以逐渐逼近一个残差函数,即
H
(
x
)
−
x
H(x)-x
H(x)−x(假设输入和输出具有相同的维度)。因此,我们明确地让这些层近似于残差函数
F
(
x
:
=
H
(
x
)
−
x
F(x:= H(x)-x
F(x:=H(x)−x,而不是期望近似
H
(
x
)
H(x)
H(x)。因此原始函数变为
F
(
x
)
+
x
F(x)+x
F(x)+x。虽然两种形式都应该能够渐近地逼近所需的函数(如假设的),但学习的容易程度可能会有所不同。
这种重构的动机是关于退化问题的违反直觉的现象(图1,左)。正如我们在介绍中所讨论的,如果添加的层可以构造为恒等映射,则更深层次的模型应该具有不大于其对应的浅层模型的训练误差。退化问题表明求解器可能难以通过多个非线性层来近似恒等映射。利用残差学习重构,如果恒等映射是最优的,则求解器可以简单地将多个非线性层的权重朝零方向驱动以接近恒等映射。
在实际情况下,恒等映射不太可能是最优的,但我们的重构可能有助于预先解决问题。如果最优函数更接近于恒等映射而不是零映射,则求解器应该更容易参考恒等映射来查找扰动,而不是将该函数作为新映射来学习。我们通过实验(图7)表明,学习的残差函数通常具有较小的响应,这表明恒等映射提供了合理的预处理。
3.2 通过快捷连接的恒等映射
我们对每个堆叠层采用残差学习,构建如图2所示的结构。在本文中,我们认为构建块定义为:
y
=
F
(
x
,
W
I
)
+
x
(
1
)
y=F(x, {W_I})+x\qquad(1)
y=F(x,WI)+x(1)
这里
x
x
x和
y
y
y是所考虑的层的输入和输出向量。函数
F
(
x
,
W
i
)
F(x,{W_i})
F(x,Wi)表示要学习的残差映射。对于图2中具有两层的例子,
F
=
W
2
σ
(
W
1
x
)
F=W_2σ(W_1x)
F=W2σ(W1x),其中
σ
σ
σ表示ReLU,并且为了简化符号省略了偏差。通过快捷连接和逐元素添加来执行操作
F
+
x
F+x
F+x。我们采用加法操作后的第二个非线性(即
σ
(
y
)
σ(y)
σ(y),见图2)。
方程(1)中的快捷连接既不引入额外参数也不引入计算复杂度。这不仅在实践中具有吸引力,而且在我们对普通网络和残差网络之间的比较中也很重要。我们可以公平地同时比较两个具有相同数量的参数,深度,宽度和计算成本的普通/残差网络(除了可忽略的元素添加之外)。
公式(1)中
x
x
x和
F
F
F的维度必须相等。如果不是这种情况(例如,在更改输入/输出通道时),我们可以通过快捷连接执行线性映射
W
s
W_s
Ws以匹配尺寸:
y
=
F
(
x
,
W
i
)
+
W
s
x
(
2
)
y=F(x,{W_i})+W_sx\qquad(2)
y=F(x,Wi)+Wsx(2)
我们也可以在方程(1)中使用矩阵
W
s
W_s
Ws。但是我们将通过实验证明,恒等映射足以解决退化问题并且是节约成本的,因此
W
s
W_s
Ws仅在匹配维度时使用。
残差函数
F
F
F的形式是灵活的。本文中的实验涉及具有两层或三层的函数
F
F
F(图5),而更多层是可能的。但是如果
F
F
F只有一层,则方程(1)类似于线性层:
y
=
W
1
x
+
x
y = W_1x + x
y=W1x+x,对于这种形式的网络,我们没有观察到它们的优点。
我们还注意到,尽管为简单起见,上述符号是关于完全连接的层,但它们同样适用于卷积层。函数
F
(
x
,
W
i
)
F(x,{W_i})
F(x,Wi)可以表示多个卷积层。逐个元素的添加是在两个特征映射上每个通道依次执行的。
3.3 网络架构
我们测试了各种普通/残差网络,并观察到了一致的现象。为了提供讨论的实例,我们为ImageNet描述了两个模型,如下所示。
(1)普通网络(Plain Network)
我们普通网络的baseline(图3,中间)主要受到VGG网络的启发(图3,左)。卷积层大多具有3×3过滤器(filters)并遵循两个简单的设计规则:(i)对于相同的输出特征映射大小,这些层具有相同数量的过滤器; (ii)如果特征映射大小减半,则过滤器的数量加倍,以便保持每层的时间复杂度。我们直接通过步幅为2的卷积层进行下采样。网络以全局平均池化层和带有softmax的维度为1000的全连接层结束。在图3(中间)中,卷积层的总数是34。
值得注意的是,我们的模型比VGG网络具有更少的过滤器和更低的复杂性(图3,左)。我们的34层的baseline有36亿FLOP(乘法增加),仅为VGG-19(196亿FLOP)的18%。
(2)残差网络(Residual Network)
基于上述普通网络,我们引入了快捷连接(图3,右),将网络转换为对应的剩差版本。当输入和输出具有相同的尺寸时,可以直接使用恒等快捷连接(公式(1))(图3中的实线为快捷连接()。当尺寸增加时(图3中的虚线的快捷连接),我们考虑两个选项:(A)快捷连接仍然执行恒等映射,为增加尺寸填充额外的零条目, 此选项不引入额外参数; (B)方程(2)中的投影快捷连接用于匹配尺寸(由1×1卷积完成)。 对于这两个选项,当快捷连接跨越两种尺寸的特征映射时,它们的步幅为2。
3.4 实现
我们对ImageNet的实现遵循[21,41]中的实践。图像的大小被调整,其短边在[256,480]中随机采样以进行比例增强[41]。从图像或其水平翻转中随机采样224×224裁剪,减去每像素平均值[21]。使用[21]中的标准颜色增强。我们采用批量归一化(BN)[16]在每次卷积之后,激活之前。 我们在[13]中初始化权重,并从头开始训练所有普通/残差网络。我们使用小批量256的SGD。学习率从0.1开始,当误差平稳时除以10,并且模型训练最多
60
×
1
0
4
60×10^4
60×104次迭代。我们使用0.0001的重量衰减和0.9的动量。按照[16]中的实践,我们不使用dropout[14]。
在测试中,对于比较研究,我们采用标准的10-crop测试[21]。为了获得最佳结果,我们采用[41,13]中的完全卷积形式,并在多个尺度上平均得分(图像被调整大小以使得短边在{224,256,384,480,640}中)。