当前位置:   article > 正文

Resnet残差网络学习_残差学习

残差学习
  • 动机:深度学习过程中,网络层数增加面临三个问题——计算资源的消耗梯度消失/爆炸网络退化。计算资源的消耗问题可以通过GPU集群来解决,梯度消失和爆炸的问题很大程度上已经被标准初始化/中间层正规方法控制了,这些方法使得深度神经网络可以收敛。网络退化指的是:随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降。网络退化不是过拟合造成的。它是不符合常理的,因为假设一个K层的目前最优网络f,那么可以构造一个更深的网络,它的最后几层是网络f的第K层输出的恒等映射(Identity Mapping),就可以取得和f一致的结果,也许K还不是最优的层数。那么更深的网络就可以取得更好的结果。总而言之,与浅层网络相比,更深的网络的表现不应该更差。因此,一个合理的猜测就是,对神经网络来说,恒等映射并不容易拟合。也许我们可以对网络单元进行一定的改造,来改善退化问题?这也就引出了残差网络的基本思路(参考自残差网络解决了什么

  • 残差块:残差单元可以以跳层连接的形式实现,即将单元的输入直接与单元输出加在一起,然后再激活。因此残差网络可以轻松地用主流的自动微分深度学习框架实现,直接使用BP算法更新参数。

3 Deep Residual Learning

3.1 Residual Learning

  将H(x)视为一个潜在映射(H就是期望拟合的特征图),由几个堆叠的层(不一定是整个网络)进行拟合,其中x表示这些层中的第一层的输入。如果假设多个非线性层可以渐近逼近复杂函数,那么就相当于假设它们可以渐近逼近残差函数,即H(x)-x(假设输入和输出的维度相同)。因此,比起期望堆叠层近似于H(x),我们更期望显式地让这些层近似于残差函数F(x)=H(x)-x。原来的函数因此变成F(x)+x。虽然这两种形式都应该能够渐近地逼近所需函数(如假设那样),但学习的容易程度可能不同。

  为什么要重新表示这个函数呢?动机是关于退化问题的与直觉不符的一些现象(图1,左图)。正如我们在第一节Introduction中所讨论的,如果添加的层可以构造为恒等映射,则更深的模型的训练误差不应大于较浅的模型。退化问题表明,解算器可能难以通过多个非线性层逼近单位映射。通过残差学习重新表述,如果恒等映射是最优的,则解算器可以简单地将多个非线性层的权重推向零,以接近恒等映射。

  在实际情况下,恒等映射不太可能是最优的,但我们的重新表述可能有助于解决这个问题。如果最优函数更接近于恒等映射而不是零映射,那么解算器应该更容易找到关于恒等映射的扰动,而不是将函数作为新函数学习。我们通过实验(图7)表明,学习的残差函数通常具有较小的响应,这表明恒等映射提供了合理的预处理。 

3.2 Identity Mapping by Shortcuts

  我们对每几层进行残差学习。构建块如图2所示。在本文中,我们考虑定义为:

  这里的x和y是所考虑的层的输入和输出向量。函数F(x,\left \{ W_{i} \right \})表示要学习的残差映射。对于图2中具有两层的示例,F=W_{2}\sigma (W_{1}x),其中σ表示ReLU,同时为了简化,省略了偏置bias。通过快捷连接和元素添加来执行F+x的操作。我们采用加法后的第二非线性(即σ(y),见图2)。

  公式(1)中的快捷连接既不引入额外的参数,也不引入计算复杂性。这不仅在实践中很有吸引力,而且在我们比较普通网络和残差网络时也很重要。我们可以比较同时具有相同数量的参数、深度、宽度和计算成本(除了可忽略的元素相加)的普通/残差网络。

  X和F的维度必须在公式(1)中相等。如果情况并非如此(例如,在更改输入/输出通道时),我们可以通过快捷连接执行线性投影W_{s},以匹配维度: 

  我们也可以在公式(1)中使用平方矩阵W_{s}。但我们将通过实验证明,恒等映射足以解决退化问题,因此仅在匹配维度时使用。

  残差函数F的形式是灵活的。本文中的实验涉及一个有两层或三层的函数F(图5),更多层也是可能的。但如果F仅为单层,则公式(1) 类似于线性层:y=W_{1}x+x,我们尚未观察到其优点。

  我们还注意到,尽管为了简单起见,上述符号是关于全连接层的,但它们也适用于卷积层。函数F(x,\left \{ W_{i} \right \})可以表示多个卷积层。逐通道在两个特征图上执行元素添加。 

 3.3 Network Architectures

  我们测试了各种平面/残差网络,观察到一些一致的现象。为了提供讨论的实例,我们描述了ImageNet的两个模型,如下所示。

  Plain Network:我们的简单baseline(图3,中间)主要受VGG网络的启发[41](图3,左)。卷积层大多是3×3的滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,层具有相同数量的滤波器;和(ii)如果特征图大小减半,则过滤器的数量将增加一倍,以保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。网络以一个全局平均池化层和一个带有softmax的1000路全连接层结束。图3(中间图)中加权层的总数为34。

  值得注意的是,我们的模型比VGG网络有更少的滤波器和更低的复杂度。我们的34层baseline有3.6billion的FLOPs,仅为VGG-19的18%(19.6billionFLOPs)。

Residual Network: 基于上述普通网络,我们插入快捷连接(图3,右),将网络转换为其对应的残差版本。当输入和输出维度相同时(图3中的实线快捷方式),可以直接使用恒等快捷方式(等式(1))。当维度增加(图3中的虚线捷径)时,我们考虑两个选项:(a)快捷方式仍然执行恒等映射,使用额外的零项填充以增加维度。此选项不引入额外参数;(b)公式(2) 中的投影快捷方式。用于匹配维度(通过1×1卷积完成)。对于这两个选项,当快捷键穿过两种尺寸的特征图时,它们将以2的步长执行。

3.4 Implementation

  我们对ImageNet的实现遵循了[21,41]中的实践。在[256,480]范围中对图像的较短边进行随机采样,以调整图像的大小进行缩放[41]。从图像或其水平翻转中随机采样224×224的裁剪,并减去每像素平均值[21]。使用[21]中的标准颜色增强。我们在每次卷积之后和激活之前采用批处理归一化(BN)[16],如下[16]。我们按照[13]中的方法初始化权重,并从头开始训练所有普通/残差网络。我们使用最小批量为256的SGD。学习速率从0开始。当误差稳定时,除以10,模型的训练次数可达60×104次迭代。我们使用的权重衰减为0.0001,动量为0.9。按照[16]中的做法,我们不使用Dropout[14]。在测试中,对于比较研究,我们采用标准10-crop测试[21]。为了获得最佳结果,我们采用了[41,13]中所述的完整的协同进化形式,并在多个尺度上平均分数。

4 Experiments

Plain Networks:首先评估18层和34层平面网络。34层如图3(中间)所示。18层的形式类似。有关详细的体系结构,请参见表1。表2中的结果表明,较深的34层平面网比较浅的18层平面网具有更高的验证误差。为了揭示原因,在图4(左)中,我们比较了他们在培训过程中的培训/验证错误。我们观察到,退化问题——尽管18层平面网络的解空间是34层平面网络解空间的子空间,但34层平面网络在整个训练过程中具有较高的训练误差。

  我们认为,这种优化困难不可能是由消失梯度引起的。这些普通网络使用BN[16]进行训练,确保前向传播的信号具有非零方差。我们还验证了反向传播的梯度在BN中表现出健康的规范。因此,向前或向后的信号都不会消失。事实上,34层平面网仍然能够达到具有竞争力的精度(表3),这表明解算器在一定程度上起作用。我们推测,深平面网可能具有指数级的低收敛速度,这影响了训练误差的减少3。这种优化困难的原因将在将来研究。

 Residual Network:接下来,我们评估18层和34层剩余网络(RESNET)。基线体系结构与上述普通网络相同,除了如图3(右图)所示为每对3×3滤波器添加一个快捷连接之外。在第一次比较中(表2和图4右侧),我们对所有快捷方式使用恒等映射,对增加维度使用零填充(选项A)。因此,与普通对应项相比,它们没有额外的参数。

  我们从表2和图4中得到了三个主要观察结果。首先,这种情况通过剩余学习得到了扭转——34层ResNet比18层ResNet好(2.8%)。更重要的是,34层ResNet显示出相当低的训练误差,并可推广到验证数据。这表明退化问题在该设置中得到了很好的解决,我们设法从增加的深度中获得精度增益。

  第二,34层的残差网络将top-1错误减少了3.5%(表2),这是由于成功地减少了训练误差(图4右对左)。这种比较验证了剩余学习在极深系统上的有效性。

  最后,我们还注意到,18层平网/残差网的精度相当高(表2),但18层ResNet收敛速度更快(图4rightvs.left)。当网络“不太深”(此处为18层)时,当前的SGD解算器仍然能够找到平面网络的良好解决方案。在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。

Identity & Project:我们已经证明,无参数、身份快捷方式有助于培训。接下来我们研究投影捷径(方程(2))。在表3中,我们比较了三种选项:(A)零填充快捷方式用于增加维度,并且所有快捷方式都是无参数的(与表2和图4右侧相同);(B) 投影快捷方式用于增加尺寸,其他快捷方式为标识;(C)所有快捷方式都是投影。表3显示,所有三个选项都比普通选项好得多。我们认为这是因为A中的零填充维度确实没有剩余学习。C略好于B,我们将此归因于许多(十三)个投影快捷方式引入的额外参数。但A/B/C之间的微小差异表明,投影快捷方式对于解决退化问题不是必不可少的。因此,在本文的其余部分中,我们不使用选项C来降低内存/时间复杂性和模型大小。恒等快捷方式对于不增加下面介绍的瓶颈体系结构的复杂性特别重要。

Deeper BottleNeck Architectures:接下来,我们将介绍ImageNet的深层网络。由于担心我们能负担得起的训练时间,我们将构建模块修改为4。对于每个剩余函数f,我们使用3层的堆栈,而不是2层(图5)。三层是1×1、3×3和1×1卷积,其中1×1层负责减少然后增加(恢复)维数,使3×3层成为输入/输出维数更小的瓶颈。图5示出了一个示例,其中两种设计具有相似的时间复杂度。无参数标识快捷方式对于瓶颈体系结构尤为重要。如果将图5(右)中的标识快捷方式替换为投影,则可以显示时间复杂度和模型大小加倍,因为快捷方式连接到两个高维端。因此,恒等快捷方式为瓶颈设计提供了更有效的模型。

 50层-ResNet:我们用这个3层瓶颈块替换34层网络中的每个2层块,得到一个50层的ResNet(表1)。我们使用选项B来增加尺寸。这个型号有3.8billion FLOPs。

101层和152层ResNet:我们通过使用更多的3层块来构造101层和152层resnet(表1)。值得注意的是,尽管深度显著增加,但152层ResNet(113亿次浮点运算)的复杂度仍然低于VGG-16/19网络(153/196亿次浮点运算)。50/101/152层重网比34层重网更精确,有相当大的余量(表3和表4)。我们没有观察到退化问题,因此从深度的大幅增加中获得了显著的精度增益。所有评估指标都见证了深度的好处(表3和表4)。

与SOTA方法的比较:在表4中,我们与之前的最佳单模型结果进行了比较。我们的基线34层resnet已经达到了非常有竞争力的精度。我们的152层ResNet有一个模型top-5验证错误4。49%. 这个单一模型的结果优于所有以前的集合结果(表5)。我们将六个不同深度的模型组合成一个整体(提交时只有两个152层模型)。这导致了3.57%的测试集前5名错误(表5)。该参赛作品在2015年ILSVRC中获得第一名。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/863174
推荐阅读
相关标签
  

闽ICP备14008679号