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