Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

Posted 静悟生慧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deep Residual Learning for Image Recognition(MSRA-深度残差学习)相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/solomonlangrui/article/details/52455638
 
ABSTRACT:
 
        神经网络的训练因其层次加深而变得愈加困难。我们所提出的残差学习框架可以更轻松的对比前人所提深很多的网络进行训练。相对于之前网络所学习的是无参考的函数,我们显著改进的网络结构可根据网络的输入对其残差函数进行学习。我们提供的详实经验证据表明对这样的残差网络进行寻优更加容易,并且随网络层次的显著加深可以获得更好的准确率。我们利用ImageNet数据集验证了深达152层残差网络——尽管这个网络的深度是VGG网络[41]的8倍,然而复杂度却相对较低。该残差网络对ImageNet测试集的错误率为3.57%,这个结果取得了2015年ILSVRC分类任务的第一名。此外,我们分析了分别用100层和1000层网络对CIFAR-10数据集的处理。 
        表示深度对于很多类型的视觉识别任务至关重要。我们仅依赖于较深的表示,将对COCO物品检测数据集的处理结果提高了28%。深度残差网络是我们提交给ILSVRC和COCO 2015比赛的核心,同时也在ImageNet物品检测、ImageNet地理位置检测、COCO物品检测和COCO分割中赢得了第一名。
 
INTRODUCTION:
      深度卷积神经网络[22, 21]的提出引发了图像分类方法的一系列突破[21, 50, 40]。深度网络自然集成了低、中、高层特征表示[50]的多层次端对端形式的分类器,多层特征可以通过网络层堆叠的数量(网络深度)来丰富其表达。最近的实证[41, 44]显示网络的深度是极其重要的,其中挑战ImageNet数据集的优秀成果[41, 44, 13, 16]都是采用“较深”[41]的模型,深度从16层[41]至30层[16]不等。很多其他的重要视觉识别任务[8, 12, 7, 32, 27]也很大程度上得益于较深的网络模型。 
     网络深度非常重要,但也存在一些问题:是否能够简单的通过增加更多的网络层次学习到更好的网络?解决这个问题的障碍之一是臭名昭著的所谓梯度消失(爆炸)问题[1, 9],这从根本上妨碍了网络收敛,虽然这个问题已被广泛讨论,并试图通过一些办法加以解决,包括通过规范初始化[23, 9, 37, 13]和引入中值规范化层[16]的方式使得多达几十层的利用随机梯度下降(SGD)方法使得反馈网络[22]的求解得以收敛。虽然这些较深的网络得以收敛,一个所谓的退化(degradation)问题也暴露了出来,即随着网络深度的增加,准确率(accuracy)增长的速率会很快达到饱和(这可能也并不奇怪)然后就很快的下降了。令人意外的是,此类退化问题并不是由于过拟合造成的,而且,对一个合适的深度网络模型增加更多的层次会使得训练误差更高,这曾被报告于[11, 42]并且也被我们的实验充分验证了,图1展示了一个典型的案例。
      退化问题(对训练的准确度而言)表明了并不是所有的系统都能容易的达到优化。让我们考虑一个较为浅层的结构以及另一个作为对比以此为基础但包含了较多网络层次、相对较深的结构。对于构造更深的网络模型的方法之一是在所增加的层次上均采用恒等映射(Identity Mapping),而其他层次则是直接使用已经学习好的浅层网络。这种构造方法的存在意在使得加深后的模型所产生的训练误差不应高于它所基于的较浅的模型。然而,经验表明我们从手头的办法中无法找到和这种构造式方法一样好或者更优的解决方案(或者是无法在可行的时间的完成更深网络的构造)。 
 
      在本文中,我们提出一种深度残差学习框架来解决退化问题。我们利用多层网络拟合一个残差映射,而不是寄希望于每组少数的几个层的网络层就可以直接拟合出我们所期望的实际映射关系。正式的,我们用H(x)表示所期望得到的实际映射,我们使得堆叠的非线性多层网络去拟合另一个映射关系F(x) := H(x)-x,那么实际的映射关系即可表示为F(x)+x。我们认为对残差映射寻优可能会比直接对原始的参考映射寻优更为方便。更进一步的,如果一个识别映射是被优化了的,相比于利用一个堆叠的非线性组合拟合一个恒等映射,则使得其残差值趋于0值会更加容易一些。 
      公式F(x)+x可以通过添加了“捷径连接(shortcut connections)”的前向神经网络实现(见图2)。捷径连接[2, 34, 49]是指一种跳过一个或多个层次的连接。在我们的案例中,所使用的捷径连接仅仅是进行恒等映射(identify mapping),它们的输出被加入到堆叠层次的输出中(见图2)。恒等映射捷径连接的增加并没有引入新的参数也没有增加计算复杂度。整个网络仍然可以通过SGD反向传播进行端到端的训练,也可以利用常用的库(如:Caffe[19])加以实现而不用修改求解方法。
 

      我们基于ImageNet数据集[36]进行详尽实验,演示了退化问题,并对我们提出的方法进行了评估。结果表明:1)我们提出的超深度残差网络更便于优化,而其所对应的平凡网络(即简单通过层次堆叠而成的网络)的训练误差却随着网络层次的加深而变大;2)我们所提出的深度残差网络更容易在增加深度时获得精度的提高,明显优于之前的网络结构所得到的结果。 
      类似的现象也可以通过对于CIFAR-10数据集[20]的实验看到,实验结果表明对网络寻优的难度和我们所提出的方法的效果并不局限于特定的数据集。我们对该数据集展示了对深度为100层网络的训练,尝试了深达1000层的网络。 
 对于ImageNet分类数据集[36],我们通过超深的残差网络获得了很好的结果。我们的152层残差网络是目前已知最深的应用于ImageNet数据集的网络,然而其复杂度却低于VGG网络[41]。我们的方法最终对ImageNet测试数据集的误差为3.57%,位列前五,并且获得了2015年ILSVRC分类比赛的第一名。超深度的表示对于其他的识别任务也有很好的泛化能力,这使得我们在2015年ILSVRC&COCO比赛中赢得了ImageNet物品检测、ImageNet地理定位、COCO物品检测和COCO图像分割的第一名。事实表明,残差学习方法是具有一般性的,我们也希望它能够被进一步应用于其他视觉和非视觉类问题的解决。

Related work:

      残差表示。在图像识别中,VLAD[18]是通过基于词典的残差向量来进行编码表示的,而Fisher向量[30]则可以被认为是VLAD[18]的概率版本。它们都是很好的用于图像检索和分类的浅层表示方法[4, 48]。矢量量化,残差向量编码[17]都比对原始向量直接编码更为有效。 
    在低级视觉和计算机图形学中,对偏微分方程(Partial Differential Equation, PDE)的求解,通常是用多重网格(Multigrid)法[3]对系统中多尺度的子问题重新建模,每个子问题负责求解出较粗粒度或较细粒度的残差。除多重网格法外,级联基预处理[45, 46]也被用于求解上述的偏微分方程,它是基于表示了两个尺度间残差的量来进行的。通过文献[3, 45, 46]可知这些求解方法比不考虑残差的求解方法能够更加快速的收敛。对这些方法的研究表明一个好的模型重构或预处理将有利于模型的优化。 
捷径连接。捷径连接的相关工作所基于的实践和理论上[2, 34, 49]已经被研究了相当长时间。早期的关于训练多层感知器网络(MLP, multi-layer perceptrons)的实践包括通过在网络的输入层和输出层之间增加一个线性层[34, 论文笔记:Deep Residual Learning

Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

PyTorch笔记 - ResNet: Deep Residual Learning for Image Recognition

PyTorch笔记 - ResNet: Deep Residual Learning for Image Recognition

PyTorch笔记 - ResNet: Deep Residual Learning for Image Recognition

Deep Residual Learning for Image Recognition(残差网络)