论文笔记
论文来源:
Deep Residual Learning for Image Recognition
代码来源
还没上传
1论文摘要的翻译
深度神经网络更难训练。我们提出了一个残差学习框架,以简化比以前使用的网络深度大得多的网络的训练。我们明确地将层重新表述为参考层输入的学习残差函数,而不是学习未参考的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从相当大的深度中获得精度。在ImageNet数据集上,我们评估了深度高达152层的残差网络——比VGG网络深度8倍[41],但仍然具有较低的复杂性。这些残差网络的集合在ImageNet测试集上的误差达到3.57%。该结果在ILSVRC 2015分类任务中获得第一名。我们还介绍了100层和1000层的CIFAR-10分析
表征的深度对于许多视觉识别任务至关重要。仅由于我们的极深表示,我们在COCO对象检测数据集上获得了28%的相对改进。深度残差网络是我们参加ILSVRC & COCO 2015竞赛的基础1,我们还在ImageNet检测、ImageNet定位、COCO检测和COCO分割的任务中获得了第一名
背景
问题
- 学习更好的网络就像堆叠更多的层一样简单吗
== 这个问题已经通过规范化初始化和中间规范化层得到了很大程度的解决,这使得具有数十层的网络能够开始收敛随机梯度下降(SGD)与反向传播。== - 当更深的网络能够开始收敛时,一个退化问题就暴露出来了:随着网络深度的增加,精度趋于饱和(这可能不足为奇),然后迅速退化。适当深度的模型上增加更多的层会导致更高的训练误差,如下图所示
这里提出一个网络架构优化的思路
当我们考虑一个较浅的体系结构,它在上面添加了更多的层。通过构造更深的模型存在一个解决方案:添加的层是身份映射,其他层是从学习的较浅模型复制的。这种构造解的存在表明,较深的模型不会比较浅的模型产生更高的训练误差。
2论文的创新点
- 提出了一个残差学习框架 来解决退化问题,同时比以前使用的网络深度大得多 而训练更方便。
3 论文方法的概述
映射方法
形式上,我们将期望的底层映射表示为H(x),我们让堆叠的非线性层适合F(x)的另一个映射:= H(x) - x。原始映射被重新转换为F(x)+x。我们假设优化残差映射比优化原始的、未引用的映射更容易。在极端情况下,如果一个恒等映射是最优的,将残差推至零要比用一堆非线性层拟合一个恒等映射容易得多。
shortcut connections
短路连接是那些跳过一个或多个层的连接
3.1残差学习
让我们把H(x)看作是由几个堆叠层(不一定是整个网络)拟合的结果,其中x表示这些层的第一层的输入。如果假设多个非线性层可以渐近逼近复杂函数s,则等价于假设它们可以渐近逼近残差函数,即H(x)−x(假设输入和输出具有相同的维数)。因此,我们不是期望堆叠层近似于H(x),而是明确地让这些层近似于残差函数F(x):= H(x) - x。因此,原始函数变为F(x)+x。尽管这两种形式都应该能够渐进地逼近所需的函数(如假设的那样),但学习的难易程度可能有所不同。
3.2 通过Shortcut 来进行身份映射
-
我们对选取的堆叠层采用残差学习,公式如下
y = F ( x , W i ) + x y = F(x, {W_i}) + x y=F(x,Wi)+x ,如下图所示。
如果 x x x维度与 F F F维度不同则采用线性投影 W W W来匹配维度 y = F ( x , W i ) + W s x y = F(x, {W_i}) + W_sx y=F(x,Wi)+Wsx -
残差函数F的形式是灵活的。本文中的实验涉及到一个函数F,它有两层或三层(图5),而更多的层是可能的。下图对比了残差块两层,三层的情况
3.3网络架构
- Plain Network :
我们的plain baseline(中间)主要受到VGG网原理的启发(左)。卷积层大多具有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,各层具有相同数量的滤波器;(ii)如果特征图大小减半,则滤波器的数量增加一倍,以保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。网络以一个全局平均池化层和一个带有softmax的1000路全连接层结束。图3(中)加权层总数为34层。 - Residual Network
在上述Plain Network的基础上,我们插入shortcut connections(右),将网络转换为对应的残差版本。- 当输入和输出维度相同时,可以直接使用标识快捷方式。
- 当维度增加时(图中的虚线快捷方式),我们考虑两种选择:
- 快捷方式仍然执行标识映射,增加维度时填充额外的零项。这个选项不引入额外的参数;
- 中的投影快捷方式用于匹配维度(通过1×1卷积完成)。
- 对于这两个选项,当快捷键跨越两个大小的特征映射时,它们的步幅为2。
3.4 实现
- 数据集
- 图像在[256,480]中随机采样其较短的一面以进行缩放
- 从图像或其水平翻转中随机采样224×224裁剪,并减去每像素平均值。
- 使用标准颜色增强。
- 每次卷积之后和激活之前采用批归一化(BN)。
- 初始化权重,并从头开始训练所有的plain/residual网络。
- SGD的小批量大小为256。学习率从0.1开始,当误差趋于平稳时除以10,模型的训练次数可达60 × 104次。
- 使用0.0001的权重衰减和0.9的动量。不使用dropout。
在测试中,采用标准的10种作物测试进行比较研究,这里为了获得最佳结果,采用了[41,13]中的全卷积形式,并在多个尺度上平均得分(图像被调整大小,使较短的一面在{224,256,384,480,640}中)
4 论文实验
4.1 ImageNet Classification
- 数据集:ImageNet 2012 classifi-
cation dataset
Plain Networks 我们首先评估了18层和34层的普通网。34层平面网如图3(中)所示。18层的平面网也是类似的形式。请参见下表了解详细的体系结构。
Residual Networks 评估18层和34层残余网(ResNets)。基线架构与上面的普通网络相同,除了向每对3×3过滤器添加一个快捷连接外,如上图所示。在第一个比较中,我们对所有shortcut connection使用标识映射,对增加维度使用零填充(选项A)。因此,与普通对应项相比,它们没有额外的参数。
下表的结果表明,较深的34层plain net比较浅的18层plain net具有更高的验证误差。为了揭示原因,在下图中,我们比较了它们在训练过程中的训练/验证误差。而对于残差网络,首先,残差学习的情况正好相反——34层的ResNet比18层的ResNet好2.8%。更重要的是,34层的ResNet显示出相当低的训练误差,并且可以推广到验证数据。这表明在这种情况下,退化问题得到了很好的解决,我们设法从增加的深度中获得精度增益。
4.2
- 数据集:CIFAR-10 dataset
plain/residual architectures 和上面一致
我们比较n ={3,5,7,9},得出20层、32层、44层和56层网络。图6(左)显示了plain network的性能。深plain network增加,深度越深,训练误差越大。这种现象与ImageNet(上图4,左)和MNIST上的情况类似,表明这种优化难度是一个基本问题
5 总结
ResNet网络通过使用残差模块,解决了增加CNN深度引起的性能退化问题。通过构建更深的卷积神经网络,提取更高层次的特征,使其拥有更高的性能。