论文链接:https://arxiv.org/abs/1512.03385
阅读理解
通过学习残差F(x)=H(x)-x比直接拟合底层函数H(x)是更有效的,能够解决深层网络难以训练的情况,网络结构上使用了跳跃连接 来实现这种残差学习。
Abstract
深度的神经网络难以训练,本文提出了一种残差的框架来简化网络的训练。我们明确地重新定义各层 为 参照各层输入 学习的残差函数,而不是 学习未参考的函数,并进行了证明残差网络更容易优化,在ImageNet数据集使用152层的残差网络(比vgg还深8倍),但复杂度更低,这些残差网络的集成在ImageNet测试集上取得了3.57% error。
表征的深度对于许多视觉识别任务是至关重要的。仅仅由于我们非常深入的表示,我们在COCO对象检测数据集上获得了28%的相对改善。Deepresidual nets是我们提交ILSVRC和COCO 2015竞赛1的基础,在该竞赛中,我们还赢得了ImageNet检测、ImageNet定位、COCO检测和COCO分割任务的第一名
Introduction
深度卷积神经网络在图像分类上已经取得了一系列突破,深度网络集成了 low/mid/high level 的特征,分类器 以端到端的多层方式进行分类,特征的层次可以通过增加深度来丰富。最近的证据表明网络深度十分重要,在ImageNet数据集比赛上的领先结果都用了非常深的模型,深度为16至30。许多其他重要(nontrivial)的视觉识别任务也从非常深的模型中获益良多。
在深度重要性的驱动下,出现了一个问题:学习更好的网络是否像堆叠更多的层一样容易?回答这个问题的一个障碍是梯度消失/爆炸的问题,这个问题从一开始就很棘手。然而,这个问题在很大程度上已经被归一化初始化和中间归一化层所解决,这使得具有几十层的网络在随机梯度下降(SGD)的反向传播中可以收敛 。
当更深的网络能够开始收敛,暴露出一个退化(degradation )问题:随着深度增加,准确率达到饱和(这可能不足为奇),然后迅速下降。出乎意料的是,这种退化并不是由过度拟合造成的。我们的实验已经完全证实,在一个合适的深度模型上增加更多的层会导致更高的training error,图给出了一个典型的例子。
这种退化表明,不是所有的系统都同样容易优化,让我们考虑一个较浅的结构和较深的结构,它在上面添加了更多的层。对应更深的模型存在一个方案,添加的层是 恒等映射,其他层只是从更浅的层进行复制而已。这种恒等映射表明,更深的模型不应该比浅的模型产生更大的训练误差,但实验表明,我们目前的 solver 无法找到一个 和 恒等映射 一样好或者更好的解(或者在短时间内无法找到)
在这篇文章中,我们通过引入一种深度残差学习的框架来解决这种退化问题,相较于希望通过堆叠来学习 一个期望的底层映射,而是显式地让这些层来学习拟合一个残差 映射。我们将期望的映射 表示为 H(x) 我们让堆叠的非线性层来拟合另外一个映射F(x) = H(x)-x ,那元素映射被重新映射为 F(x) + x 。我们假设优化残差映射比优化原始的 unreferenced的映射更容易,在极端情况下,如果恒等映射是最优的,那么将残差 推到0 比 通过堆叠非线性层 更容易拟合一个恒等映射【重要思想】
F(x) + x 可以通过 前馈神经网络的 跳跃连接来实现
跳跃连接是跳过一个或多个层的连接,跳接只执行简单的 恒等映射,添加的叠加层的输出中,既不增加额外的参数,也不增加计算的复杂度,整个网络仍可以使用反向传播的SGD 进行端到端的训练,
我们在ImageNet上进行了综合实验,以显示退化问题,并评估我们的方法。我们发现:1)我们的极深残差网很容易优化,但对应的 "普通网(即简单的堆叠层)在深度增加时表现出更高的训练误差;2)我们的深度残差网可以很容易地从大大增加的深度中获得准确度的提高,产生的结果大大优于以前的网络
类似的现象也出现在CIFAR-10上,这表明优化的困难和我们方法的效果不仅仅适用于特定的数据集。我们在这个超过100层的数据集中展示了成功训练的模型,并探索了超过1000层的模型。
在ImageNet分类数据集上,我们通过极深的残差网络得到了很好的结果。152层残差网络是迄今为止在ImageNet上出现的最深的网络,但仍然比VGG的复杂度低。我们的ensemble在ImageNet测试集的top-5 error为3.57%,在2015 ILSVRC分类竞赛中获得第一名。极深的表征在其他识别任务上也有很好的泛化性能,并带领我们在2015 ILSVRC & COCO竞赛中进一步获得了第一名:ImageNet检测、ImageNet定位、COCO检测、COCO分割。这一有力的证据表明,残差学习原理是通用的,我们希望它能适用于其他视觉和非视觉问题。
Related Work
Residual Representations
残差表示,在图像识别中,VLAD 是一种通过相对于字典的残差向量进行编码的表示,Fisher Vector 可以被认为是 VLAD 的概率版本。它们都是用于图像重新检索和分类的强大浅层表征。对于矢量量化,编码残差矢量 被证明 比编码原始矢量更有效
在低级视觉和计算机图像学中,为了求解 偏微分方差 PDEs (Partial differential Equations),广泛使用的 多重网格 multigrid 方法,将系统重新表述为多个尺度的子问题,其中每个子问题负责较粗和较细尺度之间的残差解(residual solution)。替代多重网格的一种方法是分层基础预处理(hierarchical basis preconditioning),它依赖于表示两个尺度之间的残差向量的变量。研究表明,这些solver比不知道the residual nature of the solutions的标准solver收敛得快得多。这些方法表明,一个好的的重新定义或预处理可以简化优化过程。
Shortcut Connections
跳接的实践和理论已经被研究了很长时间。早期训练多层感知器(multi-layer perceptrons, MLPs)的一个实践是添加一个从网络输入连接到输出的线性层。在GoogleNet中,一些中间层直接连接到辅助分类器,用于处理消失/爆炸梯度。有文献提出了通过跳接来调整层响应、梯度和传播误差的方法。在[43]中,“inception”层由一个shortcut分支和几个更深的分支组成。
与此同时,“highway networks” [41,42]将跳接与门函数(gating functions)结合,这些“门”是依赖数据的并且有参数,但是我们的跳接是没有参数的(input x),当一个gated shortcut关闭(接近0),highway networks中的层就表示非残差函数,与之相反,我们的公式总是学习残差函数,identity shortcuts永远不会关闭,所有的输入信息总是被传递,还有额外的残差需要学习,此外,highways networks并没有随着深度的增加显示出精度的提高。
Deep Residual Learning
Residual Learning
把 H(x) 作为一个底层映射 undlying mapping,由几个堆叠的层(不一定是整个网络)拟合,x代表这些层的输入,如果假设多个非线性层可以逼近复杂的函数,那么他们也能逼近残差函数 即 H(x) - x。因此我们不希望通过堆叠的层去逼近 H(x),而是显式地让这些层去逼近一个 残差函数 F(x) = H(x)-x。那么原来的函数就变成了 F(x)+x。作者认为 这两种形式都应该可以渐进地近似一个期望的函数,正如假设那样,但是学习的难易程度不同
这种重新定义是受到了关于退化问题的反直觉现象的启发(图1,左),正如在introduction 中讨论的,如果增加的层可以构造为恒等映射,那么更深的模型应该有 不大于 其较浅模型的训练误差。这种退化问题表明,solver 求解器 在用多个非线性层逼近 恒等映射 可能是有困难的。通过残差学习的这种重新表述,如果恒等映射是最优的,solver 求解器 可以简单地将多个非线性层的权重推向零,来接近恒等映射。
在真实情况下,恒等映射不太可能是最优的,但我们的重新定义可能有助于解决这个问题。如果最优函数更接近恒等映射,而不是零映射,那么 求解器 参考 恒等映射 找到扰动 应该比把函数作为一个新函数来学习更容易。我们通过实验表明(图7)学习到的残差函数一般都有较小的响应,这表明恒等映射提供了合理的预处理
(原文:In real cases, it is unlikely that identity mappings are op-timal, but our reformulation may help to precondition theproblem. If the optimal function is closer to an identitymapping than to a zero mapping, it should be easier for thesolver to find the perturbations with reference to an identitymapping, than to learn the function as a new one. We showby experiments (Fig. 7) that the learned residual functions ingeneral have small responses, suggesting that identity map-pings provide reasonable preconditioning)
Identity Mapping by Shortcuts
我们对每几个堆叠的层进行残差学习,残差块如上文 图2,形式上,在本文,我们将一个残差块定义为
x,y 为残差块的输入 输出向量,函数 F(x,{W_i}) 表示要学习的残差映射,在图2中有两层 $F = W_2 \sigma (W_1x)$ $\sigma$ 代表的是 Relu, bias 为了简便忽略掉,F+x的操作有跳跃连接和 element-wise addition 完成,在相加完成后应用第二个非线性 relu 函数。公式1 的跳跃连接 既没有额外参数也没有计算复杂度,这不仅在实践中很有吸引力,而且在比较朴素网络和残差网络时也很重要。我们可以公平比较同时具有相同数量的参数、深度、宽度和计算成本的朴素/残差网络(除了可以忽略的element-wise addition)。
公式1中的F 和 x 的维度必须相同,如果不同的话,可以用一个额外的矩阵 W 与 x 相乘,以匹配F的维度
当然也可以在公式(1)中也使用Ws矩阵与x相乘【????】,但是通过实验可以证明恒等映射足够解决退化问题并且足够经济的,因此Ws在匹配维度时使用就足够了。残差函数F的形式是灵活的,本文的实验涉及一个有两层或三层的函数F(图5),还可以有更多的层。但如果F只有一层,公式(1)就类似于线性层:y = W1 x+x=(W1+1)*x,这使跳接毫无意义。
尽管为了简单起见,上面的表示法是关于全连接层的,但是它们适用于卷积层。函数F(x, {Wi})可以表示多个卷积层。element-wise addition则在两个feature map上逐通道执行。
Network Architectures
我们测试了各种普通/残差网络,观察到一致的现象。为了提供讨论的实例,我们对ImageNet上的两个模型描述如下。
Plain Network 我们的 baseline 图3中,受到了 左边 VGG 的启发,卷积层大多数使用 3x3 滤波器,并且遵守 两个简单的设计规则
- 对于相同的输出feature map 尺寸,这些层有相同数目的 滤波器
- 如果feature map 尺寸减半,则滤波器的数量将增加一倍,以保持每一层的时间复杂度
我们直接通过步长为2的卷积层进行下采样。网络最后是一个 全局平均池化层和一个带有softmax的1000路的全连接层,(图中带有权重的层数为34层)
值得注意的是,我们的模型相较于VGG有更少的滤波器,更低的复杂度,34层的 baseline 有36亿次 Flops 只是 VGG-19 的 18%
Residual network,基于plain network,我们插入 跳跃连接,将网络转换为 对应的 残差版本,当输入和输出尺寸相同时,可以直接使用恒等跳跃连接,当维度增加是,有两个选择
- 跳跃连接仍然执行恒等映射,用额外的零进行填充用来增加维度,这样做不引入额外的参数
- 使用 Ws 来进行维度匹配,
对于这两个选择,跳跃连接跨越两个szie的特征图时,它们的步长都是2
implementation
对图像 resize ,短边在 [256,480] 进行调整,以进行 scale 增强,从图像或其水平翻转中 随机裁剪 224x224 ,并减去 平均值;使用标准的颜色增强,在每次卷积之后,激活之前都使用 批量规范化[16],我们 按照 [12] 中的方法初始化权重,并从头开始训练所有的 plain/residual network,我们使用SGD 批大小为 256 ,学习速率从0.1开始,当误差趋于稳定时除以10,对模型进行多达600000次迭代的训练。我们使用weight decay系数为0.0001,动量系数为0.9,不使用Dropout,遵循[16]的实践。
在测试时,为了进行比较研究,我们采用了standard 10-crop testing。为了得到最好的结果,我们采用[40,12]中的the fully-convolutional form,并在多个尺度上对分数进行平均(将图像的短边调整为{224,256,384,480,640})。
Experiments
ImageNet Classification
在1000类ImageNet上评估,1.28M训练图片,50k验证图片,100k测试图片,评估指标为top-1/top-5 error rate。
Plain Network
首先评估18层和34层plain net,34层的如图3中,18层类似,详细结构见表1。表2中的结果表明更深的34层plain net验证集错误率更高,图4左比较了它们训练过程中的训练/验证错误率,并发现了退化问题:34层plain net的训练集错误率也更高,即使18层网络的解空间是34层网络的解空间的子空间。
我们认为越深越难以优化不是由于梯度消失,这些plain net训练时使用了BN,确保前向传播的信号有非0的方差。我们也验证了反向传播的梯度在BN下有良好的范数(backward propagated gradients exhibit healthy norms with BN),所以正向和反向传播中信号都没有消失。34层的plain net仍能得到有竞争力的准确率,这说明它在某种程度上有效。我们推测plain net可能具有指数级的低收敛速度,这影响训练误差的下降,难以优化的问题会在未来研究。
Residual Networks
然后评估18层和34层的ResNets,基础结构和plain一样,只在为每两个3×3滤波器加入跳接(图3右)。在第一次比较中(表2和图4右),使用恒等映射和在维度增加使补0,因此和plain net相比没有额外参数。主要有三个发现:首先,34层ResNet比18层ResNet更好(2.8%),并且34层ResNet的训练误差和验证误差都更低,这说明退化问题被很好的解决了,并且从深度中获得了准确率的提升。其次,34层ResNet比plain的top-1 error低3.5%(表2),这说明残差结构在极深模型中行之有效。最后,18层ResNet和plain准确率类似,但是ResNet收敛更快,在网络不太深的时候,sgd优化器仍能在plain net中找到好的解,但ResNet提供了更快的收敛速度以使优化变容易。
Identity vs. Projection Shortcuts.
表3比较三种选项:
(A)维度增加时补0,所有跳接都没有额外参数(图4右和表2)。
(B)维度增加时用Ws映射(公式2),其余用恒等映射。
(C)所有跳接都用Ws映射。
结果见表3:B比A稍微好一点,也许因为A中补0的部分没有残差学习;C比B稍微好一点,将此归因于许多个(13个)投影Ws的额外参数。但是,A/B/C之间的细微差异表明,投影Ws对于解决退化问题并不是必需的。因此,在本文的其余部分中,我们不使用选项C,以此降低内存/时间复杂度和模型大小。恒等映射对于不增加下面介绍的瓶颈体系结构的复杂性尤其重要。
Deeper Bottleneck Architectures.
出于训练成本时间的考虑,把残差块修改成bottleneck设计,对每个残差块,用堆叠的3个层代替2个层(图5),三个层是1×1, 3×3, 1×1卷积,1×1卷积层负责减少然后增加(恢复)维度,使3×3层成为比输入/输出维度更小的瓶颈。图5的例子中两种设计的时间复杂度相似。(该设计主要为了减少参数量,图5右侧的参数量为:256×1×1×64+64×3×3×64+64×1×1×256=69632,如果换成对应的右侧,参数量为:256×3×3×256×2=1179648,相差近17倍)恒等映射对bottleneck结构很重要,如果使用Ws映射,时间复杂度和模型大小都将翻一倍。
50-layer ResNet: 把34层ResNet中的2层残差块替换为3层残差块,得到了50层ResNet(表1),使用选项(B)提升维度,模型有38亿次FLOPs
101-layer and 152-layer ResNets: 使用更多的三层残差块得到了101层和152层ResNet,即使深度大幅增加,152层ResNet(113亿FLOPs)复杂度仍比VGG-16/19(153/196亿次FLOPs)小。50/101/152层的ResNet比34层ResNet准确率高很多,而且没有发现存在退化现象,因此从增加的深度中获得了显著的准确率收益。所有评价指标都可以看到深度的好处(表3和表4)。
CIFAR-10 and Analysis
在CIFAR-10数据集上做了更多研究,50k训练图片,10k测试图片,10类。目的在于研究极深网络,而不是SOTA
【部分实验设计内容 省略】
Exploring Over 1000 layers. 我们探索了一个超过1000层的深度模型。设置n = 200,得到一个1202层的网络,如上所述进行训练。我们的方法在优化时没有遇到难度,这个1000层的网络能够实现小于0.1%的训练误差(图6右)。其测试误差仍然比较好(7.93%,表6)。
但在如此激进的模型中仍存在一些尚未解决的问题。这个1202层网络的测试结果比我们的110层网络的测试结果要差,尽管两者都有类似的训练误差。我们认为这是因为过度拟合。对于这个小数据集来说,1202层的网络可能大得不必要(19.4M)。使用maxout[9]或dropout[13]等强正则化手段可以来得到该数据集上的最佳结果([9,25,24,34])。在本文中,我们没有使用maxout/dropout,只是简单地通过设计将正则化应用到结构中,目的是不分散对难以优化问题的关注,但结合更强的正则化可能会改善结果,将在未来进行研究。
Object Detection on PASCAL and MS COCO
主要说 ResNet 在其他任务上也有很好的泛化型能,使用此网络获得 多个竞赛任务的第一名
【具体内容 略】
与论文无关
本文图片来源:https://blog.csdn.net/a906958671/article/details/104150520, 如有侵权,联系删除。