【论文阅读19】-Res-Net (CVPR 2016)-Deep Residual Learning for Image Recognition

这篇论文提出了深度残差学习(Deep Residual Learning)框架,通过引入 残差模块(ResNet Block)解决了深层神经网络训练中的退化问题。其核心创新是将传统的层间映射 H ( x ) H(x) H(x) 转化为残差映射 F ( x ) = H ( x ) − x F(x) = H(x) - x F(x)=H(x)−x,通过跳跃连接(Skip Connection) 实现恒等映射的短路机制。这种设计让网络能更高效学习微小波动(当最优解接近恒等时),同时梯度可通过残差路径直接反向传播到底层,显著缓解了梯度消失问题。该方法在ImageNet等任务中实现了突破性性能,成为深度学习的基础架构之一。

1 He K, Zhang X, Ren S, et al. Deep residual learning for image recognitionC//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 770-778.

期刊

IEEE Conference on Computer Vision and Pattern Recognition (​​CVPR 2016​​)

作者

Kaiming He (何恺明)

Xiangyu Zhang (张翔宇)

Shaoqing Ren (任少卿)

Jian Sun(孙剑)

• 均来自微软亚洲研究院(MSRA) (发表时) ,计算机视觉与深度学习领域顶尖团队。

何恺明因ResNet、Mask R-CNN等成果获2016年CVPR最佳论文奖,并成为AI领域高引学者(截至目前被引量 264420 次)。


残差网络模块


变为 ⬇️


残差网络模块(ResNet Block)

• 传统学习过程让两层卷积拟合映射 H(x)

• ResNet 改为拟合残差 F(x) = H(x) - x

F(x) 是关于恒等映射的残差映射。

• 如果恒等映射就是最优的,那么只需将权重设置为 0 即可。

• 如果最优映射接近于恒等映射,那只需学习一些微小的变化就更容易。

• 通过恒等残差连接,梯度可以更容易地反向传播到底层。


1. 背景与动机

  • 论文首先介绍了深度学习中随着网络深度的增加,训练变得越来越困难的问题,特别是"退化问题"(degradation problem)。即使随着深度增加,网络的训练误差反而增加,导致难以优化。
  • 论文提出,深度神经网络中常见的层次性堆叠可能使得信息难以有效传递,导致训练过程中的性能下降。

2. 残差学习

  • 论文提出了残差网络(ResNet) ,通过引入快捷连接(shortcut connections),即将输入直接跳跃连接到输出,来解决上述问题。通过这种方式,网络可以在较深的模型中避免退化问题,保持甚至提高训练性能。
  • 这些快捷连接帮助训练更深的网络而不增加额外的学习难度。通过添加快捷连接,网络的每一层都学习"残差"而非直接映射,从而提高了训练深层网络的效率。

3. 网络架构

  • 论文展示了不同深度的残差网络,并比较了纯网络(plain networks)与残差网络的表现。纯网络随着层数增加会出现性能退化,而残差网络则可以随着深度的增加持续提高准确率。
  • 论文设计了瓶颈架构,用于在深度增加时减少计算复杂度,提高网络训练效率。

4. 实验结果

  • 在ImageNet数据集上的实验表明,深度残差网络相比传统的VGG网络(一个较浅的网络架构)大幅度减少了训练误差,并且随着网络深度的增加,性能不断提高。
  • 在CIFAR-10数据集和PASCAL VOC、MS COCO的目标检测任务中,残差网络也显示出了优异的性能,超越了其他模型。

5. 目标检测与实例分割

  • 论文还展示了残差网络在目标检测任务中的优势,特别是在COCO数据集上的显著提升。使用ResNet-101替代VGG-16进行目标检测,性能提升了6.0%,相当于28%的相对改进。

6. 结论

  • 通过引入残差学习,深度神经网络可以有效地训练极深的网络(如152层的ResNet),避免传统方法中的退化问题,从而提高深度网络的准确性和训练效率。
  • 基于残差网络的方法在多个计算机视觉任务中取得了优异的成绩,包括图像分类、目标检测和实例分割等。

主要贡献

  • **残差学习(Residual Learning)**的概念,解决了深层网络训练中的退化问题。
  • 提出了深层残差网络(ResNet),通过快捷连接优化了网络训练过程。
  • 展示了ResNet在多个计算机视觉任务中的应用效果,特别是在深度网络的训练中,表现出显著的优势。

全文翻译

摘要

更深的神经网络更难以训练。我们提出了一种残差学习(residual learning)框架 ,以简化比以往使用的网络更深的模型的训练。我们明确地将网络的各层重构为学习相对于输入的残差函数 ,而不是学习没有参考的直接映射函数。我们提供了大量实证结果,表明这种残差网络更容易优化,并且能够从显著增加的深度中提升准确率。

在 ImageNet 数据集上,我们评估了深度达 152 层 的残差网络------其深度是 VGG 网络的 8 倍,但复杂度更低。这些残差网络的集成模型在 ImageNet 测试集上达到了 3.57% 的错误率 ,在 ILSVRC 2015 分类任务中获得第一名

我们还在 CIFAR-10 数据集上进行了 100 层和 1000 层网络的分析。表示的深度在许多视觉识别任务中具有核心重要性。仅仅依靠我们极深的表示模型,我们就在 COCO 目标检测数据集上实现了 28% 的相对性能提升

深度残差网络构成了我们参加 ILSVRC 和 COCO 2015 竞赛 的基础,我们也在 ImageNet 目标检测、ImageNet 目标定位、COCO 检测和 COCO 分割任务中获得了第一名


1. 引言

深度卷积神经网络(Deep Convolutional Neural Networks)22, 21 已在图像分类任务中取得了一系列突破 21, 49, 39。深度网络天然地以端到端的多层方式集成了低层、中层和高层特征 49 以及分类器,特征的"层次"可以通过堆叠更多的网络层(即深度)来增强。

最新研究 40, 43 表明,网络的深度至关重要。在挑战性的 ImageNet 数据集 35 上表现最优的结果 40, 43, 12, 16 都采用了"非常深的"模型 40,其深度从 16 层 40 到 30 层 16 不等。其他许多复杂的视觉识别任务 7, 11, 6, 32, 27 同样也大大受益于深层模型。

受深度重要性的驱动,一个自然的问题随之而来:学习更好的网络是否只是简单地堆叠更多的层?

在回答这个问题时,一个主要障碍是众所周知的梯度消失/爆炸问题 14, 1, 8,这会从一开始就阻碍模型的收敛。然而,这一问题已在很大程度上通过归一化初始化方法 23, 8, 36, 12中间归一化层 16 得到缓解,这使得包含几十层的网络能够通过反向传播(backpropagation)22 与随机梯度下降(SGD)开始收敛。

当更深的网络能够开始收敛时,退化问题(degradation problem)就出现了:随着网络深度的增加,准确率趋于饱和(这是可以预期的),但随后却迅速下降。出乎意料的是,这种性能退化并不是由过拟合引起的,而是在原本已经足够深的模型上继续增加层数,反而导致了更高的训练误差------如文献 10, 41 所报道,并在我们的实验中得到了充分验证。

图 1 展示了一个典型示例。训练准确率的退化表明,并非所有网络结构都同样容易优化。

我们考虑一个浅层结构及其更深的版本(在其基础上添加了更多层)。对于这个更深的模型,构造上存在一个解 :新增的层可以是恒等映射(identity mapping),其他层直接拷贝自已训练好的浅层模型。这个构造性解的存在说明,更深的模型不应当比其浅层版本产生更高的训练误差。

但实验却表明,目前我们所掌握的优化器无法找到 与这个构造性解同样好或更好的解(或者无法在可接受的时间内找到)。

在本文中,我们通过引入一种深度残差学习(Deep Residual Learning)框架 来解决这一退化问题。我们不再期望每几个堆叠的网络层直接去拟合一个目标的底层映射 ,而是显式地让这些层去拟合一个"残差映射(residual mapping)"

形式上,设目标底层映射为 H ( x ) H(x) H(x),我们让堆叠的非线性层去拟合另一个映射:

F ( x ) : = H ( x ) − x F(x) := H(x) - x F(x):=H(x)−x

于是,原始映射可以重写为:

H ( x ) = F ( x ) + x H(x) = F(x) + x H(x)=F(x)+x

我们的假设是:相比于优化原始的、无参照的映射,优化残差映射更容易。

极端情况下,若最优的映射是恒等映射,则将残差逼近为 0 会比用一堆非线性层去拟合恒等映射更容易。

函数形式 F ( x ) + x F(x) + x F(x)+x 可以通过带有 "快捷连接"(shortcut connections) 的前馈神经网络来实现(见图 2)。所谓的快捷连接 2, 33, 48,是指跳过一个或多个网络层的连接。

在我们的设计中,快捷连接仅执行恒等映射(identity mapping) ,它们的输出被加到堆叠层的输出上 (见图 2)。恒等的快捷连接不会增加额外的参数或计算复杂度 。整个网络仍然可以通过带有反向传播的随机梯度下降(SGD) 进行端到端训练,并且可以使用常见的深度学习库(如 Caffe 19无需修改求解器即可轻松实现

我们在 ImageNet 数据集 35 上进行了全面的实验,展示了退化问题,并对我们的方法进行了评估。我们发现:

  1. 我们的极深残差网络(residual nets) 容易优化,而对应的"普通"网络(即简单堆叠层的网络)在深度增加时表现出更高的训练误差;
  2. 我们的残差网络可以轻松地从大幅增加的深度中获得准确率提升 ,取得的结果显著优于以往的网络

类似的现象也出现在 CIFAR-10 数据集 20 上,说明我们所提出的优化困难和方法效果并非局限于某一个特定数据集 。我们在 CIFAR-10 上成功训练了超过 100 层 的模型,并探索了超过 1000 层的模型。

在 ImageNet 分类数据集 35 上,我们用极深的残差网络取得了卓越的结果。我们提出的 152 层残差网络 是迄今为止在 ImageNet 上报告的最深的网络 ,但其复杂度仍然低于 VGG 网络 40 。我们的模型集成(ensemble)在 ImageNet 测试集上取得了 3.57% 的 top-5 错误率 ,并赢得了 ILSVRC 2015 分类竞赛的第一名

这种极深的表示(representation)还在其他识别任务中展现出优异的泛化性能,让我们进一步赢得了 ILSVRC & COCO 2015 比赛中的以下项目的第一名:

  • ImageNet 检测(ImageNet detection)
  • ImageNet 定位(ImageNet localization)
  • COCO 检测(COCO detection)
  • COCO 分割(COCO segmentation)

这一强有力的实验证据表明,残差学习的原理具有通用性,我们预期它同样可以应用于其他视觉和非视觉领域的问题中。


2. 相关工作

残差表示(Residual Representations)

在图像识别领域,VLAD(Vector of Locally Aggregated Descriptors) 18 是一种通过相对于字典的残差向量(residual vectors) 来进行编码的表示方法,而 Fisher 向量(Fisher Vector) 30 可以看作是 VLAD 的一种概率形式 18。这两种方法都是在图像检索和图像分类任务中表现优异的浅层表示方法 4, 47

向量量化(vector quantization) 中,有研究表明 17,对残差向量进行编码比对原始向量进行编码更为有效。

低层次视觉计算机图形学 中,为了解偏微分方程(PDEs),被广泛使用的 多重网格方法(Multigrid method) 3 将问题重构为多个尺度上的子问题 ,其中每个子问题负责解决粗尺度与细尺度之间的残差解

一种替代多重网格的方法是 分层基预条件(hierarchical basis preconditioning) 44, 45,它依赖于表示两个尺度之间残差向量的变量。有研究表明 3, 44, 45,这类方法比不考虑残差结构的标准方法收敛速度更快

这些方法都表明:一个良好的问题重构或预处理策略 能够简化优化过程


快捷连接(Shortcut Connections)

许多实践和理论研究都促成了快捷连接的产生 2, 33, 48,这一研究方向已经存在多年。

早期在训练多层感知机(MLP)时,通常会添加一个从输入层直接连接到输出层的线性层 33, 48

43, 24 中,一些中间层直接连接到辅助分类器,用以缓解梯度消失/爆炸的问题。

文献 38, 37, 31, 46 提出了一系列方法,通过快捷连接实现对层响应、梯度、传播误差的居中处理(centering)

43 中,"Inception 层" 由一个快捷分支与若干深层分支共同组成。

与我们工作同期 提出的 Highway Networks 41, 42 也使用了快捷连接,其中特别之处在于:这些快捷连接通过门控函数(gating functions) 15 控制信息流通。这些门控是依赖输入数据的,并且含有参数 ,与我们提出的参数为零的恒等快捷连接形成对比。

当门控连接"关闭"(趋近于零)时,Highway 网络中的层表示的是非残差函数 ;而在我们的方法中,始终学习的是残差函数 ,我们的快捷连接始终处于开启状态 ,所有信息总是被传递,并在此基础上学习额外的残差函数。

此外,Highway Networks 尚未证明在网络极深(如超过 100 层)时能够带来准确率提升。


3. 深度残差学习(Deep Residual Learning)

3.1 残差学习(Residual Learning)

我们考虑将 H ( x ) H(x) H(x) 视为一个需要通过若干堆叠层学习的底层映射函数 (不一定是整个网络),其中 x x x 表示这些层的输入。

如果我们假设多个非线性层可以渐近地逼近复杂函数 [1](#1),那么就可以进一步假设它们同样能够逼近残差函数 ,即 H ( x ) − x H(x) - x H(x)−x(假设输入和输出维度相同)。

因此,与其期望堆叠层去逼近 H ( x ) H(x) H(x),我们明确要求这些层去逼近残差函数

F ( x ) : = H ( x ) − x F(x) := H(x) - x F(x):=H(x)−x

于是,原始函数可重写为:

H ( x ) = F ( x ) + x H(x) = F(x) + x H(x)=F(x)+x

尽管这两种形式理论上都可以渐近逼近目标函数,但它们的学习难度可能不同。

这种重构是受到"性能退化问题"(degradation problem)启发的,见图1(左图)。正如我们在引言中讨论的那样,如果新加的层可以构造为恒等映射(identity mapping),那么更深的模型的训练误差不应高于浅层模型。

然而性能退化问题表明,当前的求解器可能难以通过多层非线性层逼近恒等映射

通过残差学习的重构,如果恒等映射是最优的,那么求解器只需将这些非线性层的权重逼近于零,即可近似恒等映射。

在实际应用中,恒等映射不一定是最优的,但我们这种重构方式有助于对问题进行预处理(preconditioning)。如果最优函数更接近恒等映射而不是零映射,那么基于恒等映射进行微调比从零开始学习新函数更容易实现优化

从实验结果(见图7)来看,学习到的残差函数的响应值通常较小,这表明恒等映射提供了一种合理的预处理方式


3.2 快捷连接实现恒等映射(Identity Mapping by Shortcuts)

我们将残差学习应用于每几个堆叠的层中。一个基本构建模块如图2所示。形式上,在本文中我们定义的构建模块如下:

y = F ( x , { W i } ) + x (1) y = F(x, \{W_i\}) + x \tag{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 ( x ) = W 2 σ ( W 1 x ) F(x) = W_2 \sigma(W_1 x) F(x)=W2σ(W1x)

其中 σ \sigma σ 表示 ReLU 激活函数 29(为简化符号,省略了偏置项)。

运算 F ( x ) + x F(x) + x F(x)+x 是通过快捷连接(shortcut connection)与逐元素加法 (element-wise addition)实现的。我们在加法之后添加第二个非线性操作 (即 σ ( y ) \sigma(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_s x \tag{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_1 x + x y=W1x+x

此时我们未观察到性能提升

值得注意的是,尽管以上符号是为简化起见针对全连接层提出的,但它们同样适用于卷积层(convolutional layers)。函数 F ( x , { W i } ) F(x, \{W_i\}) F(x,{Wi}) 可以表示多个卷积层,逐元素加法操作在两个特征图之间按通道逐一执行。


3.3 网络架构(Network Architectures)

我们测试了多种普通网络(plain nets)残差网络(residual nets),并观察到了一致的现象。为了便于讨论,本文以两个用于 ImageNet 的模型为例进行说明。


普通网络(Plain Network)

我们的普通网络基线(如图 3 中图所示)主要受到 VGG 网络 40(图 3 左图)的设计理念启发。卷积层主要使用 3 × 3 3 \times 3 3×3 的卷积核,并遵循以下两个简单的设计规则:

  1. 当输出特征图的尺寸相同时,使用相同数量的滤波器(filters);
  2. 当特征图尺寸减半时,滤波器数量翻倍,以保持每层的时间复杂度不变。

我们通过步幅为 2 的卷积层直接实现下采样。网络以**全局平均池化层(global average pooling)**结尾,并接一个 1000 维的全连接层(fully-connected layer)加 Softmax 分类器。

图 3(中)中的网络总共有 34 个有权重的层(weighted layers)

值得注意的是,我们的模型的滤波器数量少于 VGG 网络 40(图 3 左),因此复杂度更低。例如,我们的 34 层基线网络的总计算量为 36 亿次浮点乘加操作(FLOPs) ,仅为 VGG-19(196 亿 FLOPs)的 18%


残差网络(Residual Network)

基于上述普通网络,我们引入快捷连接(shortcut connections)(图 3 右),将其转换为对应的残差版本。

当输入与输出维度一致时(图 3 中的实线快捷路径),可以直接使用恒等快捷连接(即公式 (1)):

y = F ( x , { W i } ) + x y = F(x, \{W_i\}) + x y=F(x,{Wi})+x

当维度发生变化(图 3 中的虚线快捷路径)时,我们考虑两种处理方式:

  • 选项 A :快捷路径仍执行恒等映射,对维度扩展部分进行零填充(zero-padding)。该方式不引入额外参数;
  • 选项 B :使用公式 (2) 中的**投影映射(projection shortcut)**来匹配维度(通过 1 × 1 1 \times 1 1×1 卷积实现):

y = F ( x , { W i } ) + W s x y = F(x, \{W_i\}) + W_s x y=F(x,{Wi})+Wsx

无论哪种方式,当快捷路径跨越不同尺寸的特征图 时,其操作都采用步幅为 2 来实现下采样。


3.4 实现细节

我们在 ImageNet 上的实现遵循了 21, 40 中的做法。图像会被缩放,其较短边随机采样于 256, 480 范围内进行尺度增强(scale augmentation)40。然后从图像或其水平翻转版本中随机裁剪出一个 224×224 的区域,并减去每个像素的均值 21。我们使用了 21 中的标准颜色增强方法。

我们采用了批归一化(Batch Normalization, BN)16,在每个卷积层之后、激活函数之前进行,遵循 16 的做法。权重初始化采用 12 的方法,所有的 plain/residual 网络都是从头开始训练的。

我们使用 SGD 优化器,mini-batch 大小为 256。初始学习率设为 0.1,当误差不再下降时将学习率除以 10。模型最多训练 60 × 10⁴ 次迭代。权重衰减为 0.0001,动量为 0.9。我们没有使用 dropout 13,这也是 16 中的实践。

在测试阶段,为了做对比研究,我们采用标准的 10-crop 测试方法 21。为了获得最佳结果,我们采用了 40, 12 中提出的全卷积形式(fully-convolutional form),并在多个尺度上对得分进行平均(图像的较短边被缩放到 {224, 256, 384, 480, 640} 这些值中)。


4. 实验

4.1 ImageNet 分类实验

我们在 ImageNet 2012 分类数据集 35 上评估了我们的方法,该数据集包含 1000 个类别。模型在 128 万张训练图像上进行训练,在 5 万张验证图像上进行评估。我们还在测试服务器上报告了最终在 10 万张测试图像上的结果。我们评估了 top-1 和 top-5 错误率。


Plain 网络

我们首先评估了 18 层和 34 层的 plain 网络。34 层的 plain 网络结构如图 3(中)所示。18 层的 plain 网络结构类似,详见表 1。表 2 中的结果显示,较深的 34 层 plain 网络在验证集上的错误率比较浅的 18 层网络更高。

为揭示原因,我们在图 4(左)中对比了两者在训练过程中的训练误差和验证误差。我们观察到了退化问题 (degradation problem)------在整个训练过程中,34 层的 plain 网络的训练误差始终高于 18 层的。这尽管 18 层网络的解空间是 34 层网络解空间的子空间。

我们认为这种优化困难不太可能是由梯度消失引起的。这些 plain 网络使用了 BN 16,能确保前向传播的信号具有非零方差。我们还验证了反向传播的梯度具有健康的范数。因此,前向和反向信号都不会消失。事实上,34 层 plain 网络仍能达到有竞争力的精度(表 3),说明优化器仍有一定效果。我们猜测这些深层 plain 网络可能存在指数级低的收敛速度,这影响了训练误差的下降³。具体原因将在未来研究中探讨。


残差网络(Residual Networks)

接下来我们评估了 18 层和 34 层的残差网络(ResNets)。基础架构与上述 plain 网络相同,唯一的区别是每对 3×3 卷积之间加入了 shortcut 连接,如图 3(右)所示。

在第一次比较中(表 2 和图 4 右),我们为所有 shortcut 使用了恒等映射 (identity mapping),并在维度增加时使用了零填充(选项 A)。因此,它们与 plain 网络相比没有增加任何参数。

我们从表 2 和图 4 中得到三点主要观察结果:

  1. 使用残差学习后情况发生了逆转------34 层的 ResNet 比 18 层的 ResNet 更好(误差减少 2.8%)。更重要的是,34 层的 ResNet 拥有显著更低的训练误差,并在验证集上表现良好。这表明退化问题在这种设置下被很好地解决了,我们成功从更深的网络中获得了精度提升。

  2. 与其 plain 对应版本相比,34 层 ResNet 将 top-1 错误率降低了 3.5%(表 2),这归因于训练误差的大幅下降(图 4 右 vs 左)。这个对比验证了残差学习在极深网络中的有效性。

  3. 我们还注意到,18 层的 plain 网络与 ResNet 的准确率相近(表 2),但 ResNet 收敛更快(图 4 右 vs 左)。当网络"不是特别深"(此处为 18 层)时,SGD 仍能为 plain 网络找到良好的解。而在这种情况下,ResNet 能通过更快的早期收敛速度简化优化过程。


恒等映射 vs 投影 shortcut

我们已经展示了无参数的恒等 shortcut 有助于训练。接下来我们探讨使用投影 shortcut(Eqn.(2))的情况。

在表 3 中,我们比较了三种选择:

  • A:在维度增加时使用零填充,所有 shortcut 都是无参数的(与表 2 和图 4 右相同);
  • B:在维度增加时使用投影 shortcut,其他 shortcut 为恒等映射;
  • C:所有 shortcut 都使用投影。

表 3 显示这三种方案的性能都远优于 plain 网络。B 略优于 A,我们认为这是因为 A 中的零填充部分并没有参与残差学习。C 略优于 B,我们认为是因为 B 中使用了 13 个投影 shortcut,引入了额外的参数。但 A/B/C 三者之间差距很小,说明投影 shortcut 并非解决退化问题的关键

因此,为了减少内存、时间复杂度和模型大小,在后续实验中我们不再使用选项 C。特别地,在接下来的瓶颈结构(bottleneck architectures) 中,恒等 shortcut 是非常重要的,它们不会增加复杂度。


更深的瓶颈结构

接下来我们介绍在 ImageNet 上使用的更深网络。考虑到训练时间,我们对基本构建模块进行了修改,采用了瓶颈结构设计⁴。每个残差函数 F 由 3 层代替原来的 2 层(图 5)。这三层分别是 1×1、3×3 和 1×1 卷积层,其中 1×1 卷积负责先降维、再升维(恢复),中间的 3×3 卷积是具有较小输入/输出维度的瓶颈层。图 5 显示了一个例子,两种设计的计算复杂度相当。

在瓶颈结构中,恒等 shortcut 尤为重要 。如果图 5(右)的恒等 shortcut 被投影替代,由于连接的是两个高维端,时间复杂度和模型大小都会加倍。因此,恒等 shortcut 带来了更高效的瓶颈模型。


50层 ResNet:我们将 34 层网络中的每个 2 层模块替换为上述 3 层瓶颈模块,得到 50 层 ResNet(见表 1)。维度增加时采用选项 B。该模型的 FLOPs 为 38 亿。

101层 和 152层 ResNet :我们通过堆叠更多的 3 层模块构建了 101 层和 152 层的 ResNet(见表 1)。值得注意的是,尽管深度显著增加,152 层 ResNet(FLOPs 为 113 亿)的复杂度仍低于 VGG-16/19(分别为 153 和 196 亿 FLOPs)。50/101/152 层 ResNet 的精度远高于 34 层版本(表 3 和 4)。我们没有观察到退化问题,因此可以从深度的显著增加中获得显著的精度提升 。所有评估指标都证实了深度的优势(表 3 和 4)。


与最新方法的比较

表 4 中我们将结果与之前最好的单模型结果进行比较。我们的基础 34 层 ResNet 就已经取得了极具竞争力的精度。我们的 152 层 ResNet 的 top-5 验证错误率为 4.49%。这个单模型结果已经超过了之前所有的集成模型结果(表 5)。

我们组合了 6 个不同深度的模型组成集成(提交时只用了两个 152 层的),最终在测试集上获得了 3.57% 的 top-5 错误率(表 5)。这个结果获得了 ILSVRC 2015 的第一名。


4.2 CIFAR-10 和分析

我们在 CIFAR-10 数据集上进行了更多的研究 20,该数据集包含 50,000 张训练图像和 10,000 张测试图像,涵盖 10 个类别。我们在训练集上训练并在测试集上评估实验。我们的重点是极深网络的行为,而不是推动最先进的结果,因此我们故意使用了如下简单的架构。Plain/Residual 架构遵循图 3(中/右)的形式。网络输入为 32×32 的图像,且每个像素的均值已被减去。第一层是 3×3 的卷积层。然后我们使用 6n 层的堆叠,每层是 3×3 的卷积,作用于大小为 {32, 16, 8} 的特征图,每个特征图大小有 2n 层。卷积滤波器的数量分别为 {16, 32, 64}。下采样通过步长为 2 的卷积完成。网络的结尾是全局平均池化、10 类全连接层和 softmax。总共有 6n+2 层加权层。以下表格总结了架构:

输出图像大小 32×32 16×16 8×8
层数 1+2n 2n 2n
滤波器数 16 32 64

当使用 shortcut 连接时,它们连接到每对 3×3 的层(总共有 3n 个 shortcut)。在这个数据集中,我们在所有情况下都使用恒等 shortcut(即选项 A),因此我们的残差模型在深度、宽度和参数数量上与 plain 网络完全相同。我们使用 0.0001 的权重衰减和 0.9 的动量,并采用 12 中的权重初始化和 16 中的 BN,但不使用 dropout。这些模型在两块 GPU 上以 mini-batch 大小 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(左)展示了 plain 网络的表现。深层 plain 网络随着深度的增加,训练误差也在增加。这一现象与 ImageNet(图 4 左)和 MNIST 上的结果类似(见 41),表明这种优化困难是一个根本性问题。图 6(中)展示了 ResNet 的表现。与 ImageNet 的结果类似(图 4 右),我们的 ResNet 成功克服了优化困难,并且随着深度的增加,精度得到了提升。

我们进一步探索了 n = 18,这导致了一个 110 层的 ResNet。在这种情况下,我们发现初始学习率 0.1 稍微过大,导致收敛较慢。所以我们使用 0.01 的学习率进行预热训练,直到训练误差降到 80% 以下(大约 400 次迭代),然后再回到 0.1 继续训练。其余的学习计划与之前相同。这个 110 层网络表现良好(图 6,中)。它的参数比其他深层且较薄的网络(如 FitNet 34 和 Highway 41,见表 6)少,但仍处于最先进的结果之中(6.43%,表 6)。


层响应分析

图 7 展示了各层响应的标准差(std)。这些响应是每个 3×3 层的输出,经过 BN 处理后,并且在其他非线性操作(如 ReLU 或加法)之前的值。对于 ResNet,这一分析揭示了残差函数的响应强度。图 7 显示,ResNet 的响应通常比其 plain 对应网络小。这些结果支持我们基本的动机(见第 3.1 节),即残差函数的输出通常比非残差函数更接近零。我们还注意到,随着 ResNet 深度的增加,其响应的幅度变小,从 ResNet-20、56 和 110 的比较中可以看出这一点。当网络深度更大时,ResNet 中的每一层对信号的修改较少。


探索超过 1000 层

我们探索了一个极其深的模型,层数超过 1000 层。我们设置 n = 200,得到一个 1202 层的网络,并按照上述方法进行训练。我们的模型没有遇到优化困难,这个 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 作为检测方法。在这里,我们关注的是通过将 VGG-16 40 替换为 ResNet-101 带来的改进。使用这两种模型的检测实现(见附录)是相同的,因此性能提升只能归因于更好的网络。最显著的是,在具有挑战性的 COCO 数据集上,我们在 COCO 的标准指标(mAP@.5, .95)上取得了 6.0% 的提高,这是一个 28% 的相对改进。这个提升完全归因于学习到的表征。

基于深度残差网络,我们在 ILSVRC & COCO 2015 竞赛的多个赛道中获得了第一名:包括 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割。详细信息见附录。


  1. 这个假设目前仍是一个开放问题,详见 28↩︎
相关推荐
weixin_468466857 小时前
ResNet 残差网络新手入门与实战指南
人工智能·深度学习·ai·残差网络·resnet·机器视觉
大模型最新论文速读8 小时前
06-02 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
Rocky Ding*1 天前
深入浅出完整解析AIGC时代中GAN(Generative Adversarial Network)系列模型核心基础知识(下篇)
论文阅读·人工智能·深度学习·机器学习·aigc·gan·ai-native
chnyi6_ya2 天前
论文阅读笔记|Wan: Open and Advanced Large-Scale Video Generative Models
论文阅读·笔记
chnyi6_ya3 天前
论文阅读:CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer
论文阅读·深度学习·transformer
大模型最新论文速读3 天前
SkillOpt:把 skill 文档当成模型权重来训练
论文阅读·人工智能·深度学习·机器学习·自然语言处理
Cloud_Shy6183 天前
解读《Effective Python 3rd Edition》:从练气到老魔(第一章 Item 4 - 6)
android·数据库·论文阅读·python
Rocky Ding*4 天前
一文读懂HiDream-I1稀疏 DiT 图像生成基础模型
论文阅读·人工智能·深度学习·机器学习·ai作画·aigc·ai-native
锅挤4 天前
来一篇儿:《anish into Thin Air: Cross-prompt Universal Adversarial Attacks for SAM2》
论文阅读
大模型最新论文速读4 天前
05-29 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理