《Deep Residual Learning for Image Recognition》
论文:https://arxiv.org/abs/1512.03385
GitHub:https://github.com/KaimingHe/deep-residual-networks
Abstract
更深的神经网络往往更难被训练,作者提出了一个residual learning框架,以方便对更深的网络进行训练。作者将层作为输入学习残差函数,而不是学习未知的函数。作者提供了非常全面的实验数据,表明残差网络更容易被优化,并可以在很大的深度下获得比较高的精度。在ImageNet的数据集上,作者评估了一个深度为152层的的残差网络-比VGG深8倍[41],但仍具有比VGG更低的复杂度。这些残差网络整体上在ImageNet测试集上达到了3.57%的错误率,该结果获得了ILSVRC2015分类任务第一名。作者还用CIFAR-10数据集分析了100层和1000层的网络。
深度表示对于许多视觉识别任务而言至关重要。仅仅由于作者极深的网络,就在COCO的目标检测数据集上获得了28%的相对提升。作者在深度残差网络的基础上做了提交的版本去参加ILSVRC和COCO2015的比赛,获得了ImageNet目标检测,Imagenet目标定位,COCO目标检测和COCO图像分割的第一名。
1. Introduction
深度卷积神经网络[22,21]为图像分类带来了一系列突破[21,50,40],深度网络自然的以端到端的多层方式集成了低/中/高不同层次的特征[50],并且可以通过增加层深来丰富特征的特征的“层次”。最近的研究[41,44]揭示了网络深度是至关重要的。在ImageNet比赛中,[41,44,13,16]都不约而同的使用了“非常深”的[41]模型,深度从16到30层不等。许多其他一些视觉识别任务[8,12,7,32,27]也从非常深的模型中获益匪浅。
在深度意义的推动下,出现了一个问题:是不是更深的层就一定能学习出更好的网络?回答这个问题的一大障碍就是臭名昭著的梯度消失/爆炸问题[1,9],它从训练的一开始就阻碍了收敛。然而,这个问题已经在很大程度上通过归一化初始化[23,9,37,13]和正则化层[16]来解决,这使得几十层的网络能够使用随机梯度下降(SGD)和反向传播进行收敛。
在考虑更深层网络的收敛问题时,退化问题就出现了:随着网络深度的增加,accuracy开始饱和(这可能不足为奇),然后迅速变差。出乎意料的是,这种退化并不是由于过拟合造成的,并且在适当深度模型中增加更多的层会导致更多的训练误差,如[11,42]中所说,并且通过作者的实验得到充分验证。图1展示了一个典型的例子。
训练精度的退化表明,并非所有的系统都容易优化。让我们考虑一个较浅的架构和对应的添加更多层之后的深层架构。对于构建更深层的模型存在一个解决方案:添加的层是identity mapping,并且是从训练好的浅层模型中复制而来。这种构建方式表明,更深的模型不应该比较浅的模型产生更高的训练误差。但实验表明,我们现有的方案都找不到解,找不到更好或者同样好的解(或者在可接受的时间内无法做到)。
在本文中,作者通过引入一个深度残差学习deep residual learning框架,来解决退化问题。作者明确的让这些层去吻合残差映射,而不是期望每一层能直接吻合一个映射。形式上,用H(X)
表示期望的底层映射即最优解映射,让堆叠的非线性层去拟合另一个映射F(X):=H(X)-X
。原最优解映射H(X)
可以改写为F(X) X
。我们假设残差映射跟原映射相比更容易被优化。在极端情况下,如果identity mapping是最优的,那么将残差推到0比用一堆非线性层来拟合一个identity mapping要更容易。