深度卷积神经网络为图像分类带来一系列突破。有论文表明,网络的深度是很重要的。在网络深度必要性的驱动下,考虑一个问题:简单的堆叠更多的层得到的网络效果是否更好? 回答这个问题的第一个障碍就是梯度消失和梯度爆炸问题,但是这个问题已经被normalized initialization和 intermediate normalization layers解决,这使得几十层的神经网络开始收敛。
随着网络深度的增加,精度达到饱和,然后迅速下降。这不是由过拟合引起的,称之为退化。图1显示了一个典型的例子。
考虑一个较浅的网络模型和它对应的更深的网络模型。对深层模型的构造,存在一个解决方案:相比浅层网络,深层网络添加的层是恒等映射,而其他层是从浅层模型中复制出来的。 这个构造深层网络的方案表明,更深的模型不会比较浅的模型产生更高的训练误差。 但作者实验表明,目前无法构造这样训练误差不低于对应浅层网络训练误差的深层模型(或不能在可行的时间内完成)。
作者通过引入deep residual learning framework 来解决退化问题。不希望每几个堆叠层直接匹配所需的底层映射,而是明确地让这些层匹配残差映射。如果将期望的底层映射表示为H(x),让堆叠的非线性层拟合另一个映射F(x):=H(x)−x。 原始映射为F(x)+x。公式F(x)+x可以通过具有“shortcut connections”的前馈神经网络来实现(图2)。在作者例子中,shortcut connections只需执行恒等映射,它们的输出被加到残差块的输出。Identity shortcut connections既不增加额外的参数,也不增加计算的复杂性。
考虑H(x)作为一个底层映射,拟合几个 stacked层(不一定是整个网络),x表示这些层中第一层的输入。如果假设多个非线性层可以渐近近似复杂函数,那么它就等价于假设它们可以渐近近似残差函数,即H(x)−x(假设输入和输出具有相同的维数)。因此,我们不是期望堆叠的层近似于H(x),而是让这些层近似一个残差函数F(x):=H(x)−x,原来的函数就变成了F(x)+x。虽然这两种形式都应该能够渐近地近似于所期望的函数,但学习的容易程度可能是不同的。
退化问题表明,求解器在通过多个非线性层逼近恒等映射时可能存在困难。通过残差学习重构,如果恒等映射是最优的,求解器可以简单地将多个非线性层的权值推向零,以接近恒等映射。
在实际情况下,身份映射不太可能是最优的,但文章的重构可能有助于解决问题的先决条件。如果最优函数更接近于恒等映射而不是零映射,那么求解器应该更容易找到参考恒等映射的扰动,而不是将该函数学习为一个新的函数更容易。我们通过实验(图7)表明,学习到的残差函数一般的响应较小,这表明恒等映射提供了合理的预处理。
每隔几个堆叠层就采用残余学习。一个构建块如图2所示。将这种构建块定义为: y = F ( x , { W i } ) + x y = F(x,\{W_i\})+x y=F(x,{Wi})+x 这里的残差F(x)与
自身输入x的维度必须一致。若维度不一样,可以通过做一个线性投影 W s W_s Ws来匹配维度:
y = F ( x , { W i } ) + W s x y = F(x,\{W_i\})+W_sx y=F(x,{Wi})+Wsx
残差函数F的形式是灵活的。本文的实验涉及的函数F有两层或三层(图5),但是也可能有更多的层。但如果F只有一层,类似于线性层: y = W 1 x + x y=W_1x+x y=W1x+x,我们没有观察到其优势。
Plain Network 普通网络的基本基线(图3中)主要是受到VGGnets的启发(图3,左),共34层。卷积层几乎都是3×3卷积核,并遵循两个简单的设计规则:(i)对相同的输出特征图尺寸,这些层有相同数量的卷积核。(ii)如果特征映射大小减半,卷积核的数量将增加一倍,以保持每层的时间复杂度。我们通过步幅为2的卷积层直接执行降采样。该网络以一个全局平均池化层和一个具有softmax的1000分类全连接层结束。
Residual Network 在Plain Network的基础上,插入快捷连接(图3右)将网络转化为对应的残差版本。当输入和输出具有相同尺寸时,用实线连接。当尺寸增加时,用虚线连接。当维度不同时,有以下两个方法将其转化为相等。(A)shortcut仍然执行恒等映射,通过零填充使维度相同,此选项不引入额外的参数;(B)按照方程(2)做一个线性投影来匹配维度(由1×1卷积完成)。对于这两个选项,当shortcut跨越两种大小的特征映射时,它们将以2的步幅执行。
为了比较学习我们采用标准的10-crop测试。对于最好的结果,我们采用如[40, 12]中的全卷积形式,并在多尺度上对分数进行平均(图像归一化,短边位于{224, 256, 384, 480, 640}中)。
从表2中的18层和34层普通网络已经观察到了退化现象。作者认为,这种优化的困难不太可能是由梯度的消失引起的。这些普通网络用BN[16]进行训练,以确保前向传播的信号具有非零方差。还验证了反向传播的梯度,结果显示其符合BN的正常标准。所以正向和向后的信号都不会消失。
从表2和图4中有三个主要的观察结果。首先,残差学习逆转了情况——34层ResNet比18层ResNet更好(提高了2.8%)。第二,相比与对应的普通网络,34层ResNet将Top-1错误率减少了3.5%。最后,我们还注意到,18层的普通/残差网络相对准确(表2),但18层的ResNet收敛得更快(图4右对左)。
(A) 零填充快捷连接用来增加维度,所有的快捷连接是没有参数的(与表2和图4右相同);
(B) 投影快捷连接用来增加维度,其它的快捷连接是恒等的;
(C)所有的快捷连接都是投影。
表3显示,所有三个选项都比普通选项要好得多。B比A稍好一些。我们认为这是因为A中的零填充维数确实没有残余学习。C比B稍微好一些,我们将其归因于许多(13)个投影快捷方式引入的额外参数。但是A/B/C三种方案的微小差异表明,投影捷径对于解决退化问题并不是必要的。
上图中的左侧为普通残差模块,用于ResNet-18,ResNet-24;右图为bottleneck残差模块,用于 ResNet-50,ResNet-101,ResNet-152。bottleneck 残差模块用 1X1,3X3,1X1 的卷积结构来替换 3X3, 3X3 的结构,他们所实现的功能是完全一样的,但是优点是减少了参数量和计算量。其中第一个1X1 的作用是降维,让 3X3 的操作有更低的输入/输出维度,第二个 1X1 的作用是升维,将维度恢复到初始维度。
略
略
参考:
[1] https://blog.csdn.net/qq_38807688/article/details/84259547
[2] 论文原文