ResidualNet
Motivation
1. degradation problem
随着网络的加深,有可能观察到模型performance的下降。下降的原因可能并不是overfitting,而是训练更深的网络比较困难:
如果让新增加的layers均为identity mapping,那么更深的网络应该至少保持和以前一样的performance。但是实际上,让模型学到这个方案很困难。
2.solution
由上面的例子可以知道,即使identity mapping对最后的performance很重要,模型也很难通过优化学习到它,这个问题增加了优化的难度。如果额外增加一个shortcut connection,让模型直接拥有identity mapping的能力,就可以降低模型的优化难度。
在加入了shortcut connection之后,模型只需要根据输入的信息,学习相对于输入而言的剩余信息即可,而不用从离最优点很远的地方开始优化。相当于加入了先验信息,缩小了参数的搜寻空间,降低了模型困在局部最优的可能性。
Residual block
1.structure
注意:这里先把identity mapping的结果和residual block的输出加起来,再输入非线性激活函数,是residual中的post-activation方式,后面会展开介绍。
2.formular
x ^ l + 1 = h ( x l ) + F ( x l , W l ) \hat{x}^{l+1}=h(x^l)+F(x^l,W_l) x^l+1=h(xl)+F(xl,Wl)
x l + 1 = f ( x ^ l + 1 ) x^{l+1}=f(\hat{x}^{l+1}) xl+1=f(x^l+1)
h
(
.
)
:
h(.):
h(.): 提供现成的identity mapping,也就是上图灰色箭头的位置。
h
(
F
(
x
l
,
W
l
)
)
:
h(F(x^l,W_l)):
h(F(xl,Wl)): residual path上的mapping,可以为几层叠加的非线性layers,是需要优化的部分。
f
(
.
)
:
f(.):
f(.): activation function, 此处为Relu.
Application
1. residual block
可以简单地通过叠加不同大小的residual block来创建网络。residual path上的结构可以根据task和data set的特点来自由选取,也可加入BN来稳定模型。
2. CNN
由于pooling或者stride,有可能shortcut路径的输出和identity路径的输出大小和深度不一致,此时有两种解决方法:
- 按固定stride做zero-padding。
- 加一个transformation,可以是stride>1的convolutional layer,也可以是线性的projection layer。
来使这两个feature map维度一致,之后element-wise相加即可。
Variation: post-activation & pre-activation
1. introduction
根据identity path和residual path上的layers的种类和相对顺序的不同,residual unit可以分为很多种。到底哪一种拥有最好的performance,使模型能更稳定,收敛速度更快?这需要详细分析residual unit到底如何帮助模型更好地优化。
2. derivation
由之前的章节可知,residual block的transformation如下:
x ^ l + 1 = h ( x l ) + F ( x l , W l ) \hat{x}^{l+1}=h(x^l)+F(x^l,W_l) x^l+1=h(xl)+F(xl,Wl)
x l + 1 = f ( x ^ l + 1 ) x^{l+1}=f(\hat{x}^{l+1}) xl+1=f(x^l+1)
x
l
:
x^l:
xl:residual block的输入。
x
l
+
1
:
x^{l+1}:
xl+1:residual block的输出。
h
(
.
)
:
h(.):
h(.): identity path上的mapping。
h
(
F
(
x
l
,
W
l
)
)
:
h(F(x^l,W_l)):
h(F(xl,Wl)): residual path上的mapping。
f
(
.
)
:
f(.):
f(.): addition之后的activation function.
现在假设 f ( . ) f(.) f(.)也是identity mapping,则可以得到:
x L = x L − 1 + F ( x L − 1 , W L − 1 ) x^L=x^{L-1}+F(x^{L-1}, W_{L-1}) xL=xL−1+F(xL−1,WL−1)
x
L
−
1
=
x
L
−
2
+
F
(
x
L
−
2
,
W
L
−
2
)
x^{L-1}=x^{L-2}+F(x^{L-2}, W_{L-2})
xL−1=xL−2+F(xL−2,WL−2)
.
.
.
...
...
代入可得:
x L = x l + ∑ i = l L − 1 F ( x i , W i ) x^L=x^{l}+\sum_{i=l}^{L-1} F(x^{i}, W_{i}) xL=xl+∑i=lL−1F(xi,Wi)
那么反向传播时,根据chain rule可知,任意一层的gradient为:
∂ L o s s ∂ x l = ∂ L o s s ∂ x L ∂ x L ∂ x l = ∂ L o s s ∂ x L ∗ ( 1 + ∂ ∑ i = l L F ( x i , W i ) ∂ x l ) \frac{\partial Loss}{\partial x^l}=\frac{\partial Loss}{\partial x^L}\frac{\partial x^L}{\partial x^l}=\frac{\partial Loss}{\partial x^L}*(1+\frac{\partial \sum_{i=l}^{L} F(x^{i}, W_{i})}{\partial x^l}) ∂xl∂Loss=∂xL∂Loss∂xl∂xL=∂xL∂Loss∗(1+∂xl∂∑i=lLF(xi,Wi))
括号中的1表明,最后一层神经元的gradient可以通过identity path直接传到之前的任何一层。括号中的第二项对应了gradient在residual path上的传播。
由此可知,由于有了shortcut connection,gradient flow变得更加稳定,不会出现梯度消失的问题。而且由于层与层之间的梯度用于相加,减少了由于反复乘以同一weight matrix而产生的梯度爆炸的可能性。
也就是说,通过假设
h
(
.
)
h(.)
h(.)和
f
(
.
)
f(.)
f(.)是identity mapping,让shortcut connection更加clean,可以创建出一个供信息直接正反向传播的path,而通过上面的推导和分析可以看出,这种信息的直接传播有利于模型的稳定和收敛。
3. comparison
如果
h
(
.
)
h(.)
h(.)是identity mapping的假设不成立,即使只是一个线性变化:
h
(
x
)
=
λ
x
h(x)=\lambda x
h(x)=λx
则推导出的层与层间的关系如下:
x
L
=
∏
i
=
l
L
−
1
λ
i
x
l
+
∑
i
=
l
L
−
1
F
(
x
i
,
W
i
)
x^L=\prod_{i=l}^{L-1}\lambda_i x^{l}+\sum_{i=l}^{L-1} F(x^{i}, W_{i})
xL=∏i=lL−1λixl+∑i=lL−1F(xi,Wi)
∂ L o s s ∂ x l = ∂ L o s s ∂ x L ∗ ( ∏ i = l L − 1 λ i + ∂ ∑ i = l L F ( x i , W i ) ∂ x l ) \frac{\partial Loss}{\partial x^l}=\frac{\partial Loss}{\partial x^L}*(\prod_{i=l}^{L-1}\lambda_i+\frac{\partial \sum_{i=l}^{L} F(x^{i}, W_{i})}{\partial x^l}) ∂xl∂Loss=∂xL∂Loss∗(∏i=lL−1λi+∂xl∂∑i=lLF(xi,Wi))
显然,当层数很深时 ∏ i = l L − 1 λ i \prod_{i=l}^{L-1}\lambda_i ∏i=lL−1λi 的值会不稳定,爆炸/消失。
如果
f
(
.
)
f(.)
f(.)是identity mapping的假设不成立,也会带来类似的效果。
总结来说,保持shortcut path的clean可以最大程度上利用residual block的优势,让信息更好地正反向传播,模型拥有强的identity mapping的能力,从而降低optimization的难度。
4. conclusion
那么在图示的5种residual block中,后两种显然是比较理想的结构。他们之间的不同是ReLU和BN的位置关系。可以看到(d)图中的residual block在正向传播时,第一个ReLU的输入没有经过BN处理,这也许是它提升效果不明显的原因。
Analysis
图(e)中的residual block能明显优化模型的performance:
- identity path为正向的信息传播和反向的gradient传播均提供了高效的途径,cleaner的shortcut connection有能力降低模型的优化难度,稳定训练过程,达到更好的效果。
- residual path里面加入了BN layer,也能帮助模型更快收敛,使weights稳定更新,并且加入了正则化效果。
Reference
https://arxiv.org/abs/1512.03385
https://arxiv.org/abs/1603.05027