论文阅读笔记: Deep Residual Learning for Image Recognition

论文阅读笔记: Deep Residual Learning for Image Recognition

论文动机

Deep Residual Learning for Image Recognition一文的研究动机是为了解决训练层数较多的深度神经网络时,随着网络层数的增加会发生的一种退化(degradation)问题:即随着模型深度增加,准确率会达到饱和而后迅速下降,并且这种退化现象并不是由过拟合造成的。此外,作者还通过实验证实了,在一个深度模型上单纯增加更多的层数会导致更高的training error和test error,并不一定层数越多的模型效果就越好,如图:
在这里插入图片描述

为了解决训练精度下降的问题,作者在论文中提出了一种叫做"深度残差学习框架"(Deep residual learning framework)的网络。在这个网络框架中,每个堆叠层(Stacked layer)拟合残差映射(Residual mapping),而不去拟合整个的基础映射(Underlying mapping),并且作者认为比起直接学习原始映射,学习残差映射会更容易。在文章的之后部分,作者提供了全面的证据来表明深度残差网络(ResNet)的有效性和准确性,在ImageNet数据集上152层的残差网络(VGG网络的8倍深度)达到了仅3.57%的错误率,并且保持着较低的复杂度,在其余的一些图像分类比赛中,深度残差网络也表现优异,在多项分类任务中赢得当年的冠军。此外,作者表明还,深度残差学习原理是通用的,适用于其他视觉和非视觉领域的问题。
总而言之,本文的研究和撰写动机源于较高深度的深度学习中的退化问题,作者通过残差学习来重构模型,使得进行更深层次的深度学习时,模型的准确率和学习效果达到更好,保持不减。

解决方法

首先作者在ResNet中以ReLU作为激活函数,该激活函数有许多优异的性质,例如:

  • 计算量小:ReLU是非线性函数,相比于其它非线性激活函数如sigmoid和tanh,ReLU的计算量小,计算速度更快。例如在本篇文章中提到的152层的ResNet模型(113亿次浮点运算)有着比16层的VGG模型(153亿次浮点运算)更小的复杂度和计算量;

  • 稀疏性:当输入为负时,ReLU的输出为0,这意味着只有一部分神经元会被激活,从而使得网络更加稀疏化,减少了参数的数量,减少了参数间的相互依赖,降低了过拟合的风险,使得模型表现更良好;

  • 收敛速度快:在训练过程中,ReLU的梯度始终为大于0的常数或等于0,这样可以避免出现梯度消失的情况,加快了收敛速度。

在该激活函数的基础上,作者做了以下研究和工作:

残差表征(Residual Representations)[^1]和残差学习(Residual
Learning):

作者先提到,在图像识别中,进行向量量化时对残差向量进行编码比对原始矢量进行编码更有效,而在在低层次视觉和计算机图形学中处理偏微分方程时,通过对两个尺度之间的残差向量进行预处理能达到更好的效果,其收敛速度比不知道残差性质的普通求解器快很多。这些方法也说明了,在残差上面做文章的好处。

作者提出一个论断:如果多个非线性层可以渐进地逼近复杂函数,那么相当于其可以渐进地逼近复杂函数的残差函数:H(x) -x(假定输入和输出具有相同的维度))。如图,作者并没有让网络直接拟合基础映射(underlying mapping)H(X),而是拟合残差映射F(X) = H(X) - X,原始基础映射则被表示为F(x) +X。这样做的好处是,把残差拟合至0和可能比把原先映射拟合逼近到一个非线性函数要容易的多,这也是本篇论文的核心。

作者这样的做法和上文中的奇怪现象(层数更多错误率却更高)有关,如果更深层次的映射是恒等映射(即H(X)=X),那么深层次的模型应具有不大于其较浅部分的训练误差,这说明求解程序在通过多个非线性网络层去拟合恒等映射时可能存在问题。

作者讲述更深层次采用恒等映射为预设的理由有:
如果恒等映射是最优的,那么网络模型可以简单地将多个非线性层的权值趋近于零来逼近恒等映射(即令F(X)->0);但在实际情况中,恒等映射不太可能是最优的,但若最优函数更接近于恒等映射而不是零映射,那么就更容易参照恒等映射找到有关的扰动(perturbations),这比去学习一个全新的映射函数更高效。并且在实验的最终结果中,学习出残差函数通常有较小的变化,这说明恒等映射是一个合理的预处理。

在这里插入图片描述

**跳接(Shortcut
Connections)构建带有恒等映射的残差块:**在一些更早的理论和实践中,已经存在用跳接的方法来构建分类器和感知机的方法,而此次作者用了这种方式来构建残差块。

作者对每几个堆叠层进行残差学习,如下图,并将一个残差块的结构定义为:

在这里插入图片描述

上图的公式中函数 F ( x , { W i } ) F(x,\{W_i\}) F(x,{Wi})代表需要学习的残差映射,而采用跳接方法既没有引入额外的参数,也没有增大计算的复杂性。有时候若需要匹配F和x的维度,可以用一个额外的矩阵 W s W_s Ws与x相乘:

在这里插入图片描述

但作者也指出恒等映射足够解决网络衰退的问题,并且足够经济简单,因此这个参数 W s W_s Ws仅在匹配维度时使用即可。

**网络结构:**论文中主要构建了两个网络模型进行实验:

  • 普通的网络模型(基于VGG)

    该基本模型受到VGG-19的启发,卷积层大多是3×3的过滤器(filter),并且对于相同尺寸的输出特征图谱,每层必须含有相同数量的过滤器,而如果特征图谱的尺寸减半,则过滤器的数量必须翻倍,以保持每层的时间复杂度,同时步长stride=2的卷积层进行下采样,网络末端以均值池化层结束和一个带有softmax激活的1000层的全连接层结束,共34层,这样构建出的34层网络计算量远小于VGG-19。

  • 深度残差网络

    基于普通网络,结合跳接(Shortcut Connections)来实现残差学习。跳接不带有额外的参数和复杂度,方便与普通网络比较,二者具有相同数量的参数、深度、宽度和计算成本。而当面临当维度增加即需要匹配X和F的维度时(图中虚线捷径),作者给出两种方案,一是仍然执行恒等映射,额外的维度进行0填充;二是进行1*1的卷积匹配维度。

在这里插入图片描述

深度瓶颈架构(Deeper Bottleneck Architectures)

在这里插入图片描述

在真实实验中,为了减少训练时间,改用一种瓶颈设计,如上图。对于每个残差函数F,将2层结构改为3层,先用1x1压缩通道数目以减少计算量,3x3进行卷积,再用1x1进行升维,带来更高的效率。可以看到由于左图中跳接连接到两个高维两端,时间复杂度和模型大小是加倍的,就会耗费太多时间。

实施策略(Implementation)

首先是对图像尺寸处理,在[256,480]范围内随机进行取样,并用较小边作为图片的大小。从一个图片中随机的取样一个大小为224*224的块,对该块进行水平翻转,并且每个像素减去其平均像素值。在进行卷积之后及ReLU之前,作者采用了batch normalization(批标准化,用以加速训练,减少错误),作者还采用了一个大小为256的最小批处理SGD。开始的学习率为0.1,并且当训练错误趋于稳定时,学习率就上除以10。此外,对模型的迭代训练多达600000次,使用的weight decay系数为0.0001,动量系数为0.9,不使用Dropout(用于控制过拟合)。

测试时,为了进行比较研究,采用了standard 10-crop testing。

实验结果

作者在不同的数据集上验证了残差模型的泛化能力,并且对每个数据集:

  • 对比了残差网络和普通网络,验证是否解决了退化问题,并比较收敛速度和响应强度;

  • 相同的残差网络,比较不同的跳接shortcuts策略(A:0填充;B: W s W_s Ws映射;C:全用 W s W_s Ws映射);

  • 探索了残差网络层数对效果的影响;

  • 深度残差网络和其余算法的效果对比;

而具体的实验结果有:

ImageNet
分类数据集
上的测试(Shortcuts采用0填充方案),如下图:

在这里插入图片描述
在这里插入图片描述

  • 普通网络具有退化问题,随着网络深度的增加,错误率上升,更深的普通网络可能指数级地降低收敛速度,对训练误差的降低产生影响;

  • 深度残差网络消除了退化问题,层数增加时错误率下降;

  • 对比普通网络,34层ResNet将错误降低了3.5,说明了其有效性;

  • 残差网络收敛速度更快。

三种Shortcuts跳接方式:

在这里插入图片描述

  • B方式比A稍微好一点,也许因为A中补0的部分没有残差学习;

  • C比B好一点,归因于 W S W_S WS的额外参数;

  • A、B、C之间的差异细微,说明 W s W_s Ws对于解决退化问题并不是必需的,而且C方式内存、时间复杂度和模型大小都更大,综合考虑采用B方案+深度瓶颈架构。

和其他先进的图像分类算法以及不同层数的对比:

在这里插入图片描述
在这里插入图片描述

  • 在单模型表现上,与其他最先进技术的比较,34层的残差网络已经表现很好,但深度增加后精度也进一步增加,152层top-1和top-5的验证误差率达到19.38%和4.49%,是所有当中最高的;

  • 6个不同深度的残差模型组合在一起形成一个集成模型(在提交时只有两个152层的模型),得到了3.57%的测试集top-5
    error,有效降低了错误率,在2015 ILSVRC中获得了第一名;

  • 18层的普通模型已经有不错的精确性,但残差网络ResNet通过在早期阶段提供更快的收敛速度而简化了优化过程;

  • 利用深度瓶颈架构,构建三层的残差块,得到50、101、152层的残差网络,即便152层ResNet(113亿FLOPs)复杂度仍比VGG-16/19(153/196亿次FLOPs)小,并且都比34层的ResNet准确率高很多,也没有发生退化现象,因此看出从增加的深度中获得了显著的准确率收益,所有评价指标都可以看到残差学习方法下深度的好处。

总而言之,普通网络出现了明显的退化问题,较高的层数有更高的错误率。然而这种情况与梯度消失/爆炸无关,因为有批归一化(BN)的存在。残差网络在34层的结果比18层更优,更多的层数准确率更高,证明了这种方法解决了退化的问题。18层的普通网络和18层的残差网络的准确率差不多,但是残差网络的收敛更快。

CIFAR-10数据集上的测试:

作者在CIFAR-10数据集上做了更多研究,50k训练图片,10k测试图片,10类,目的在于研究极深网络的效果。网络输入为32×32图像,全减去平均像素。第一层是3×3的卷积。然后在大小分别为32,16,8的特征图中使用具有3×3卷积的6n层堆栈,每个特征图大小具有2n层。过滤器的数量分别对应为16、32、64。下采样由步长为2的卷积执,。网络以全局平均池,10路全连接层和softmax结尾。总共有6n + 2个堆叠的加权层。结构如下图:

在这里插入图片描述
衰减率=0.0001,动量=0.9,使用批归一化Batch-normalization,无dropout。两个gpu,mini-batch=128。 α \alpha α(学习率)=0.1,在32k和48k次迭代时 α \alpha α除以10,在64k次迭代时终止训练。采用数据增强策略:在各边缘增加4像素,32x32的切割完全随机,从填充后的图像或者其翻转中采样。

层响应分析:

在这里插入图片描述

此分析揭示了残差函数的响应强度。残差函数通常比非残差函数更接近于零,同时更深的ResNet(残差网络)具有较小的响应范围。当有更多的层时,ResNet的单个层修改信号较少,说明此前作者提出的恒等映射+残差学习的策略是科学合适的。

大于1000层的深度模型的探究:

在这里插入图片描述
在这里插入图片描述

作者在此处建立了一个超过1000层的深度模型,将n设置为200,从而得到1202层残差网络,该网络如上所述进行训练。结果证实优化良好,没有增加难度。该1000层网络能够实现训练误差<0.1%,其7.93%的测试误差仍然相当不错,而误差率先比110层增加可能是过拟合。

其余数据集的测试(PASCAL和MS COCO)
作者通过实验证明了模型有良好的泛化能力,PASCAL VOC
2007、2012、COCO的目标检测基线结果如下图,并且基于深度残差网络,作者在2015年ILSVRC&COCO竞赛中获得了几个任务的第一名:ImageNet detection, ImageNet
localization, COCO detection, COCO segmentationCOCO。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值