ResNet论文学习
引言
深度网络自然地以端到端的多层方式集成低/中/高级特征和分类器,特征的“级别”可通过堆叠层的数量来丰富
随着网络层数加深,提取的特征越强,但是
网络层数越深就一定性能越好吗?答案是否定的
深层网络存在的问题
-
梯度消失/梯度爆炸
这个问题已经通过 normalized initialization 和 intermediate normalization layers 得到了很大程度的解决,这使得具有数十层的网络能够开始收敛随机梯度下降(SGD)与反向传播 -
网络退化
随着网络层数的增加,准确率趋于饱和,然后迅速下降。这说明,并不是所有的网络结构都同样容易优化。
为了解释这一现象,作者考虑了一个较浅的网络结构及其对应的更深版本,后者在前者的基础上增加了更多的层。
理论上,对于这个更深的网络,可以构造一个解:新增加的层执行 identity mapping (即直接将输入传递到输出),而其他层则复制自较浅网络中已经学习到的层(就是把较浅的网络搬过来)。这样构造出的解应该能使得更深的网络不会比其较浅的对应网络有更高的训练误差。
然而,实验显示,目前使用的优化算法似乎无法找到与这个构造解相当好或更好的解,或者在合理的时间内无法找到这样的解。这意味着,尽管理论上更深的网络不应该有更差的性能,但在实际优化过程中却遇到了困难。这也是引入残差学习(ResNet)的初衷之一,即通过学习残差来缓解这种优化难题。
为了解决深度神经网络训练中的退化问题,作者提出了深度残差学习框架。
在这个框架中,不再期望网络的几层直接拟合一个 underlying mapping,而是让这些层去拟合一个残差映射(residual mapping)。
具体而言,
假设 underlying mapping 是 H ( x ) \mathcal{H}(x) H(x),那么让堆叠的非线性层去拟合另一个映射 F : = H ( x ) − x \mathcal{F}:=\mathcal{H}(x)-x F:=H(x)−x,那么原始的映射就变成了 F ( x ) + x \mathcal{F}(x)+x F(x)+x
假设优化残差映射 (residual mapping) 比优化原始的、未引用的映射更容易。

图中展示了残差学习的一个基本构建块。右侧的分支直接将输入 x x x 通过一个“快捷连接”传递到输出,这就是所谓的恒等映射(identity mapping)。
而 F ( x ) \mathcal{F}(x) F(x) 表示的是一个由 权重层和非线性激活函数(例如ReLU)组成的映射,
其目的是学习输入 x x x 和输出 H ( x ) \mathcal{H}(x) H(x) 之间的残差,即 F ( x ) : = H ( x ) − x \mathcal{F}(x) := \mathcal{H}(x) - x F(x):=H(x)−x。
图中所示的构建块的输出是通过将 F ( x ) \mathcal{F}(x) F(x) 和 x x x 相加得到的,即 F ( x ) + x \mathcal{F}(x) + x F(x)+x,这里的 F ( x ) \mathcal{F}(x) F(x) 是通过两个权重层和非线性激活函数ReLU构成的子网络来学习的。
这样设计的好处是,如果 F ( x ) \mathcal{F}(x) F(x) 的理想输出是0,即不存在残差,那么 shortcut connection 可以使得恒等映射成为可能,即直接输出 x x x,这对于网络训练的稳定性和加速有很大帮助。
Deep Residual Learning 深度残差学习
Residual Learning 残差学习
即使理论上更深的网络应该不会比较浅的网络性能更差,因为更深的网络至少可以通过学习 恒等映射 来达到和较浅网络一样的性能。
但在实际中,传统的优化算法(solvers)在训练时 很难通过多个非线性层来近似恒等映射。
如果恒等映射是最优的,solvers 可以简单地 将多个非线性层的权重推向零(就是 F ( x ) \mathcal{F}(x) F(x) 这个映射趋于 0 0 0) 来近似恒等映射,而不是去学习一个复杂的映射关系。
Identity Mapping by Shortcuts 通过捷径来恒等映射
作者对若干个堆叠层应用残差学习,

具体而言,一个 building block 被定义为:
y = F ( x , { w i } ) + x \textbf{y}=\mathcal{F}(\textbf{x},\{w_i\})+\textbf{x} y=F(x,{
wi})+x 其中, x , y \textbf{x},\textbf{y} x,y 是输入和输出向量, F ( x , { w i } ) \mathcal{F}(\textbf{x},\{w_i\}) F(x,{
wi}) 代表被学习的残差映射
就像图 2,有 2 个层,那么 F = W 2 σ ( W 1 x ) \mathcal{F}=W_2\sigma(W_1 \textbf{x}) F=W2σ(W1x), 其中 σ \sigma σ 代表 ReLU 函数,为了简化符号,省略了 bias
F + x \mathcal{F}+\textbf{x} F+x 操作 是通过一个 shortcut connections 和 element-wise 加法来执行
加法执行后采用第二个 ReLU 函数应用非线性,如图 2
其中 x \textbf{x} x 和 F \mathcal{F} F 的维度必须一致,如果不一致,
可以执行一个线性投影 W s W_s Ws 匹配维度然后 shortcut connections: y = F ( x , { w i } ) + W s x \textbf{y}=\mathcal{F}(\textbf{x},\{w_i\})+W_s \textbf{x} y=F(x,{ wi})+Wsx
残差函数 F \mathcal{F} F 的形式是灵活的,本文的实验中,涉及有 2 层或 3 层的残差函数 F \mathcal{F} F ,但是只有 1 层的残差函数 F \mathcal{F} F 近似于线性层 y = W 1 x + x \textbf{y}=W_1\textbf{x}+\textbf{x} y=W1x+x,作者并未观察到其优越性。
尽管为了简化表述,这一部分的描述和公式是基于全连接层的情形,但是这些概念和方法也同样适用于卷积层。
在实际的深度残差网络(ResNet)中,作者主要是在讨论卷积层的应用,因为卷积层是现代卷积神经网络中的核心组件。
函数 F ( x , { w i } ) \mathcal{F}(\textbf{x},\{w_i\}) F(x,{ wi}) 可以表示多个卷积层,逐个通道地在两个特征图上执行元素加法。
网络结构

Plain Network
plain baselines 主要受 VGG nets 启发,卷积层大多具有3×3滤波器,并遵循两个简单的设计规则:
(i) 对于相同的输出特征图大小,各层具有相同数量的滤波器;
(ii) 如果特征图大小减半,则滤波器的数量增加一倍,以保持每层的时间复杂度。
通过步长为 2 的卷积层直接执行下采样。网络以一个全局平均池化层和一个带有 softmax 的 1000 路全连接层结束。图3(中间部分)加权层总数为34层。
作者的模型比VGG网络具有更少的卷积滤波器和更低的复杂度。
Residual Network
在 Plain Network 的基础上,插入 shortcut connections 将网络转换为对应的残差版本。
当输入和输出维度相同时 (图3中的实线 shortcuts),可以直接使用 y = F ( x , { w i } ) + x \textbf{y}=\mathcal{F}(\textbf{x},\{w_i\})+\textbf{x} y=F(x,{ wi})

2812

被折叠的 条评论
为什么被折叠?



