ResNet改进原理介绍论文笔记

Identity Mappings in Deep Residual Networks

Abstract

深度剩余网络是一系列极深的体系结构,显示出令人信服的准确性和良好的收敛行为。在本文中,我们分析了剩余构建块背后的传播公式,这表明在使用身份映射作为跳过连接和加法激活后,前向和后向信号可以直接从一个块传播到任何其他块。一系列消融实验证明了这些恒等式映射的重要性。这促使我们提出了一种新的残差单元,它使训练更容易,提高了泛化能力。我们报告了使用CIF AR10上的1001层ResNet(4.62%误差)和CIF AR-100以及ImageNet上的200层ResNet的改进结果。代码可从以下网址获取:https://github.com/KaimingHe/resnet-1k-layers.

1 Introduction

深剩余网络(Resnet)[1]由许多堆叠的“Residual Units”组成。每个单元(图1(a))可以用一般形式表示:

其中,

x

l

x_l

xl​和

x

l

+

1

x_{l+1}

xl+1​是第l个单位的输入和输出,F是残差函数。在[1]中,

h

x

l

=

x

l

h(x_l)=x_l

h(xl​)=xl​是一个恒等式映射,f是一个ReLU[2]函数。

在ImageNet[3]和MS COCO[4]竞赛中,深度超过100层的Resnet显示出了最先进的识别精度,可用于多项具有挑战性的识别任务。resnet的核心思想是学习关于

h

x

l

h(x_l)

h(xl​)的加性残差函数F,关键的选择是使用恒等映射

h

x

l

=

x

l

h(x_l)=x_l

h(xl​)=xl​。这是通过附加标识跳过连接(“shortcut”)实现的。

在本文中,我们通过创建一条“直接”路径来分析深度剩余网络,该路径不仅在剩余单元内传播信息,而且在整个网络中传播信息。我们的推导表明,如果

h

x

l

h(x_l)

h(xl​)和

f

y

l

f(y_l)

f(yl​)都是单位映射,那么信号可以在向前和向后的过程中从一个单位直接传播到任何其他单位。我们的实验经验表明,当体系结构更接近上述两种条件时,训练通常会变得更容易。

为了理解跳转连接的作用,我们分析和比较了各种类型的

h

x

l

h(x_l)

h(xl​)。我们发现[1]中选择的身份映射

h

x

l

=

x

l

h(x_l)=x_l

h(xl​)=xl​ ,在我们研究的所有变量中,实现了最快的错误减少和最低的训练损失,而缩放、选通[5–7]和1×1卷积的跳过连接都会导致更高的训练损失和错误。这些实验表明,保持“干净”的信息路径(由图1、图2和图4中的灰色箭头指示)有助于简化优化。

为了构造身份映射

f

y

l

=

y

l

f(y_l)=y_l

f(yl​)=yl​,我们将激活函数(ReLU和BN[8])视为权重层的“预激活”,这与传统的“后激活”不同。这种观点导致了一种新的残差单元设计,如(图1(b))所示。基于这个单元,我们给出了CIFAR-10/100上的竞争结果,其中有一个1001层的ResNet,它比[1]中的原始ResNet更容易训练和推广。我们进一步报告了使用200层ResNet在ImageNet上的改进结果,其中[1]的对应部分开始过度拟合。这些结果表明,网络深度这一现代深度学习成功的关键维度还有很大的开发空间。

2 Analysis of Deep Residual Networks

[1]中开发的RESNET是一种模块化的架构,可以堆叠相同连接形状的构建块。在本文中,我们称这些块为“剩余单元”。[1]中的原始残差单位执行以下计算:

这里

x

l

{x_l}

xl​是第l个剩余单位的输入特征。

W

l

=

W

l

k

1

k

K

W_l={W_{l,k | 1≤k≤K}}

Wl​=Wl,k∣1≤k≤K​ 是与第l个剩余单元相关联的一组权重(和偏差),K是剩余单元中的层数(K是[1]中的2或3)。F表示残差函数,例如[1]中两个3×3卷积层的堆栈。函数f是元素相加后的操作,[1]中的f是ReLU。函数h被设置为身份映射:

h

x

l

=

x

l

h(x_l)=x_l

h(xl​)=xl​。

如果f也是一个身份映射:

x

l

+

1

y

l

x_{l+1}≡y_l

xl+1​≡yl​ 我们可以把等式(2)放到等式(1) 并获得:

递归地

x

l

+

2

=

x

l

+

1

+

F

(

x

l

+

1

W

l

+

1

)

=

x

l

+

F

(

x

l

W

l

)

+

F

(

x

l

+

1

W

l

+

1

)

(x_{l+2}=x_{l+1}+F(x_{l+1},W_{l+1})=x_l+F(x_l,W_l)+F(x_{l+1},W_{l+1})

(xl+2​=xl+1​+F(xl+1​,Wl+1​)=xl​+F(xl​,Wl​)+F(xl+1​,Wl+1​)我们将有:

对于任何较深的单元L和任何较浅的单元l,方程(4)展示了一些很好的性质。(i) 任何较深单位L的特征

x

L

x_L

xL​可以表示为任何较浅单位L的特征

x

L

x_L

xL​加上形式为

i

=

l

L

1

F

\sum_{i=l}^{L-1} \mathcal{\mathcal { F }}

∑i=lL−1​F,表示模型在任何单位l和l之间处于剩余状态。(ii)特征

x

L

=

x

0

+

i

=

0

L

1

F

(

x

i

,

W

i

)

\mathbf{x}_{L}=\mathbf{x}_{0}+\sum_{i=0}^{L-1} \mathcal{F}\left(\mathbf{x}_{i}, \mathcal{W}_{i}\right)

xL​=x0​+∑i=0L−1​F(xi​,Wi​),任何深度单位L的所有之前剩余函数(加上x0)的输出之和。这与“普通网络”形成对比,在“普通网络”中,特征

x

L

x_L

xL​是一系列矩阵向量积,

i

=

0

L

1

W

i

x

0

\prod_{i=0}^{L-1} W_{i} \mathbf{x}_{0}

∏i=0L−1​Wi​x0​(忽略BN和ReLU)。

方程(4)还具有良好的反向传播特性。将损失函数表示为

ε

\varepsilon

ε,根据反向传播的链式规则[9]:

等式(5)表明梯度

ε

x

l

\frac{\partial \varepsilon }{\partial x_l}

∂xl​∂ε​可以分解为两个相加项:一个是

ε

x

L

\frac{\partial \varepsilon }{\partial x_L}

∂xL​∂ε​直接传播信息,不涉及任何重量层,以及

E

x

L

(

x

l

i

=

l

L

1

F

)

\frac{\partial \mathcal{E}}{\partial \mathbf{x}_{L}}\left(\frac{\partial}{\partial \mathbf{x}_{l}} \sum_{i=l}^{L-1} \mathcal{\mathcal { F }}\right)

∂xL​∂E​(∂xl​∂​∑i=lL−1​F)通过权重层传播。

ε

x

L

\frac{\partial \varepsilon }{\partial x_L}

∂xL​∂ε​的加法项确保信息线性传播回任何较浅的单位l。方程式(5)也表明梯度

ε

x

l

\frac{\partial \varepsilon }{\partial x_l}

∂xl​∂ε​不太可能被取消对于一个小批量,因为一般来说

x

l

i

=

l

L

1

F

\frac{\partial}{\partial \mathbf{x}_{l}} \sum_{i=l}^{L-1} \mathcal{\mathcal { F }}

∂xl​∂​∑i=lL−1​F对于小批量中的所有样品不能始终为-1。这意味着,即使权重任意小,层的梯度也不会消失。 (防止梯度消失)

Discussions.

等式(4)和(5)表明,信号可以直接从任何单元向前和向后传播到另一个单元。等式(4)的基础是两个恒等式映射:(i)恒等式跳过连接

h

x

l

=

x

l

h(x_l)=xl

h(xl​)=xl,以及(ii)f是恒等式映射的条件。

这些直接传播的信息流由图中的灰色箭头表示。1、2和4。当这些灰色箭头不包含任何操作(除添加之外),因此是“干净”时,上述两种情况是正确的。在接下来的两部分中,我们将分别研究这两种情况(恒等映射添加和不添加)的影响。

3 On the Importance of Identity Skip Connections

让我们考虑一个简单的修改,

h

x

l

=

λ

l

x

l

h(x_l)=λ_lx_l

h(xl​)=λl​xl​,以打破身份快捷方式:

其中

λ

l

λ_l

λl​是一个调制标量(为了简单起见,我们仍然假设f是恒等式)。递归地应用这个公式,我们得到了一个类似于式(4)的方程:

x

L

=

(

i

=

l

L

1

λ

i

)

x

l

+

i

=

l

L

1

(

j

=

i

+

1

L

1

λ

j

)

F

(

x

i

,

W

i

)

\mathbf{x}_{L}=\left(\prod_{i=l}^{L-1} \lambda_{i}\right) \mathbf{x}_{l}+\sum_{i=l}^{L-1}\left(\prod_{j=i+1}^{L-1} \lambda_{j}\right) \mathcal{F}\left(\mathbf{x}_{i}, \mathcal{W}_{i}\right)

xL​=(∏i=lL−1​λi​)xl​+∑i=lL−1​(∏j=i+1L−1​λj​)F(xi​,Wi​) 简化可得到:

其中,符号

F

^

\hat{\mathcal{F}}

F^将标量吸收到剩余函数中。与式(5)类似,我们有如下形式的反向传播:

与公式(5)不同,在公式(8)中,第一个加法项由一个因子调制

i

=

l

L

1

λ

i

\prod_{i=l}^{L-1} \lambda_{i}

∏i=lL−1​λi​,对于极深的网络(L是大的),如果λi>1,则该因子可以是指数大的;如果所有i的λi<1,则该因子可以指数小且消失,这会阻止反向传播的信号通过快(shortcut)捷方式,并迫使其流经权重层。正如我们通过实验所表明的那样,这会导致优化困难。

在上述分析中,等式(3)i中的原始标识跳过连接被简单的缩放

h

x

l

=

λ

l

x

l

h(x_l)=λ_lx_l

h(xl​)=λl​xl​替换。如果跳过连接

h

x

l

h(x_l)

h(xl​)表示更复杂的变换(例如选通和1×1卷积),则在等式(8)中,第一项变成

i

=

l

L

1

h

i

\prod_{i=l}^{L-1} h_{i}^{'}

∏i=lL−1​hi′​这里的

h

h^{'}

h′是h的衍生物。该过程也可能会阻碍信息传播,并妨碍培训过程,如以下实验所示。 (即在shortcut这里一路尽量不要添加操作,否者会阻碍信息传播,和反向传播)

3.1 Experiments on Skip Connections

我们用110层的ResNet进行了实验,如[1]中所述。这个极深的ResNet-110有54个两层剩余单元(包括3×3卷积层),并且对优化具有挑战性。我们的实施细节(见附录)与[1]相同。在本文中,我们报告了CIFAR上每种架构5次运行的平均精度,从而减少了随机变化的影响。

虽然我们的上述分析是由恒等式f驱动的,但本节中的实验都是基于f=ReLU as in[1];我们在下一节中讨论身份f。我们的基线ResNet-110在测试集上有6.61%的错误。其他变体(图2和表1)的比较总结如下:

Constant Scaling

对于所有捷径,我们设置λ=0.5(图2(b))。我们进一步研究了标度F的两种情况:(i)F不标度;或者(ii)F被定标为1−λ=0.5的常数标量,与highway gating[6,7]相似,但具有frozen gates。前一种情况的收敛性不好;后者能够收敛,但测试误差(表1,12.35%)远高于原始ResNet110(表现差)。图3(a)显示,训练误差高于原始ResNet-110,这表明当捷径信号缩小时,优化存在困难。

Exclusive Gating

根据采用选通机制[5]的公路网[6,7],我们考虑选通函数

g

x

=

σ

W

g

x

+

b

g

g(x)=σ(W_gx+b_g)

g(x)=σ(Wg​x+bg​),其中变换由权重Wg和偏差bg表示,然后是sigmoid函数

σ

(

x

)

=

1

1

+

e

x

\sigma(x)=\frac{1}{1+e^{-x}}

σ(x)=1+e−x1​、在卷积网络中,g(x)由1×1卷积层实现。门控功能通过元素相乘来调制信号。

我们研究了[6,7]中使用的“exclusive”门——F路径按g(x)缩放,快捷路径按1− g(x)缩放。见图2(c)。我们发现,偏差

b

g

b_g

bg​的初始化对于训练选通模型至关重要,根据[6,7]中的准则2,我们在0到-10的范围内对bg的初始值进行超参数搜索,通过交叉验证对训练集进行递减步长为-1的搜索**。最佳价值(−6)**用于训练集的训练,测试结果为8.70%(表1),仍然远远落后于ResNet-110基线。图3(b)显示了训练曲线。表1还报告了使用其他初始化值的结果,指出当bg没有适当初始化时,独占选通网络不会收敛到一个好的解决方案。

排他性选通机制的影响是双重的。当1− g(x)接近1,门控快捷连接更接近身份,有助于信息传播;但在这种情况下,g(x)接近0,并抑制函数F。为了单独隔离选通函数对快捷路径的影响,我们在下一篇文章中研究了非排他选通机制。

Shortcut-Only Gating

在这种情况下,函数F不可缩放;只有快捷路径被1− g(x)选通。见图2(d)。在这种情况下,bg的初始化值仍然很重要。当初始化的bg为0时(因此最初预期为1− g(x)为0.5),网络收敛到12.86%的较差结果(表1)。这也是由较高的训练误差造成的(图3(c))。

当初始化的bg非常负偏时(例如−6) ,值为1−g(x)更接近1,快捷连接几乎是一个身份映射。因此,结果(6.91%,表1)更接近ResNet-110基线。

**1×1 Convolutional Shortcut. **

接下来,我们用1×1卷积快捷连接来代替身份。[1](称为选项C)对34层ResNet(16个剩余单元)上的该选项进行了研究,并显示了良好的结果,表明1×1快捷连接可能有用。但我们发现,当有许多剩余单元时,情况并非如此。当使用1×1卷积捷径时,110层ResNet的结果较差(12.22%,表1)。同样,训练误差变得更高(图3(d))。当叠加如此多的剩余单元(ResNet-110为54)时,即使是最短路径也可能会阻碍信号传播。当使用1×1卷积捷径时,我们在带有ResNet-101的ImageNet上看到了类似的现象。

Dropout Shortcut

最后,我们用Dropout[11](比率为0.5)进行了实验,我们在身份快捷方式的输出上采用了Dropout[11](图2(f))。网络未能收敛到一个好的解决方案。从统计学上讲,Dropout会在捷径上施加一个λ的标度,期望值为0.5,与常数标度0.5类似,它会阻碍信号传播。

3.2 Discussions

如图2中的灰色箭头所示,快捷连接是信息传播的最直接路径。快捷方式上的乘法操作(缩放、选通、1×1卷积和退出)会阻碍信息传播并导致优化问题。

值得注意的是,门控和1×1卷积捷径引入了更多的参数,并且应该比身份捷径具有更强的表征能力。事实上,仅快捷方式选通和1×1卷积覆盖了身份快捷方式的解空间(即,它们可以作为身份快捷方式进行优化)。然而,他们的训练误差高于身份捷径,这表明这些模型的退化是由优化问题引起的,而不是由表征能力引起的。

总结:大概就是说残差的shortcut分支上不要加任何东西,保持原有信息即可

4 On the Usage of Activation Functions

上节中的实验支持等式(5) 和(8)中的分析,都是在假设加成后活化f为身份映射。但在上面的实验中,f是[1]中设计的ReLU,所以方程(5) 和(8)在上述实验中是近似的。接下来我们研究f的影响。 (激活函数的使用)

我们想通过重新安排激活函数(ReLU和/或BN)来进行身份映射。原始残差结构在图4(a)-在每个权重层之后使用BN,在BN之后采用ReLU,但剩余单元中的最后一个ReLU是在元素相加之后(f=ReLU)。图4(b-e)显示了我们调查的备选方案,解释如下。

4.1 Experiments on Activation

在本节中,我们将对ResNet-110和164层瓶颈[1]体系结构(表示为ResNet-164)进行实验。瓶颈剩余单元由1×1层降维、3×3层和1×1层恢复维组成。如[1]所设计,其计算复杂度类似于两个3×3残差单元。更多细节见附录。基准ResNet-164在CIFAR-10上的竞争结果为5.93%(表2)。

BN After Addition

在将f转化为恒等式映射之前,我们采取相反的方法,在加法后采用BN(图4(b))。在这种情况下,f涉及BN和ReLU。结果比基线差得多(表2)。与最初的设计不同,现在BN层改变了通过捷径的信号,并阻碍了信息传播,这反映在训练开始时减少训练损失的困难上(图6左)。

ReLU Before Addition

将f转换为恒等式映射的一个简单选择是在Addition之前移动ReLU(图4(c))。然而,这会导致变换F的非负输出,而直觉上,“残差”函数应该取值(−∞, +∞). 因此,前向传播的信号是单调增加的。这可能会影响表征能力,结果比基线差(7.84%,表2)。我们期望有一个残值函数(−∞, +∞). 其他剩余单元(包括以下单元)满足此条件。

Post-activation or Pre-activation?

在原始设计(等式(1)和(2))中,激活

x

l

+

1

=

f

y

l

x_{l+1}=f(y_l)

xl+1​=f(yl​)会影响下一个剩余单元中的两条路径:

y

l

+

1

=

f

y

l

+

F

f

y

l

W

l

+

1

y_{l+1}=f(y_l)+F(f(y_l),W_{l+1}

yl+1​=f(yl​)+F(f(yl​),Wl+1​。接下来,我们开发了一种不对称形式,其中激活

f

^

\hat{f}

f^​只影响f路径:对于任何l(图5(a)到(b)),

y

l

+

1

=

y

l

+

F

(

f

^

(

y

l

)

,

W

l

+

1

)

\mathbf{y}_{l+1}=\mathbf{y}_{l}+\mathcal{F}\left(\hat{f}\left(\mathbf{y}_{l}\right), \mathcal{W}_{l+1}\right)

yl+1​=yl​+F(f^​(yl​),Wl+1​)。通过重命名符号,我们得到了以下形式:

很容易看出,式(9)类似于式(4),并且可以实现类似于式(5)的反向公式。对于等式(9)中的新残余单元,新的加成后激活成为恒等式映射。这个设计意味着如果不对称采用新的添加后激活

f

^

\hat{f}

f^​,则相当于重新铸造

f

^

\hat{f}

f^​作为下一个剩余单元的预激活。这如图5所示。

后激活/预激活之间的区别是由元素添加的存在引起的。对于有N层的普通网络,有N−1层激活(BN/ReLU),我们认为它们是激活后还是激活前并不重要。但对于通过添加合并的分支层,激活的位置很重要。

我们用两种这样的设计进行了实验:(i)仅ReLU预激活(图4(d)),和(ii)完全预激活(图4(e)),其中BN和ReLU均在重量层之前采用。表2显示,仅限ReLU的预激活性能与ResNet-110/164上的基线非常相似。该ReLU层未与BN层结合使用,可能无法享受BN的好处[8]。 (仅使用ReLu激活会差一些)

不知何故,令人惊讶的是,当BN和ReLU都用作预激活时,结果得到了良好的改善(表2和表3)。在表3中,我们报告了使用各种架构的结果:(i)ResNet-110,(ii)ResNet-164,(iii)一个110层的ResNet架构,其中每个快捷方式只跳过1层(即,一个剩余单元只有1层),表示为“ResNet-110(1层)”,以及(iv)一个1001层的瓶颈架构,有333个剩余单元(每个特征图大小上有111个),表示为“ResNet-1001”。我们还对CIFAR100进行了实验。表3显示,我们的“预激活”模型始终优于基准模型。我们在下面分析这些结果。

4.2 Analysis

我们发现预激活的影响是双重的。首先,由于f是一个身份映射,因此优化并进一步简化(与基线ResNet相比)。第二,使用BN作为预激活改进了模型的正则化。

Ease of Optimization

这种效果在训练1001层ResNet时尤为明显。图1显示了这些曲线。使用[1]中的原始设计,在训练开始时,训练误差会非常缓慢地减小。对于f=ReLU,如果信号为负,则信号会受到影响,当存在许多剩余单元时,这种影响会变得显著,等式(3)(SOEq.(5))不是一个很好的近似值。另一方面,当f是单位映射时,信号可以直接在任意两个单元之间传播。我们的1001层网络可以很快减少训练损失(图1)。在我们研究的所有模型中,它也实现了最低的损失,这表明优化是成功的。

我们还发现,当ResNet具有较少的层时,f=ReLU的影响并不严重(例如,图6(右)中的164)。在训练开始时,训练曲线似乎有点受损,但很快就会进入健康状态。通过监测反应,我们观察到,这是因为经过一些训练后,权重被调整到一种状态,使得等式(1)中的

y

l

y_l

yl​更频繁地位于超过0并且f不会截断它(由于之前的ReLU,

x

l

x_l

xl​总是非负的,所以只有当f的大小非常负时,

y

l

y_l

yl​才低于零)。然而,当有1000层时,截断更为频繁。

Reducing Overfitting.

使用建议的预激活单元的另一个影响是正则化,如图6(右)所示。预激活版本在收敛时达到略高的训练损失,但产生较低的测试误差。这种现象在CIFAR-10和100上的ResNet-110、ResNet-110(1层)和ResNet-164上都可以观察到。这可能是由BN的正则化效应引起的[8]。在原始残差单元(图4(a))中,尽管BN使信号标准化,但这很快被添加到快捷方式中,因此合并的信号没有标准化。然后,该非标准化信号被用作下一权重层的输入。相反,在我们的预激活版本中,所有权重层的输入都已标准化。

5 Results

6 Conclusions

本文研究了深剩余网络连接机制背后的传播公式。我们的推导表明,身份快捷连接和添加激活后的身份对于使信息传播顺畅至关重要。消融实验证明了与我们的推导一致的现象。我们还提供了1000层深度网络,可以轻松训练并提高精度。

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: