P13-CNN学习1.3-ResNet(神之一手~)

论文地址:CVPR 2016 Open Access Repository

https://arxiv.org/pdf/1512.03385.pdf

P13-CNN学习1.3-ResNet(神之一手~)_第1张图片

 

Abstract

P13-CNN学习1.3-ResNet(神之一手~)_第2张图片

  • 翻译

        深层的神经网络越来越难以训练。我们提供了一个残差学习框架用来训练那些非常深的神经网络。我们重新定义了网络的学习方式,让网络可以直接学习输入信息与输出信息的差异(即残差),而不必学习一些无关的信息。我们提供了全面的证据来说明这种残差网络更加容易进行优化,而且随着网络层数的增加,准确率也就增加。在ImageNet的数据集中,我们证实了在深度达到152层的残差网络上(相当于VGG net的8倍),网络仍然有着较低的复杂度。这些残差网络的合集在 ImageNet的测试集上进行评测,达到了3.57%的错误率,这一结果赢得 ILSVRC 2015 分类比赛的第一名。我们同时也提供了在CIFAR-10数据集上对于100层和1000层残差网络的分析。

        对于许多的视觉检测目标来说,网络的深度是一个非常重要的因素。仅仅是通过对于网络深度的增加,让我们在COCO 目标检测数据集上获得了28%的性能提升。深度的残差网络是我们在 ILSVRC 和 COCO 2015两个比赛中所提交的模型的基础。我们也同时获得了ImageNet 检测,COCO检测和分割比赛的第一名。

  • 精读

一.Introduction

P13-CNN学习1.3-ResNet(神之一手~)_第3张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第4张图片

        P13-CNN学习1.3-ResNet(神之一手~)_第5张图片 

         P13-CNN学习1.3-ResNet(神之一手~)_第6张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第7张图片

P13-CNN学习1.3-ResNet(神之一手~)_第8张图片 

 P13-CNN学习1.3-ResNet(神之一手~)_第9张图片

  • 翻译

        深度卷积神经网络的应用在图像分类领域已经引发了一系列的突破。深度网络很自然地集成了图像中的低/中/高级别的特征信息和分类器,并且是以端到端的形式完成的。与此同时,不同级别的特征信息可以通过增加网络堆叠(层数)的方式来进行丰富。最近的研究也表明网络的深度是非常重要的一部分,例如在ImageNet数据集的挑战中,排名靠前的结果无一不是使用了非常深的网络来完成的(从16层到30层)。许多其他的非常著名的视觉识别任务也从深度网路中收益很多。

        由于’深度‘对于网络的重要意义,一个问题开始出现:学习深度的网络就是简单的堆叠网络的层数吗?众所周知的一个障碍是梯度的消失/爆炸问题,他们都会影像深度网路的收敛。当然,这两个已经被网络参数的初始标准化以及网络中间层的标准化两个方法有效的解决了,让拥有着数十层深度的网络都可以通过随机梯度下降的方法进行反向传播。

        当网络的深度变得越来越深的时候,一个关于网络‘退化’的问题又显现出来了,即随着网路层数的增加,模型的准确性开始饱和,然后迅速退化。然而令人意外的是这些退化并不是来源于“过拟合”,而且向一个适度的神经网络中增加更多的层还会导致更高的训练误差,这一点在论文[11, 42]以及我们自己的实验中都有证明。图1也展示了这样的例子。

P13-CNN学习1.3-ResNet(神之一手~)_第10张图片

 

        网络训练精度的退化问题让我们意识到并不是所有的网络都可以比较容易的进行优化。首先,让我们来考虑一个浅层的网络和在它的一个对照组,即在它的结构的基础上增加了一些深层的网络。对于更深的网络的一种构建方式为所增加的层都是恒等层,另外其他的层则完全复制浅层网络。这种结构的直观感受是我们所构建的深层网路的训练误差应该不会高于之前的浅层网络。然而实验的结果却告诉我们,我们所构建的深层网络在训练时很难得到跟浅层网络一样的或者高于浅层网络的结果(或者说无法在可控的一个时间范围内完成)。

        注:恒等即H(x)=x,这里所说的恒等层即图像进入网络前跟从网络出来后是一样的,也就是所增加的层中,所有的权重都是1. 这样就构成了文章中所说的恒等层

        在这篇文章中,我们通过引入一种叫做’残差‘的学习框架来解决上面所提到的训练退化的问题。相对于之前的期望这些在浅层网路中增加的’新层‘可以直接拟合我们所说的恒等映射,我们让这些层直接去拟合一个残差映射。通过公式来表示的话:我们把开始期望拟合映射示为H(x),那么现在我们想让这些新加的层去拟合另外一个映射,我们把它示为F(x):= H(X) -X。那么开始期望拟合的映射H(x)= F(x) + x。我们假设这种残差映射相对于原始的映射是更加容易进行优化的。我们可以设想下如果这个恒等映射可以被优化出来,那么让残差变为0应该比让那些新堆叠进去的非线性的层的权重都变为1要容易的多。

P13-CNN学习1.3-ResNet(神之一手~)_第11张图片

 

        F(x) + x这种形式很容易在网路中通过 ’shorcut connections‘的形式来实现(如图2所示)。’shorchut connection‘ 可以跳过一层或者多层来进行。在我们的示例中,’shorchut connection‘ 很容易的完成了恒等映射,同时,把这些输出添加到新堆叠层的输出中(如图2所示)。通过这种方式进行添加一方面没有增加额外的参数,另一方面也没有增加计算的复杂度。同时,整个网络仍然可以使用SGD和通用的训练框架进行端到端的训练。

        我们在ImageNet的数据集上详细的展示了训练退化问题以及我们的解决方法。我们展示了:1) 当网络深度增加的时候,普通的网络体现出更高的训练误差,而残差网路则表现的非常容易进行优化。2)随着网路层数的增加,残差网络可以很容易的获得较好的准确率,并且准确率还会高于之前的网路。我们同时还在CIFAR-10的数据集上进行了实验,以此来说明训练退化和我们的解决方法并不是只适用于一些特定的数据集。我们成功的在这个数据集上训练了超过100层的神经网络,最高的层数到达了1000层。

        我们的算法也在ImageNet 分类的数据集上获得了很高的成绩。尽管我们的152层的残差网络是迄今为止在ImageNet数据集上使用的最深的网络,它的负责度还是要比VGG Net要低。我们在ImageNet测试集上整体上的错误率为3.57%(属于top5的范畴),同时也赢得了ILSVRC 2015 分类比赛的冠军。这个极其深的网络也在其他的比赛中有着出色的表现,让我们赢得了很多比赛的冠军,比如: ImageNet detection, ImageNet localization, CoCo detection, 和 COCO segmentation。这些证据都表明残差网络的方法有着很好的适用性,我们期望它可以被应用在其他的视觉/非视觉的领域。

  • 精读

二.Related Work

P13-CNN学习1.3-ResNet(神之一手~)_第12张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第13张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第14张图片

 

  • 翻译

        残差表示:在图像识别中,VLAD用来表示字典被残差编码后的结果, Fisher VLAD用来表示VLAD的概率形式。他们都可以被用来非常直接的表述图像的检索和分类问题。在对图像进行向量化表示的时候,通过残差进行表示已经被证明比直接通过原始图像进行表示有着更高的效率。

        在low-level的计算机视觉和计算图形学中,为了解决求偏导的问题,广泛的使用Multigrid 方法,将问题解构成不同尺度的子问题,每一个子问题则用不同粒度(从粗粒度到细粒度)的残差向量来进行表示。Multigrid的一种代替方案是层次化预处理, 它也依赖于那种用两种尺度残差表示的参数。论文[3,45,46]都证明了这种残差的方法比那么没有意识到残差性质的方法能够更快的得到收敛的结果。这些方法都表明一个好的变换或者预处理方法可以简化优化器。

        捷径连接(Shortcut connection): 促成捷径连接的理论和时间已经被研究了很长一段时间了。其中最早的实践是在训练多层感知机(MLPs)的时候,在输入和输出之间添加一个线性的连接。在论文[44, 24]中,为了解决梯度消失/梯度爆炸的问题, 一小段中间层被直接连接到辅助的分类器上。论文[39, 38, 31, 47]为了解决层间相应,梯度和传播错误问题,同样也使用了捷径连接的方法。在论文[44]中,初始层是有一个捷径连接和几个更深的分支组成的。

        在我们写论文的同时,’高速网络‘还提供了一个带有门功能的捷径连接。当然相对于我们这里的这种不需要额外参数的恒等捷径连接,带有门功能的捷径连接是需要依赖于数据本身和特殊参数的。比如,当门关闭的时候,整个’高速网路‘更加相当于一个没有残差的网络。相对来说,我们的方式则需要总是去学习残差,并且我们的恒等网络是不会关闭的,因此所有的信息都会通过残差网络别学习到。另外,高速网络并没有去论证在网络非常深的情况下,其准确率是否可以提升。

  • 精读

三.Deep Residual Learning

3.1Residual Learning

P13-CNN学习1.3-ResNet(神之一手~)_第15张图片

 

  • 翻译

        让我们把H(X)当成在截取的一小段网络中的最基础的映射,X表示这小段网络最顶层的输入。如果假设多个非线性的层可以近似成一个复杂函数,那么也就可以假设他们同样可以近似拟合残差函数H(X) -X(假设输入和输出有着相同的维度)。所以相对于期望这段网络可以去拟合H(X), 我们则明确的让网络去拟合一个残差函数F(x):=H(x) -x. 那么原始的方程则变成了F(x) +x. 尽管两种方式应该都可以逐渐的拟合期望函数,但是他们的难易程度应该是不同的。

        这种变换方式的灵感来自于对于退化问题的反直觉现象(如图1,左侧)。正如我们在’介绍‘中所讨论的,如果所添加的层可以被构造成恒等映射,那么更深的网路的学习误差应该会不高于浅层网络的训练误差。但是训练退化问题让我们了解到网络应该很难让所添加的这些非线性的层训练成恒等映射。但是在残差网路的框架下,如果恒等映射是最优的结果,那么网络应该可以简单的去驱动新增加的非线性层的权重都变为0,从而达到拟合恒等映射的目的。

        在实际的例子中,恒等映射或许并不是最优的结果,但是我们的方法却有助于解决训练退化的问题。如果最优函数相对于一个全是0的映射更接近一个恒等映射,那么相对于去拟合一个新的函数,我们的这种操作更容易让求解器根据所输入的恒等映射去发现扰动。我们通过实验(图7)表明通常情况下学习残差网路会比学习普通的网络有很小的调整标准差,这也表明我们使用的恒等映射提供了很好的模型预处理。

  • 精读

3.2Identity Mapping by Shortcuts

P13-CNN学习1.3-ResNet(神之一手~)_第16张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第17张图片

 

  • 翻译

        我们将残差学习应用到每一个小的模块中。一个模块的示例如图2所示。使用公式表示这个小模块的话:

 

        其中x 和y为模块的输入和输出向量。函数F(x,{wi})为网络需要学习的残差映射。例如图2中所示,该模块含有两层, F = W2σ(W1x), 其中σ表示ReLu, 为了简化假设,biases也被省略。关于F +x 的操作,则通过捷径连接的方式实现,进行对应位置像素的加和操作。我们在加和操作结束后,再进行第二次的非线性激活。

        在公式1中的捷径连接操作,即没有增加新的参数,也没有增加计算复杂度。这不仅在实际应用中具有很强的应用性,而且对于我们所进行的普通网络和残差网络的对比实验也是很重要的。因为这样的话,我们就可以公平的比较具有相同的参数,深度,宽度和计算复杂度的普通网络和残差网络。

        在公式1中,x和F的维度一定要一样,如果不一样(例如当我们改变了输入/输出的通道数),我们可以通过线性投影的方式来让他们的维度相互匹配:

 

        我们也可以在公式1中使用一个平方矩阵Ws。 但是我们的实验结果表明使用恒等映射对于解决训练退化的问题是足够的,而且他还比较经济,因此Ws只会在当输入和输出的维度不匹配的时候才使用。

        函数F的形式是非常灵活的。在本文的实验中,我们分别使用了2层和3层网络来进行(如图5所示),于此同时,更多的层数也是可以的。当然如果F只有一层的话,那么公式1则近似为一个线性层: y =W1X + X, 对此我们还没有观察到他的优点。

        我们需要说明的是尽管上面的所有的表述都是用的全连接层举例,但是这是为了方便起见,他们是可以被部署在卷积层上的。元素的相加是被应用在两个特征图像上的,他们在对应的通道上进行加和操作。

  • 精读

3.3NetWork Architectures

P13-CNN学习1.3-ResNet(神之一手~)_第18张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第19张图片

  • 翻译

        我们在多个神经网络以及其对应的残差网络上进行了测试,他们都得到了一致的结果。为了提供实际的例证,接下来我们将使用两个在ImageNet上训练的网络进行讲解。

        普通网络:我们的普通网络的架构(图3,中间)主要受到VGGnet(图3,左)的启发。其中的卷积层更多的使用3x3的过滤器,并且紧跟着两个简单的设计规则:(i)对于输出和输入相同的特征图,那么层具有相同数量的过滤器;(ii)如果特征图的尺寸减半,那么过滤器的数量则需要翻倍,用来保证层的时间复杂性。我们的下采样直接通过使用步长为2的卷积来实现。在网络的末尾连接了一个全局平均池化层和经过softmax的1000个参数的全连接层。网络的总体层数是34层(如图3,中间)所示。

        值得注意的是,我们的网络相对于VGGnet有更少的过滤器和更小的复杂度(图3,左)。我们的34层基础模型有36亿浮点运算次数(乘法和加法),这只有VGG-19(196亿浮点运算次数)模型参数的18%。

        残差网络: 基于上述的普通网路,我们在其中插入残差部分(如图3,右),则把该网络转换成了他的对照组残差网络。当输入和输出的尺寸一致的时候,shortcut(公式1)可以被直接使用(图3中实线部分)。当维度增加的时候(图3中虚线部分),我们考虑了两种方案:(A)shortcut部分仍然使用恒等映射,但是对于新增加的维度则全部使用0来代替。这种方案不增加任何的参数。(B)通过公式2中所提供的线性投影的方式来匹配增加的维度(通过使用1x1的卷积的方式来实现)。对于这两种方案,当两个特征图的尺寸不一致时,都用过使用步长为2的卷积来让他们统一。

  • 精读

3.4Implementation

P13-CNN学习1.3-ResNet(神之一手~)_第20张图片

  • 翻译

        我们在ImageNet上的部署参考了论文[21, 41]的方式。图像被进行随机缩放,缩放的方式为让它的短边在[256,480]之间进行随机采样。然后将图像随机裁剪出224x224大小,并进行随机水平方向的旋转,最后将所有的像素点减去均值。论文[21]中的标准颜色增广也被用到。我们在每次卷积和激活之间都添加了批量标准化操作。我们按照论文[13]的方法初始化了网络权重,并从头开始训练普通网络/残差网络。我们使用了SGD作为优化器,并把最小批量设置为256. 我们的学习率从0.1开始,当训练误差不减小的时候,我们将之前的学习率缩小10倍,直到模型进行了60x10的4次方的迭代数量。我们所使用的权重衰减系数为0.0001,动量为0.9.我们沿用了论文[16]的方法,即没有在训练过程中使用dropout。

        在测试时,为了进行比较研究,我们采用了标准的10-crop的测试方法。为了获得最佳的结果,我们采用了如论文[41,13]一样的全卷积的方式,并使用了多尺度图像的平均值作为结果(图像的短边会被缩放到{224,256,384,480,640})。

  • 精读

四.Experiments

4.1ImageNet Classification

P13-CNN学习1.3-ResNet(神之一手~)_第21张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第22张图片

P13-CNN学习1.3-ResNet(神之一手~)_第23张图片 

P13-CNN学习1.3-ResNet(神之一手~)_第24张图片 

P13-CNN学习1.3-ResNet(神之一手~)_第25张图片 

 P13-CNN学习1.3-ResNet(神之一手~)_第26张图片

P13-CNN学习1.3-ResNet(神之一手~)_第27张图片

P13-CNN学习1.3-ResNet(神之一手~)_第28张图片 P13-CNN学习1.3-ResNet(神之一手~)_第29张图片

P13-CNN学习1.3-ResNet(神之一手~)_第30张图片 

  • 翻译

        我们在ImageNet 2012的分类数据集上评测了我们的结果,这个数据集含有1000个类别。模型使用了128万张训练图片,并且使用了5万张图片进行验证。最后使用10万张图片在测试服务器上进行测试,获得了最终的结果。我们评估了从top-1到top-5的错误率。

        普通网络:我们首先评估了18层和34层的普通网络。34层的普通网络如图3(中)所示。18层的普通网络也会相类似的结构。表1有详细的结构。

表2中的结果表明了更深的34层的网络相比如18层的网络有着更高的验证误差。为了揭示这个原因,(如图4, 左)我们对比了他们在整个训练过程中的训练/验证误差。我们已经观察到训练退化的问题-在整个训练过程中34层网路表现出了更高的训练误差,尽管18层的网络的求解空间其实只是34层的一个空间子集。

        我们认为这种优化难题不太可能是由于梯度消失引起的。因为普通的网络在训练过程中都使用了批量标准化操作,这确保了参数在正向传播的时候不会出现为0方差的情况。我们同样验证了由于批量标准化的使用,模型在反向传播的过程中所展示出来的梯度也是健康的。所以无论是正向传播还是反向传播都没有显示出梯度消失的问题。事实上,34层的普通网络仍然可以达到一个有竞争力的精度(如图3),这表明在一定程度上求解器还是有效果的。我们猜测,或许是由于本身更深的普通网络就具有指数级的更低的收敛速度,这或许影响了训练误差的减小。这种优化困难的原因将在未来进行研究。

        残差网络。接下来,我们开始验证18层和34层的残差网络(ResNets). 同样,网络的基础架构跟上面的普通网络是类似的,于此同时在每一对3x3的过滤器中添加了捷径连接(如图3,右). 在第一组比较中(表2和图4 右), 对于所有的捷径,我们使用了恒等映射,对于所增加的维度,我们使用了0进行填充(方案A). 所以相对于普通网络,并没有增加新的参数。

        在表2和图4中,我们有3个主要的发现。首先,形势随着残差学习的引入发生了逆转- 34层的残差网络的错误率要由于18层残差网络2.8%。更重要的是,34层残差网络展示了相当低的训练误差,并且可以泛化到验证集。这表明了训练退化问题通过这种设置得到了很好的解决,我们可以通过增加网络深度来获得准确率。

        第二,相比对照组的普通网络,34层的残差网成功的降低了训练误差(图4.右VS左),络减少了top-1错误率3.5%(表2)。这个对照试验验证了残差在极度深的网路上的有效性。

        最后,我们也注意到18层的普通网络/残差网络的准确率是相当的,但是18层残差网络的收敛更加迅速(图4 右VS左)。当网络不是非常深的时候(例如这里的18层),对于普通的网络,现在所使用的SGD求解器还是可以找到一个较好的结果。在这种情况下,残差网络可以简化优化过程,因为它可以比较快的在早期的阶段就找到结果。

        恒等捷径VS投影捷径. 我们已经证明了无参数的恒等映射可以帮助训练。接下来,我们将调查投影映射(公式2)。在表3中,我们对比了三种方案:(A)通过使用0来填充捷径中所增加的维度,那么这种方法无需增加任何参数(和表2,图4右,所说的一致);(B)投影捷径用于所增加的那部分维度,而其他的部分保持恒等映射不变;(C)所有的捷径都采用投影捷径。

        表3显示了这三种方式都要优于普通网络的对照组。其中方案B稍微好于方案A. 我们认为这是由于通过0填充的维度确实没有进行残差学习所造成的。方案C勉强比方案B好一些。我们把它归因于通过投影映射引入了额外的参数。但是方案A/B/C间的微小的差异证明了投影映射并不能从本质上解决训练退化问题。所以为了减少内存使用,时间的复杂度和模型的大小,我们在文章的余下部分的实验中并没有使用方案C的方法。恒等映射对于下面即将要介绍的这种没有增加复杂性的瓶颈结构是非常重要的。

        深度瓶颈结构. 接下来,我们讲介绍在ImageNet数据集上所使用的更深的网络结构。考虑到可以负担得起的训练时间,我们把残差块的结构修改成一种瓶颈的结构。对于每一个残差函数F,我们使用了一个三层的堆叠来代替之前的两层堆叠(如图5)。这个三层的卷积分别是1X1, 3X3, 1X1, 其中1X1的卷积层用来减小/扩大维度,使得3x3层成为输入/输入较小维度的瓶颈。图5显示了一个示例,其中这两种设计具有相似的时间复杂度。

        无参数的恒等映射对于瓶颈结构来说尤其重要。因为如果恒等映射(图5,右)被替换成投影映射,那么时间复杂度和模型的大小将成倍增加。因为捷径连接到的是两个高维度的末端。所以恒等映射的捷径对于瓶颈模块来说更加高效。

        50层残差网络. 在34层的网络中,我们用3层的堆叠块代替了2层的堆叠块,最终形成的50层残差网路的结果如表1.我们使用了方案B来增加维度。这个模型拥有38亿浮点运算次数。

        101层和152层残差网络. 我们使用了更多的3层堆叠块,来构成了101层和152层的残差网络(表1)。值得注意的是,尽管网络的深度已经明显的增加了很多。152层的残差网络(113亿浮点运算次数)仍然有着比VGG16/19(153/196亿次浮点运算次数)更小的时间复杂度。

        50/101/152层的残差网络有着比34层高很多的准确率(表3,4)。由于没有了训练退化问题,因此我们可以通过增加网络的深度来获得更高的准确性。 深度增加的好处在所有的评估指标上都显现了出来。

        与最先进方法的比较. 在表4中,我们对比了之前最好的单一模型的结果。我们的34层基准模型已经可以获得非常有竞争力的准确率了。我们152层的残差网络的单模型具有4.49%的top-5验证错误率。这个单模型的性能已经超过了之前所有模型的综合结果(表5)。我们将六种不同深度的模型组合到一起(当时提交的时候只有两个152层的模型)。这个组合在测试集上获得了3.57%的top-5错误(表5)。这个模型获得了ILSVRC 2015比赛的第一名。

  • 精读

4.2CIFAR-10 and Analysis

P13-CNN学习1.3-ResNet(神之一手~)_第31张图片 P13-CNN学习1.3-ResNet(神之一手~)_第32张图片

P13-CNN学习1.3-ResNet(神之一手~)_第33张图片

 P13-CNN学习1.3-ResNet(神之一手~)_第34张图片

  • 翻译

        我们也在CIFAR-10数据集上进行了研究,这个数据集分为10个类别,其中包括5万个训练图片,1万个测试图片。我们进行实验,在训练数据集上训练,在测试数据集上进行测试。由于我们的关注点是网络在极度深的情况下的表现,而不是一定要达到最高的准确率,所以我们刻意选择了结构较为简单的模型来进行实验。

        普通网路和残差网路的结构如图3,中,右所示。模型的输入为每个像素点减去均值后的32X32大小的图片。网络的第一层为一个3X3的卷积。然后我们分别在{32, 16, 8}不同尺寸的特征图上使用了一个6n层的3x3卷积构成的堆叠,每个特征图的尺寸为2n层。他们所对应的过滤器尺寸分别为{16, 32, 64}. 通过使用步长为2的卷积来完成下采样过程。网络的最后是一个全局的平均池化,然后再接一个使用了softmax的10分类的全连接层。这里有6n+2个堆叠的权重层。下面的表格汇总了这种结构:

P13-CNN学习1.3-ResNet(神之一手~)_第35张图片

        当捷径连接被使用时,他们总共连接3x3个层对(共3n个捷径)。在这个数据集上,我们在所有的实验中都使用了恒等映射(即方案A),所以我们的残差网络相对于普通网络有着相同的深度,宽度和参数数量。

P13-CNN学习1.3-ResNet(神之一手~)_第36张图片

 

        我们使用的权重衰减系数为0.0001,动量为0.9。使用了论文13中的初始化方法和批量标准化,但是没有使用dropout。这个模型在两块GPU上进行训练,所使用的最小批量为128.我们开始使用的学习率为0.1,在第3.2万次和4.8万次迭代的时候,分别缩小了之前学习率的10倍。最终在第6.4万次迭代的时候结束了训练。网络是在4.5万/5千的训练集/验证集上进行的。我们使用了论文24的数据增广的方法:每个边padding4个像素,然后在pandding后的图像或者他的水平翻转图像上随机截取32x32的图像。在测试集上,我们只使用了原始的32x32的图像进行测试。

        我们对比了n={3, 5, 7, 9},即20/32/44/56层的神经网络。图6,左显示了普通网络的效果。随着网路的加深,普通网络出现了训练退化问题。这种现象和在ImageNet上或者MNIST上是一致的,以此可以说明训练退化问题是一个普遍存在的问题。

        图6,中显示了残差网络的结果。同样和在ImageNet上的表现是一致的(图4.右),我们的残差网络突破了这一优化问题,并且随着网络深度的增加,可以获得较好的结果。

        我们进一步的拓展n=18,以此来获得一个110层的残差网络。在这种情况下,我么发现开始的0.1的学习率对于模型的收敛稍微有点大了。所以我们先是使用了0.01的学习率来预热模型,直到训练误差低于80%(大约400个迭代后),然后我们把学习率调整回0.1,再继续训练。剩余的学习则跟之前讲的是一致的。最后这个110层的神经网络得到了较好的收敛(图6,中)。相对于其他更深和细的网路来说(如FitNet,Highway),它有着更少的参数,然而这确实最好的结果之一(6.43%, 表6)

P13-CNN学习1.3-ResNet(神之一手~)_第37张图片

 

        层响应分析. 图7显示了层响应的标准差。这里的响应是指每一个3x3的卷积在进行批量标准化后,以及激活函数之前的值。对于残差网络来说,这个分析揭示了残差函数的响应强度。图7显示了残差网络相对于普通网络有着更小的响应强度。这个结果也佐证了我们最初的动机(3.1节所述),残差函数可能相对于非残差函数更加接近于0.我们还注意到更深的网络有着更小的响应幅度,如图7中的ResNet20/56和110层的对照。当层数增多时候,残差网路中单一的一个层往往趋向于减小对于参数的修改。

        开发大于1000层的网络. 我们开发了一个大于1000层的网络。我们把n设置成200,因此得到了一个1202层的网络,然后使用上面所述的方法进行训练。我们的方法显示在训练这个1000多层的网络的时候没有遇到训练退化的问题,并且他的训练误差小于0.1%(图6,右)。它的测试误差也相当的好(7.93%,表6)

        但是这种极度深的网络仍然存在一些问题。尽管1202层网络的训练误差和110层网络是相似的,但是它的测试结果却要差于110层的网络。我们猜测可能是由于过拟合造成的。因为对于这样的一个小数据集,也许并不需要一个有着1202层的网路进行训练。因为使用强化正则方法(maxout,dropout)后,可以在这个数据集上获得一个较好的结果。在这篇文章中,我们没有使用 maxout/dropout, 只是通过设计简单的深度和薄的架构来进行正则,因为我们不想失去对于优化困难这个问题的聚焦。但是结合强有力的正则化后续会提升结果,这些我们未来会去做。

  • 精读

4.3Object Detection on PASCAL and MS COCO

P13-CNN学习1.3-ResNet(神之一手~)_第38张图片 

         我们的算法在其他的识别任务上也有着很好的泛化能力。表7和8展示了目标检测在ASCAL VOC 2007和2012以及COCO上的基准结果。我们使用faster R-CNN 作为检测的方法。这里我们的兴趣点在与使用ResNet101来代替VGG16后的改进。对于这两种模型的部署是相同的,所以收益只能归因于模型的结构。值得庆幸的是,在COCO数据集的挑战中,我们比COCO的标准指标(mAP[.5,.95])提升了6%,这相当于有了28%的提升。这个结果完全归功于所学习到的特征。

        根据深度残差网络,我们在ILSVRC &COCO 2015的多个比赛中获得了第一名: ImageNet 检测,ImageNet 定位, COCO检测和COCO分割。

 

 

你可能感兴趣的:(cnn,学习,机器学习)