经典论文阅读-12:ResNet

37 阅读10分钟

图像分类的深度残差学习

论文地址:[PDF] Deep Residual Learning for Image Recognition | Semantic Scholar

摘要

深度神经网络更难训练,我们提出一种残差训练框架来简化更深的网络训练。我们显式地重新安排各层连接,学习带引用层输入的残差函数,取代学习无引用的函数。我们提供全面经验证据表示这些深度残差网络更易于优化,从提升的深度中获得更高准确率。我们在 ImageNet 数据集中计算带 152 层深度的残差网络效果,该网络比 VGG 深八倍,但仍有更低的计算复杂度。所有残差网络在 ImageNet 测试集上达到 3.57% 错误率。该结果获得 ILSVRC 2015 比赛第一名。我们也展示了基于 100 到 1000 层网络的 CIFAR-10 数据集测试。

表示的深度在许多视觉识别任务中是第一重要的。仅通过我们模型的非常深的表示,我们在 COCO 目标检测数据集任务上获得 28% 相对提升。深度残差网络是我们参赛模型的基础,在 ILSVRC & COCO 2015 比赛中赢得四项第一。

简介

深度卷积网络已经带来一系列图像分类上的突破。深度网络天然集成浅、中、深各层级特征,以端到端多层的方式进行分类。特征层级可通过堆叠层数(深度)来丰富内涵。最近有证据显示网络深度第一重要,而且 ImageNet 比赛的获奖模型都是利用了非常深的模型,其深度从 16 到 30都有。许多其他重要视觉任务也从深度模型中获益匪浅。

由深度的重要性驱动,产生了一个问题:学习更好的网络仅需要堆叠层数吗?阻碍回答该问题的是臭名昭著的梯度消失/爆炸问题,它们阻碍模型收敛。然而,这个问题已经通过归一化初始值与中间归一化层等方式很大程度上解决了,从而允许网络可训练层数增至数十层,通过 SGD 与反向传播训练。

当更深的网络可收敛时,退化问题就暴露出来了:随着网络深度增加,准确率会饱和,随后快速退化。不幸的是,这种退化情况不是由过拟合导致的,给相当深的模型添加更多层会导致更高的训练误差。我们通过实验验证了这一点,结果如图所示。

pic1.png

这种退化的情况说明不是所有系统都同样容易优化。让我们考察一个浅层架构和其添加更多层的深层对比版架构。存在一种构造更深模型的解决方案:添加的层是恒等映射,其他层是学到的浅层模型各层的复制。这种构造的解法的存在说明更深的模型应该比浅层对比模型的误差更小。但实验表明当前解决方案不能找到效果更好的更深模型。

本文里,我们提出解决退化问题的方案:深度残差训练框架。该框架中不再期望每个堆叠层直接在低层映射上训练,我们显式让这些层在残差映射上训练。形式化地,用 H(x)H(x) 表示低层映射,我们让堆叠的非线性层学习另一个映射 F(x)=H(x)xF(x)=H(x)-x 。原始映射转为 F(x)+xF(x)+x 。我们假设该残差映射与原始映射相比更易于优化。极限情况下,如果恒等映射是最优的,它会更容易将残差计 0 而非在堆叠的非线性层上学习恒等映射。

公式 F(x)+xF(x)+x 可用带近路连接的前向神经网络实现。近路连接是那些跳过几层的连接。在我们的模型中,近路连接只做了恒等映射,将输出添加到堆叠层的输出中。恒等近路连接不添加额外参数,不带来额外的计算复杂度。整个网络仍然是端到端的,按照 SGD 与反向传播训练,可使用常见库很容易地实现。

pic2.png

我们在 ImageNet 上做了全面的实验,展示退化问题与我们模型的评估效果。我们展示了:

  • 我们的非常深的残差网络易于优化,而其对比版的平凡网络在深度增加时,存在更高训练误差。

  • 我们的深度残差网络更容易从深度增加中获得准确率提升,因此产生比之前网络更好的结果。

相似情况也发生在 CIFAR-10 数据集上,说明优化困难和我们方法的效果并不与某个数据集绑定。我们在该数据集上的成功训练的模型有超过 100 层深度,然后探索了超过 1000 层的模型效果。

相关研究

残差表示

在图像识别领域,VLAD 是通过残差向量编码的表示,且不依赖某个字典。Fisher Vector 可视为概率版的 VLAD。这两种表示都是很有效的浅层表示,用于图像检索与分类。对于向量构建,编码残差向量比编码原始向量更高效。

在低级视觉与计算机图形学方面,为了解决 Partial Differential Equations (PDEs),广泛使用的 Multigrid 方法将系统重构为多规模的子问题,每个子问题对应一个粗粒度与细粒度规模之间的残差解决方案。替代 Multigrid 方法的是一种基于前提条件的层级方法,依赖两种规模之间残差向量的表示变量。文献中的结果展示这种求解方法比标准方法收敛的更快。这些方法说明优秀的重构与前提条件可以简化优化。

近路连接

实践与理论都使近路连接被研究了许多年。训练多层感知器(MLPs)的早期实践给模型的输入和输出之间添加了线性连接层。在一些文献中,给模型中间层之间添加额外的分类器,以解决梯度消失/爆炸问题。某些文献使用近路连接来中心化各层表示、梯度与传播误差。在文献 44 里,Inception 层组合了一个近路分支与一些深一点的分支。

与我们研究并行的方法有高速路网络 highway network,带有近路连接的门函数。这些门是数据依赖的,且带有参数,而我们方法的恒等近路是无参数,无数据依赖的。当门关闭时,其网络表现为非残差函数,而我们的网络一直学习残差函数,近路连接从不关闭。而且,高速路网络并没展示模型在急剧增长的深度上能收获准确率的效果。

深度残差学习

残差学习

给定 H(x)H(x) 为几个堆叠层要学习的底层映射,xx 表示其中第一层的输入。如果我们假设多个非线性层可逐渐估计复杂函数,那么等于假设该映射可逐渐估计残差函数 H(x)xH(x)-x 。因此,不是期望堆叠层估计 H(x)H(x) ,我们明显是让这些层估计残差函数 F(x)=H(x)xF(x)=H(x)-x 。原始函数变为F(x)+xF(x)+x 。尽管两种方式都可以渐进估计想要的函数,其学习的难易程度可能不同。

对公式重构的动机来自退化问题的对抗情景。如上文所述,如果添加层可被构建为恒等映射,更深的模型的训练误差就不会比浅层对照模型更差。退化问题说明求解器在估计多个非线性层的恒等映射时有困难。通过残差学习的重构公式,如果恒等映射是最优的,求解器会简单地朝零驱动多个非线性层,以接近恒等映射。

在真实场景中,恒等映射不可能最优,但我们的重构公式可以帮助该问题取得前提条件。如果最优函数更接近恒等映射,而非零映射,该函数会易于求解,找到恒等映射带来的干扰量,然后学习新函数。

近路带来的恒等映射

我们对每组堆叠层采用残差学习。形式化地,构建块定义如下。

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

其中 x,yx,y 是这些层对应的输入输出向量。函数 FF 表示要学习的残差映射。F+xF+x 的运算表示近路连接与元素添加。

公式里的近路连接既不带来额外的参数也不带来计算复杂度。这不仅在实践中更吸引人,而且在我们对比平凡网络和残差网络时很重要。我们可以公平对比两类网络,使其具有相同数量的参数、深度、宽度、计算代价。

在上式中,F,xF,x 的维度必须相等,如果不相等,我们得对近路连接做一次线性映射 WsW_s 以匹配维度。

y=F(x,{Wi})+Wsxy=F(x,\{W_i\})+W_sx

但我们会通过实验展示,恒等映射就足够解决退化问题,而且足够经济。

残差函数的形式是灵活的,本文实验中的残差函数有两层的或三层的,而且更多层也是可以的。但如果残差函数只有一层,那就等于一个线性层 y=Wx+xy=Wx+x ,从中不能得到收益。

我们也注意到,尽管上述符号都是简化说明的全连接层,在实践中,它们也可以是卷积层,残差函数可以表示多个卷积层堆叠。

网络架构

我们测试了多种平凡/残差网络,并观测其组成情况。为了提供讨论的网络实例,下边介绍两种基于 ImageNet 的模型。

平凡网络

我们关于平凡网络的基准模型来自 VGG 的启发。卷积层通常具有 3 x 3 过滤器,且遵循两个设计原则:

  • 对于同样的输出特征图大小,各层拥有同样数量的过滤器。

  • 如果输出特征图大小减半,过滤器数量翻倍以保留各层的时间复杂度相同。

我们通过卷积网络直接进行步长为 2 的下采样。网络最终以全局平均池化层结尾,并通过带 softmax 的 1000 路全连接层输出预测结果。

需要注意的是,我们的模型比 VGG 网络的过滤器更少,复杂度也更低。我们的 34 层基准模型只有 36 亿 FLOPs 乘加运算(multiplay-adds),只有 VGG-19 的 196 亿的 18%。

pic3.png

残差网络

基于上述平凡网络,插入近路连接,导致网络变成对照残差版本。恒等近路可直接用于同等维度的输入与输出。当维度增加时,考虑一下两种选择:

  • 仍保持恒等近路映射,填充额外的 0 元素以增加维度。该选择不引入额外参数。

  • 使用上述的映射近路来匹配维度。

实验