ResNet:Deep Residual Learning for Image Recognition

更深层次的神经网络更难训练。我们提出了一个残差学习框架,以简化对比以前使用的网络更深入的网络的训练。我们根据层输入显式地将层重新表示为学习残差函数( learning residual functions),而不是学习未定义函数。我们提供了综合的经验证据,表明这些残差网络易于优化,并且可以从大幅度增加的深度中获得精度。在ImageNet数据集上,我们估计残差网络的深度可达152层--是vgg网络的8倍深[41],但仍然具有较低的复杂性。这些残差网的集合在图像集上的误差达到了3.57%。 这个结果获得了ILSVRC2015的分类任务第一名,我们还用CIFAR-10数据集分析了100层和1000层的网络。

表示深度对于许多视觉识别任务是非常重要的。仅仅由于我们的表示非常深入,我们在coco对象检测数据集上得到了28%的相对改进。 深度残差网络是我们参加ILSVRC & COCO 2015 竞赛上所使用模型的基础,并且我们在ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。

 在深度重要性的驱动下,出现了一个问题:学习更好的网络就像堆积更多的层一样容易吗?回答这个问题的一个障碍是臭名昭著的梯度消失/爆炸[1,9]的问题,它从一开始就阻碍了收敛(hamper convergence )。然而,这个问题在很大程度上是通过标准化初始化[23,9,37,13]和中间归一化层[16]来解决的,这使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。

当更深的网络能够开始收敛时,一个退化的问题就暴露出来了:随着网络深度的增加,精确度变得饱和(这可能不足为奇),然后迅速退化。出乎意料的是,这种退化并不是由于过度拟合造成的,而且在适当深度的模型中增加更多的层会导致更高的训练误差,正如[11,42]中所报告的,并通过我们的实验进行了彻底验证。图1显示了一个典型的例子。

   (训练精度的)退化表明,并非所有系统都同样容易优化。让我们考虑一种更浅的体系结构及其更深层次的架构,它增加了更多的层。 对于更深的模型,这有一种通过构建的解决方案:恒等映射(identity mapping)来构建增加的层,而其它层直接从浅层模型中复制而来。该解的存在性表明,更深层次的模型不应比较浅的模型产生更高的训练误差。 但是实验表明,我们目前无法找到一个与这种构建的解决方案相当或者更好的方案(或者说无法在可行的时间内实现)。

  在本文中,我们通过引入深度残差学习框架( a deep residual learning framework )来解决退化问题。我们不是希望每个层叠层直接拟合所需的底层映射(desired underlying mapping),而是显式地让这些层拟合一个残差映射(residual mapping)。 假设所需的底层映射为 H(x),我们让堆叠的非线性层来拟合另一个映射: F(x):=H(x)−xF(x):=H(x)−x。 因此原来的映射转化为: F(x)+xF(x)+x。我们假设优化残差映射比优化原始的未参考的映射容易。在极端情况下,如果恒等映射是最优的,则将残差推至零比用一堆非线性层拟合恒等映射更容易。

 公式 F(x)+x 可以通过前馈神经网络( feedforward neural networks )的“快捷连接(shortcut connections)”来实现(图2)。捷径连接[2,34,49]是跳过一个或多个层的连接。在本例中,快捷连接只执行恒等映射,它们的输出被添加到叠加层的输出中(图2)。恒等捷径连接既不增加额外的参数,也不增加计算的复杂性。整个网络仍然可以使用反向传播的SGD进行端到端的训练,并且可以使用公共库(例如caffe[19])来实现,而无需修改求解器( solvers)。

   在ImageNet分类集[36]上,我们利用极深的残差网得到了很好的结果。我们的152层剩余网是迄今为止在ImageNet上出现的最深的网络,但其复杂度仍然低于vgg网[41]。我们的组合在ImageNet测试集上有3.57%的前5错误( top-5 error),并在ILSVRC 2015分类竞赛中获得了第一名。他在其他识别任务上也有很好的泛化能力,使我们在ILSVRC中的图像网络检测、图像网络定位、coco检测和coco分割方面获得了第一名。这一强有力的证据表明,残差学习原理是通用的,我们期望它适用于其他视觉和非视觉问题。

Deep Residual Learning(深度残差学习)

让我们把H(x)看作是由几个层叠层(不一定是整个网)组成的底层映射,用x表示这些层中的第一个层的输入。如果假设多个非线性层可以渐近逼近复杂函数【2--This hypothesis, however, is still an open question. See [28].】,则等于假设它们可以渐近逼近残差函数,即H(X)−x(假设输入和输出具有相同的维度)。因此,与其期望叠加层近似H(X),我们不如显式地让这些层近似一个残差函数F(x):=h(x)−x。原来的函数因此变成F(x)+x。虽然这两种形式都应该能够渐近地近似于所期望的函数(如假设),但学习的容易程度可能是不同的。

如果可以将添加的层构造为恒等映射,则更深层次的模型应该具有不大于其浅层结构的训练错误。退化问题表明求解者很难用多个非线性层逼近恒等映射。利用残差学习重构,如果恒等映射是最优的,则求解者可以简单地将多个非线性层的权值推向零,以逼近恒等映射。

  在实际情况下,恒等映射不太可能是最优的,但是我们的重新表达对于这个问题的预处理是有帮助的。如果最优函数更接近于恒等映射而不是零映射,则求解者应该更容易找到与恒等映射有关的扰动(perturbations),而不是将其作为新的扰动来学习。我们通过实验(图7)证明了学习的残差函数一般都有较小的响应,说明恒等映射提供了合理的预条件。

我们对每几个层叠的层次采用残差学习。图2中展示出了一个积木块(building block )。形式上,在本文中,我们考虑了一个block被定义为:

 这里x和y是考虑的层的输入和输出向量, 表示要学习的残差映射。图2中的例子包含两层,,F+xF+x操作由一个快捷连接和元素级(element-wise)的加法来表示。在加法之后我们再执行另一个非线性操作(例如, σ(y)σ(y),如图2)。 

 在eqn.(1)中,x和F的维数必须相等。如果情况并非如此(例如,在更改输入/输出通道时),我们可以通过快捷连接执行线性投影W s ,以匹配维度:

 我们还可以在eqn(1)中使用方阵Ws。但是,我们将通过实验证明,恒等映射对于解决退化问题是足够的,而且是经济的,因此只有在匹配维数时才使用Ws。

 残差函数F的形式是灵活的。本文的实验涉及一个函数F,它有两个或三个层(图5),然而它可能有更多的层。但如果F只有一个单层,则eqn.(1)类似于线性层:y=w1x+x,对此我们没有发现任何优势。

 我们还注意到,虽然为了简单起见,上述表示法是关于全连通层的,但它们适用于卷积层。函数F(x,{wi})可以表示多个卷积层.元素级加法是在两个特征映射上相应通道上执行的。

 我们测试了各种普通/残差网络,并观察到一致的现象。为了提供讨论的实例,我们对ImageNet的两个模型进行了如下描述。

我们的plain网络结构(图3,中)主要受VGG网络 (图.3,左)的启发。卷积层主要为3*3的滤波器,并遵循以下两点要求:(i) 输出特征映射尺寸相同的层含有相同数量的滤波器;(ii) 如果特征尺寸减半,则滤波器的数量增加一倍来保证每层的时间复杂度相同。我们直接用步长为2的卷积层进行下采样。网络以一个全局平均池层和一个带有Softmax的1000路全连接层结束。在图3(中),有权值的层的总数为34 。

 值得注意的是,与vgg网[41](图3,左)相比,我们的模型具有更少的滤波器和更低的复杂度。我们的34层基线(baseline)有36亿FLOPs乘加),仅为VGG-19(196亿FLOPs)的18%。

 

 残差网络。基于上述plain网络,我们插入快捷连接(图3,右)将网络转换为对应的残差版本。当输入和输出尺寸相同时(图3中的实线快捷连接),可以直接使用恒等快捷键(eqn.1)。 当维度增加时(Fig.3中的虚线部分),考虑两个选项: (A) shortcut仍然使用恒等映射,在增加的维度上使用0来填充,这样做不会增加额外的参数; (B) 使用Eq.2的映射shortcut来使维度保持一致(通过1*1的卷积)。  对于这两个选项,当shortcut跨越两种尺寸的特征图时,均使用stride为2的卷积。

我们对ImageNet的实现遵循了[21,41]中的做法。 调整图像的大小使它的短边长度随机的从[256,480] 中采样来进行尺寸扩展( scale augmentation)[41]。 从图像或其水平翻转中随机抽取224×224 crop,并减去每个像素平均(the per-pixel mean)[21]。使用了[21]中的标准颜色增强。我们遵循[16],在每次卷积之后,在激活之前采用批归一化(BN)[16]。我们像[13]一样初始化权重,从零开始训练所有plain/残差网。我们使用小批量大小为256的SGD。学习速率从0.1开始,当误差稳定时除以10,并且 整个模型进行60∗10^4次迭代训练。我们使用的权重衰减为0.0001,动量为0.9。我们不使用Dropout[14],按照[16]的做法。

接下来,我们评估18层和34层残差网(ResNet).基线结构与上述普通网相同,只是要求在每对3×3过滤器中添加一个快捷连接,如图3(右)所示。在第一个比较中(表2和图4右),我们使用所有快捷方式为恒等映射,以及使用零填充增加维度(选项A)。因此,与普通的对应网络相比,它们没有额外的参数。

我们从表2和图4中有三个主要的观察结果。首先,使用残差学习的情况与之前(普通网)相反----34层ResNet优于18层 ResNet(2.8%).更重要的是,34层ResNet的训练误差要小得多,并且可以推广到验证数据.这表明,在这种情况下,退化问题得到了很好的解决,并且我们设法从增加的深度中获得了精度增益。

第二,与普通的对应网络相比,34层ResNet使Top-1误差减少了3.5%(表2),这是成功地减少了训练误差(图2)的结果(图4右 VS 左))。这一比较验证了残差学习在极深系统上的有效性。

    最后,我们还注意到,18层普通/残差网具有大致相等的精确率(表2),但18层ResNet的收敛速度更快(图4右 VS 左)。当网络“不太深”(比如这里的18层)时,当前的SGD解决程序仍然能够为普通网络找到好的解决方案。在这种情况下,ResNet通过在早期阶段提供更快的收敛速度来简化优化

更深层次的瓶颈架构。接下来,我们将描述我们针对ImageNet的更深层次的网络。由于考虑到我们负担得起的训练时间,我们将积木块(building block)修改为瓶颈设计(bottleneck design)。对于每个残差函数F,我们使用一个由3层组成的堆栈,而不是2层(图5)。这三层分别是1×1、3×3和1×1卷积,其中1×1层负责减小然后增加(恢复)维数,使3×3层成为输入/输出维数较小的瓶颈。图5给出了一个例子,其中两种设计都具有相似的时间复杂度。

 我们探索了一个超过1000层的深度模型。我们设置n=200得到1202层网络,该网络就像上面所描述的那样被训练。我们的方法不存在优化困难,该1000层网络的训练误差小于0.1%(图6,右)。它的测试误差仍然相当好(7.93%,表6)。

但在这些激进的深层次模型上,仍存在一些有待解决的问题。这个1202层网络的测试结果比我们的110层网络差,尽管两者都有相似的训练误差。我们认为这是因为过拟合。对于这个小数据集,1202层网络可能不必要地大(19.4M)。在此数据集使用强正则化,如maxout[10]或dropout[14],可以获得最佳结果([10,25,24,35]。但在本文中,我们使用的是无 maxout/无漏的方法,只需通过深而瘦的结构设计来实现正则化,而不分散对优化的困难的关注。但是,与更强的正则化相结合可以提高结果,这是我们今后研究的方向

猜你喜欢

转载自www.cnblogs.com/ziwh666/p/12482227.html