论文题目:Deep Residual Learning for Image Recognition
论文地址:https://arxiv.org/pdf/1512.03385.pdf
发表于:cvpr,2016
CNN分类网络自Alexnet的7层发展到了VGG的16以及19层,后来更有了Googlenet的22层。然而深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会导致网络收敛变得更慢。ResNet 深度残差网络,通过建立前面层与后面层的“短路连接”(shortcuts /skip connection),有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。
在ImageNet数据集上,ResNet的深度高达152层——比VGG网络深8层,但仍然具有较低的复杂度。在ImageNet测试集上达到了3.57%的误差,该结果在ILSVRC 2015年分类任务中获得了第一名。在ILSVRC&COCO 2015竞赛中获得图像网检测、ImageNet定位、COCO检测和COCO分割任务的第一名。
二、论文创新点
三、相关工作
1、残差表示(Residual Representations)
2、快捷连接(Shortcut connections)
四、主要内容
1、残差学习(Residual Learning)
2、恒等映射(Identity Mapping by Shortcuts)
3、网络架构(Network Architectures)
五、实验设置
六、实验结果
1、评估18层和34层的简单/残差网络
2、更深的Residual结构(改为了瓶颈结构)的探究
传统的堆叠网络有两个缺点:(1)网络难以收敛,梯度消失或梯度爆炸在一开始就阻碍网络的收敛。传统解决方法为标准初始化和中间标准化层。这使得数十层的网络能通过具有反向传播的随机梯度下降(SGD)开始收敛。(2)当更深的网络能够开始收敛时,暴露了一个退化问题:随着网络深度的增加,准确率达到饱和然后迅速下降。并且这种下降不是由过拟合引起的,在适当的深度模型上添加更多的层反而会导致更高的训练误差。
假设训练了一个浅层网络,在其后面直接添加多层恒等映射层而构成一个深层网络,这个深层网络不会比浅层网络差,但是在合理的时间内实现不了。因此不是所有的系统都很容易优化,即深层网络不容易被优化,不一定能达到更好的效果。残差结构的提出的目的即为解决上述退化问题,以及网络优化难的问题。
在使用20层和56层“普通”网络在CIFAR-10上的训练错误(左)和测试错误(右)如上图所示。可见较深的网络训练误差越大,同时测试误差也越大。
提出了一个残差学习框架,以简化深层网络的训练。它通过使用多个有参层来学习输入输出之间的残差表示,而非像一般CNN网络(如Alexnet/VGG等)那样使用有参层来直接尝试学习输入、输出之间的映射。实验表明使用一般意义上的有参层来直接学习残差比直接学习输入、输出间映射要容易得多(收敛速度更快),也有效得多(可通过使用更多的层来达到更高的分类精度)。
在图像识别中,VLAD是一种对字典的剩余向量进行编码的表示,Fisher向量可以表示为VLAD的概率版本。它们都是图像检索和分类的强大的浅层表示。对于向量量化,对残差向量的编码比编码原始向量更有效。
在低级视觉和计算机图形学中,为了求解偏微分方程,广泛使用的多重网格方法将系统重新定义为多个尺度上的子问题,其中每个子问题负责更粗糙和更细尺度之间的残差解。多重网格的另一种选择是分层的基础预处理,它依赖于表示两个尺度之间的残差向量的变量。已经证明,这些解比不知道解的剩余性质的标准解收敛要快得多。一个良好的重新配方或预处理可以简化优化的过程。
短路连接的实践和理论已经被研究了很久。训练多层感知器(MLPs)的早期实践是添加一个从网络输入连接到输出的线性层。一些中间层直接连接到辅助分类器,用于解决梯度消失或者爆炸的问题。通过短路连接也可以来实现中心层响应、梯度和误差传播。一个“初始”层可以由一个短路分支和几个更深的分支组成。
同时,Highway 网络提供了门功能的短路连接。这些门依赖于数据,并且有参数,而我们的恒等短路连接是无参数的。当门控捷径“关闭”(接近零)时,Highway网络中的层代表非残差函数。相反,我们的公式总是学习残差函数;恒等式捷径永远不会关闭,所有的信息总是被传递,有额外的残差函数需要学习。此外,Highway网络没有证明精度随着极端深度的增加而增加。
将H(x)视为一个底层映射,以适合于几个堆叠的层,x表示第一层的输入。如果假设多个非线性层可以渐近近似复杂函数,则等价于假设它们可以渐近近似残差函数,即H(x)−x(假设输入和输出具有相同的维数)。因此,我们不是期望堆叠的层近似于H(x),而是显式地让这些层近似于一个残差函数F(x)=H(x)−x,原始函数成为F(x)+x。虽然这两种形式都能够渐近地近似所需的函数,学习的容易性是不同的。
如果添加的层可以被构建为恒等映射,更深模型的训练误差应该不大于它对应的更浅版本。退化问题表明,求解器在用多个非线性层逼近恒等映射时可能存在困难。对于残差学习重构,如果恒等映射是最优的,求解器可以简单地将多个非线性层的权值推向零,以接近恒等映射。
在实际情况下,恒等映射不太可能是最优的,但重新表述可能有助于解决问题的先决条件。如果最优函数更接近于一个恒等映射,而不是一个零映射,那么求解器应该更容易找到参照一个恒等映射的扰动,而不是学习该函数作为一个新的函数。我们通过实验表明,学习到的残差函数一般的响应较小,这表明恒等映射提供了合理的预处理。
我们每隔几个堆叠层就采用残差学习。一个构建块如上图所示。在形式上,我们考虑一个定义为:
函数F(x)表示要学习的残差映射。对于上图中有两层的例子,是F=W2σ(W1x),其中σ表示ReLU激活函数,操作F+x通过短路连接和元素级加法来执行。短路连接既不引入额外的参数,也不增加计算复杂度。这不仅在实践中很有吸引力,而且在比较普通网络和残差网络时也很重要,可以公平地比较同时具有相同数量的参数、深度、宽度和计算成本的普通/残差网络。
X和F的尺寸在上述公式中中必须相等。如果不是这种情况,可以通过短路连接执行线性投影Ws,以匹配以下尺寸:
用两个设计规则来设计残差网络:(i)对于相同的输出特征图尺寸,层具有相同数量的滤波器;(ii)如果特征图尺寸减半,则滤波器数量加倍,以便保持每层的时间复杂度,通过步长为2的卷积层直接执行下采样。
下图中的右两个网络以全局平均池化层和具有softmax的1000维全连接层结束。左:作为参考的VGG-19模型。中:顺着VGG网络思维继续加深其层次而形成的一种VGG朴素网络,共有34个含参层。右:与上述34层朴素网络相对应的Resnet网络,主要由残差单元来构成。
在普通网络的基础上,插入短路连接,将网络转化为对应的残差版本。当输入和输出具有相同尺寸时,可以直接使用恒等短路连接(下图右实线)。当维度增加时(下图右虚线),考虑两个选项:(i)短路连接仍然执行恒等映射,额外填充零输入以增加维度。此选项不会引入额外的参数;(ii)投影短路连接用于匹配维度(由1×1卷积完成)。对于这两个选项,当短路方式跨越两种大小的特征图时,以2的步幅执行。
在训练过程中,图像被调整大小,其较短的边在[256,480]之间进行随机采样,用于尺度增强。24×224裁剪是从图像或其水平翻转中随机采样,并逐像素减去均值,使用标准颜色增强。在每次卷积后和激活之前,采用批处理归一化(BN)。初始化权重,并从零开始训练所有的普通/残差网络。我们使用的是批大小为256的SGD方法。学习率从0.1开始,当误差趋于稳定时除以10,模型训练高达60×104次迭代。我们使用的权重衰减为0.0001,动量为0.9。不采用dropout。
在测试中,为了比较学习,采用标准的10-crop测试。为了获得最好的结果,采用全卷积形式,并在多尺度上对分数进行平均(图像归一化,短边位于{224, 256, 384, 480, 640}中)。
论文一共提出5种ResNet网络,网络参数统计表如下。下采样由conv3_1、conv4_1和conv5_1 执行,步幅为2。
下面是在ImageNet上训练的结果。细曲线表示训练误差,粗体曲线表示中心作物的验证误差。左图:18层和34层的普通网络。右图:18层和34层的ResNets。在这个图中,残差网络与普通的网络相比没有额外的参数。
对于更深的网络,由于担心能够负担的训练时间,对于每个残差函数F,使用3层的堆栈,而不是2层。三层分别是1×1、3×3和1×1卷积,其中1×1层负责减少和增加(恢复)尺寸,使3×3层成为输入输出尺寸更小的瓶颈结构块。下图中两种设计具有相似的时间复杂度。无参数的短路连接对于瓶颈体系结构尤为重要。如果将图5(右)中的短路连接替换为投影,则时间复杂度和模型大小增加了一倍。