0%

《Deep_Residual_Learning_for_Image Recognition》

ResNet

译:《图像识别中的深度残差学习》

论文地址:《Deep_Residual_Learning_for_Image Recognition》

Motivation

深层的卷积神经网络可以为图像识别带来一系列突破。许多模型使用更深层的方式实现了新的突破。然而,学习更好的网络模型就和堆叠更多的网络层一样容易吗?一个臭名昭著的问题就是梯度消失和梯度爆炸,这从一开始就阻碍了收敛,然而这个问题在很大程度上已经通过归一化各个层来解决。但是,随着网络的加深,网络退化问题则又出现了,随着网络深度的增加,准确率会饱和,然后迅速下降,这种退化不是由于过拟合引起的。因此,深层的神经网络模型是不容易进行优化的。

目前存在的一种解决方案是:添加层是恒等映射( identity mapping),其它层则是从学习的浅层模型复制而来,这种构造方法表明,较深的模型至少不会比浅模型产生更高的训练误差。但实验表明,这种递归递归结构的网络很难求解优化。

这篇论文通过引入深度残差学习解决了上述退化问题。

方法简介

残差学习

\(\mathcal{H}(X)\)为一些堆叠层的底层映射,其中的\(X\)表示的是这些堆叠层中第一层的输入。

论文显示地叠加层去近似于残差函数\(\mathcal{F}(X):=\mathcal{H}(X)-X\),而不是使这些层去近似\(\mathcal{H}(X)\),这样一来,原始函数就变成了\(\mathcal{F}(X)+X\),虽然两种形式应该都能渐进逼近所需函数,但学习的难易程度可能会有所不同。

即:过去是直接拟合\(\mathcal{H}(X)\),现在是拟合残差\(\mathcal{F}(X)=\mathcal{H}(X)-X\)

通过短路连接进行恒等映射

对每几个堆叠层进行残差学习,如图,形式上可定义为: \[ Y = \mathcal{F}(X,\{W_i\})+X \] 这里的\(X\)\(Y\)表示的是这些层的输入和输出,函数\(\mathcal{F}(X,\{W_i\})\)表示可以被学习的残差映射,对于上图情况,有两层,\(\mathcal{F} = W_2\sigma(W_1X)\)\(\sigma\)采用RELU激活函数,并且省略了偏差。\(\mathcal{F}+X\)的过程是通过短路连接(shortcut connection)和逐元素相加的方式进行。

此外,如果\(\mathcal{F}\)\(X\)维度不匹配,则需要对其进行线性映射\(Y=\mathcal{F}(X,\{W_i\}+W_sX)\)

残差函数的形式可以是灵活的,可以对应两层或三层或更多层,但如果只有一层,则会类似于线性层,这样情况下,残差没有发现有什么优点。

上述层主要是全连接层形式,但实际上也可以替换成卷积层,这样一来,函数\(\mathcal{F}(X,\{W_i\})\)表示多个卷积层,最后逐通道地对两个特征映射执行逐元素相加。

网络结构

如图,网络是受VGG网络理念的启发,中间的是基准网络,通过简单的将各个层进行堆叠实现深层神经网络,右边的是在基准网络中插入了短路连接("shortcut connections"),使其成功对应的残差网络版本,当维度保持不变时,可以直接进行连接,当存在升维时(图中虚线对应的情况),考虑两个选项:

  1. 仍然进行恒等映射(identity mapping),并使用填充零的方式升维,这种方式不会引入额外的参数
  2. 通过上述公式进行映射(使用\(1\times1\)卷积实现)

并且这两个选项在"shortcut"穿过两个尺寸的特征图时对应的步距都为2

后面的实验对两个选项的比较如下:

实现

更深的瓶颈架构

如图,论文修改了构建的块作为bottlenect设计,对每个残差函数\(\mathcal{F}\),使用3层堆叠代替之前的两层,这三层分别是\(1\times1,3\times3,1\times1\)卷积,\(1\times1\)层负责降维和升维,使得\(3\times3\)层输入和输出具有较小的瓶颈,并且这两种设计具有相似的时间复杂度。

ResNet解决网络退化的机理

  • 深层梯度回传顺畅
    • 恒等映射这一路的梯度是1,把深层梯度注入底层,防止梯度消失。没有中间商层层盘剥
  • 类比其它机器学习模型
    • 集成学习boosting,每个弱分类器拟合“前面的模型与GT之差”
    • 长短时记忆神经网络LSTM的遗忘门
    • Relu激活函数
  • 传统线性结构网络难以拟合“恒等映射”
    • 什么都不做有时很重要,而传统线性结构网络通常无法做到这一点
    • skip connection可以让模型自行选择要不要更新
    • 弥补了高度非线性造成的不可逆的信息损失

ResNet的优点

  1. 易于优化收敛
  2. 解决退化问题
  3. 可以很深,准确率大大提升