初始化Init
第
l
层网络神经元的输出
:
a
(
l
)
第l层网络神经元的输出: a^{(l)}
第l层网络神经元的输出:a(l)
第
l
层网络神经元的输出的第
i
个分量
:
a
i
(
l
)
第l层网络神经元的输出的第i个分量: a^{(l)}_{i}
第l层网络神经元的输出的第i个分量:ai(l)
第
l
层网络神经元的激活前的输出
:
y
(
l
)
第l层网络神经元的激活前的输出: y^{(l)}
第l层网络神经元的激活前的输出:y(l)
第
l
层网络神经元的激活前的输出的第
i
个分量
:
y
i
(
l
)
第l层网络神经元的激活前的输出的第i个分量: y^{(l)}_{i}
第l层网络神经元的激活前的输出的第i个分量:yi(l)
第
l
层网络神经元的参数个数
:
M
l
第l层网络神经元的参数个数: M_{l}
第l层网络神经元的参数个数:Ml
第
l
层网络神经元的参数:
w
l
第l层网络神经元的参数:w^{l}
第l层网络神经元的参数:wl
第
l
层网络神经元的参数第
i
个分量:
w
i
l
第l层网络神经元的参数第i个分量:w^{l}_{i}
第l层网络神经元的参数第i个分量:wil
激活函数:
f
激活函数:f
激活函数:f
文章目录
1.Xaiver初始化
1.1 公式推导
一个良好的初始化可以帮助神经网络更好地训练和更稳定地收敛。除去早期的全零初始化和随机初始化,Xaiver初始化是常用的初始化方法之一。
Xaiver初始化是一种维持前后输入、输出均值和方差一致的初始化方法,起初是针对sigmoid、tanh等激活函数而设计的。
考虑第l层的网络某一个神经元,其输出为
a
(
l
)
a^{(l)}
a(l),其参数为
w
l
w^{l}
wl,则有:
a
(
l
)
=
f
(
∑
i
=
1
M
l
−
1
w
i
(
l
)
a
i
(
l
−
1
)
)
a^{(l)}=f(\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)})
a(l)=f(i=1∑Ml−1wi(l)ai(l−1))
现在,为了简化问题,我们认为激活函数为恒等函数,即
f
(
x
)
=
x
f(x)=x
f(x)=x
假设
w
i
(
l
)
和
a
i
(
l
−
1
)
w_{i}^{(l)}和a_{i}^{(l-1)}
wi(l)和ai(l−1)服从均值为0,且互相独立,则有
V
a
r
[
w
i
(
l
)
a
i
(
l
−
1
)
]
=
E
[
(
w
i
(
l
)
a
i
(
l
−
1
)
)
2
]
−
(
E
[
w
i
(
l
)
a
i
(
l
−
1
)
]
)
2
=
(
E
[
(
w
i
(
l
)
)
2
]
−
0
)
(
E
[
(
a
i
(
l
−
1
)
)
2
]
−
0
)
=
V
a
r
[
w
i
(
l
)
]
V
a
r
[
a
i
(
l
−
1
)
]
Var[w_{i}^{(l)}a_{i}^{(l-1)}]=E[(w_{i}^{(l)}a_{i}^{(l-1)})^2]-(E[w_{i}^{(l)}a_{i}^{(l-1)}])^2=(E[(w_{i}^{(l)})^2]-0)(E[(a_{i}^{(l-1)})^2]-0)=Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]
Var[wi(l)ai(l−1)]=E[(wi(l)ai(l−1))2]−(E[wi(l)ai(l−1)])2=(E[(wi(l))2]−0)(E[(ai(l−1))2]−0)=Var[wi(l)]Var[ai(l−1)]
故推导期望与方差为
E
[
a
(
l
)
]
=
E
[
∑
i
=
1
M
l
−
1
w
i
(
l
)
a
i
(
l
−
1
)
]
=
∑
i
=
1
M
l
−
1
E
[
w
i
(
l
)
]
E
[
a
i
(
l
−
1
)
]
=
0
E[a^{(l)}]=E[\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}]=\sum_{i=1}^{M_{l-1}}E[w_{i}^{(l)}]E[a_{i}^{(l-1)}]=0
E[a(l)]=E[i=1∑Ml−1wi(l)ai(l−1)]=i=1∑Ml−1E[wi(l)]E[ai(l−1)]=0
V
a
r
[
a
(
l
)
]
=
V
a
r
[
∑
i
=
1
M
l
−
1
w
i
(
l
)
a
i
(
l
−
1
)
]
=
∑
i
=
1
M
l
−
1
V
a
r
[
w
i
(
l
)
]
V
a
r
[
a
i
(
l
−
1
)
]
=
M
l
−
1
V
a
r
[
w
i
(
l
)
]
V
a
r
[
a
i
(
l
−
1
)
]
Var[a^{(l)}]=Var[\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}]=\sum_{i=1}^{M_{l-1}}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]=M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]
Var[a(l)]=Var[i=1∑Ml−1wi(l)ai(l−1)]=i=1∑Ml−1Var[wi(l)]Var[ai(l−1)]=Ml−1Var[wi(l)]Var[ai(l−1)]
我们希望保持输入和输出的均值和方差一致,故有
V
a
r
[
w
i
(
l
)
a
i
(
l
−
1
)
]
=
M
l
−
1
V
a
r
[
w
i
(
l
)
]
V
a
r
[
a
i
(
l
−
1
)
]
=
V
a
r
[
a
i
(
l
−
1
)
]
Var[w_{i}^{(l)}a_{i}^{(l-1)}]=M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]=Var[a_{i}^{(l-1)}]
Var[wi(l)ai(l−1)]=Ml−1Var[wi(l)]Var[ai(l−1)]=Var[ai(l−1)]
V
a
r
[
w
i
(
l
)
]
=
1
M
l
−
1
Var[w_{i}^{(l)}]=\frac{1}{M_{l-1}}
Var[wi(l)]=Ml−11
以上即为只考虑前向传播时的初始化。
同理,考虑反向传播时的初始化,有
V
a
r
[
w
i
(
l
)
]
=
1
M
l
+
1
Var[w_{i}^{(l)}]=\frac{1}{M_{l+1}}
Var[wi(l)]=Ml+11
综合考虑,即取前后神经元个数的平均值,有
V
a
r
[
w
i
(
l
)
]
=
1
M
l
+
1
+
M
l
−
1
2
=
2
M
l
+
1
+
M
l
−
1
Var[w_{i}^{(l)}]=\frac{1}{\frac{M_{l+1}+M_{l-1}}{2}}=\frac{2}{M_{l+1}+M_{l-1}}
Var[wi(l)]=2Ml+1+Ml−11=Ml+1+Ml−12
因此,我们得到了Xavier初始化分布的均值与方差。
1.2 均匀分布
当我们考虑均匀分布
x
∼
U
(
−
b
o
u
n
d
,
b
o
u
n
d
)
x \sim U(-bound,bound)
x∼U(−bound,bound)时,有
E
[
x
]
=
0
E[x]=0
E[x]=0
V
a
r
[
x
]
=
b
o
u
n
d
2
3
Var[x]=\frac{bound^2}{3}
Var[x]=3bound2
因此,当我们采用均匀分布采样Xavier初始化时,有
b
o
u
n
d
=
6
M
l
+
1
+
M
l
−
1
bound=\sqrt{\frac{6}{M_{l+1}+M_{l-1}}}
bound=Ml+1+Ml−16
具体使用时,还有一个参数
g
a
i
n
gain
gain用于手动调整均匀分布的边界,即
b
o
u
n
d
=
g
a
i
n
×
6
M
l
+
1
+
M
l
−
1
bound=gain×\sqrt{\frac{6}{M_{l+1}+M_{l-1}}}
bound=gain×Ml+1+Ml−16
1.3 正态分布
正态分布由均值和方差决定,因此,参数 w i ( l ) w_{i}^{(l)} wi(l)可直接采样于 N ( 0 , 2 M l + 1 + M l − 1 ) N(0,\frac{2}{M_{l+1}+M_{l-1}}) N(0,Ml+1+Ml−12)
1.4 截断正态分布
当然还有结合了均匀分布和正态分布的截断正态分布,其思想是先采样于正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),再根据设定的阈值 [ μ − k σ , μ + k σ ] [\mu-k\sigma,\mu+k\sigma] [μ−kσ,μ+kσ]进行判断,如果落在区间内就保留,否则就需要重新采样。
截断正态分布不改变采样结果的均值,但改变了采样结果的方差,实际方差为
η
σ
2
\eta\sigma^2
ησ2,其中
η
=
∫
−
k
k
x
2
e
−
x
2
d
x
∫
−
k
k
e
−
x
2
d
x
\eta=\frac{\int^{k}_{-k}{x^2e^{-x^2}dx}}{\int^{k}_{-k}{e^{-x^2}dx}}
η=∫−kke−x2dx∫−kkx2e−x2dx
实际输入方差应为
σ
η
\frac{\sigma}{\sqrt{\eta}}
ησ
1.5 针对sigmoid和tanh激活的gain取值
之所以我们能够使用激活函数为恒等函数,即
f
(
x
)
=
x
f(x)=x
f(x)=x,进行理论推导,是因为针对sigmoid函数和tanh函数,在
x
=
0
x=0
x=0可以近似为一条直线。
其中,sigmoid函数的导数为
f
′
(
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
)
f'(x)=\sigma(x)(1-\sigma(x))
f′(x)=σ(x)(1−σ(x))tanh函数的导数为
f
′
(
x
)
=
1
−
t
a
n
h
2
(
x
)
f'(x)=1-tanh^2(x)
f′(x)=1−tanh2(x)
对于sigmoid函数而言,
x
=
0
x=0
x=0附近斜率为0.25。
V
a
r
[
w
i
(
l
)
a
i
(
l
−
1
)
]
=
1
16
M
l
−
1
V
a
r
[
w
i
(
l
)
]
V
a
r
[
a
i
(
l
−
1
)
]
Var[w_{i}^{(l)}a_{i}^{(l-1)}]=\frac{1}{16}M_{l-1}Var[w_{i}^{(l)}]Var[a_{i}^{(l-1)}]
Var[wi(l)ai(l−1)]=161Ml−1Var[wi(l)]Var[ai(l−1)]因此,
g
a
i
n
=
4
gain=4
gain=4用以调整。
而tanh函数,
x
=
0
x=0
x=0附近斜率为1,保持
g
a
i
n
=
1
gain=1
gain=1即可。
2. Kaiming初始化
2.1 公式推导
Kaiming初始化是针对ReLU激活函数的,其思想是使得激活函数的输入方差与输出方差相等。
我们认为ReLU所激活的神经元数量应为一半。
此时我们需要注意,我们依然可以假设假设
w
i
(
l
)
和
a
i
(
l
−
1
)
w_{i}^{(l)}和a_{i}^{(l-1)}
wi(l)和ai(l−1)互相独立,且
w
i
(
l
)
w_{i}^{(l)}
wi(l)均值为0,但此时,由于激活函数为ReLU,因此
E
[
a
i
(
l
−
1
)
]
≠
0
E[a_{i}^{(l-1)}]\neq0
E[ai(l−1)]=0
我们有
a
(
l
)
=
R
e
L
U
(
y
i
(
l
)
)
a^{(l)}=ReLU(y_{i}^{(l)})
a(l)=ReLU(yi(l))
y
(
l
)
=
∑
i
=
1
M
l
−
1
w
i
(
l
)
a
i
(
l
−
1
)
y^{(l)}=\sum_{i=1}^{M_{l-1}}w_{i}^{(l)}a_{i}^{(l-1)}
y(l)=i=1∑Ml−1wi(l)ai(l−1)
具体地,我们有
E
[
y
(
l
)
]
=
∑
i
=
1
M
l
−
1
E
[
w
i
(
l
)
]
E
[
a
i
(
l
−
1
)
]
=
0
E[y^{(l)}]=\sum_{i=1}^{M_{l-1}}E[w_{i}^{(l)}]E[a_{i}^{(l-1)}]=0
E[y(l)]=i=1∑Ml−1E[wi(l)]E[ai(l−1)]=0
V
a
r
[
y
(
l
)
]
=
M
l
−
1
E
[
(
w
i
(
l
)
a
i
(
l
−
1
)
)
2
]
=
M
l
−
1
E
[
(
w
i
(
l
)
)
2
]
E
[
(
a
i
(
l
−
1
)
)
2
]
=
M
l
−
1
V
a
r
[
w
i
(
l
)
]
E
[
(
a
i
(
l
−
1
)
)
2
]
Var[y^{(l)}]=M_{l-1}E[(w_{i}^{(l)}a_{i}^{(l-1)})^2]=M_{l-1}E[(w_{i}^{(l)})^2]E[(a_{i}^{(l-1)})^2]=M_{l-1}Var[w_{i}^{(l)}]E[(a_{i}^{(l-1)})^2]
Var[y(l)]=Ml−1E[(wi(l)ai(l−1))2]=Ml−1E[(wi(l))2]E[(ai(l−1))2]=Ml−1Var[wi(l)]E[(ai(l−1))2]
现在,我们只需要考虑
y
(
l
)
y^{(l)}
y(l)的分布即可,因为激活函数都是一样的,因此,我们需要考虑
E
[
(
a
i
(
l
−
1
)
)
2
]
E[(a_{i}^{(l-1)})^2]
E[(ai(l−1))2]
E
[
(
a
i
(
l
−
1
)
)
2
]
=
∫
−
∞
+
∞
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
=
∫
−
∞
0
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
+
∫
0
+
∞
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
=
0
+
∫
0
+
∞
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
=
∫
0
+
∞
(
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
【
R
e
L
U
展开】
=
1
2
∫
−
∞
+
∞
(
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
【对称性】
=
1
2
E
[
(
y
(
l
−
1
)
)
2
]
=
1
2
{
V
a
r
[
y
(
l
−
1
)
]
+
(
E
[
(
y
(
l
−
1
)
)
]
)
2
}
=
1
2
V
a
r
[
y
(
l
−
1
)
]
\begin{align} E[(a_{i}^{(l-1)})^2]&=\int^{+\infty}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=0+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【ReLU展开】 \\&=\frac{1}{2}\int^{+\infty}_{-\infty}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1}{2}E[(y^{(l-1)})^2]\nonumber \\&=\frac{1}{2}\{Var[y^{(l-1)}]+(E[(y^{(l-1)})])^2\}\nonumber \\&=\frac{1}{2}Var[y^{(l-1)}]\nonumber \end{align}
E[(ai(l−1))2]=∫−∞+∞ReLU2(y(l−1))p(y(l−1))dy(l−1)=∫−∞0ReLU2(y(l−1))p(y(l−1))dy(l−1)+∫0+∞ReLU2(y(l−1))p(y(l−1))dy(l−1)=0+∫0+∞ReLU2(y(l−1))p(y(l−1))dy(l−1)=∫0+∞(y(l−1))2p(y(l−1))dy(l−1)【ReLU展开】=21∫−∞+∞(y(l−1))2p(y(l−1))dy(l−1)【对称性】=21E[(y(l−1))2]=21{Var[y(l−1)]+(E[(y(l−1))])2}=21Var[y(l−1)]
因此,
V
a
r
[
y
(
l
)
]
=
M
l
−
1
V
a
r
[
w
i
(
l
)
]
E
[
(
a
i
(
l
−
1
)
)
2
]
=
1
2
M
l
−
1
V
a
r
[
w
i
(
l
)
]
V
a
r
[
y
(
l
−
1
)
]
Var[y^{(l)}]=M_{l-1}Var[w_{i}^{(l)}]E[(a_{i}^{(l-1)})^2]=\frac{1}{2}M_{l-1}Var[w_{i}^{(l)}]Var[y^{(l-1)}]
Var[y(l)]=Ml−1Var[wi(l)]E[(ai(l−1))2]=21Ml−1Var[wi(l)]Var[y(l−1)]
故,我们保持
y
(
l
)
和
y
(
l
−
1
)
y^{(l)}和y^{(l-1)}
y(l)和y(l−1)的方差一致,则有:
V
a
r
[
w
i
(
l
)
]
=
2
M
l
−
1
Var[w_{i}^{(l)}]=\frac{2}{M_{l-1}}
Var[wi(l)]=Ml−12
具体采样方法如Xavier一致,可采用均匀分布、正态分布、截断正态分布进行采样。
2.2 针对Leaky ReLU或PReLU的修正因子a
如果,激活函数为Leaky ReLU或PReLU,即
L
e
a
k
y
R
e
L
U
(
x
)
=
{
x
,
x
≥
0
a
x
,
x
<
0
,
a
≥
0
LeakyReLU(x)=\begin{cases} x, & x\ge0\\ ax, & x < 0,a\ge0 \end{cases}
LeakyReLU(x)={x,ax,x≥0x<0,a≥0则有:
E
[
(
a
i
(
l
−
1
)
)
2
]
=
∫
−
∞
+
∞
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
=
∫
−
∞
0
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
+
∫
0
+
∞
R
e
L
U
2
(
y
(
l
−
1
)
)
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
=
∫
−
∞
0
(
a
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
+
∫
0
+
∞
(
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
【
R
e
L
U
展开】
=
(
1
+
a
2
)
∫
0
+
∞
(
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
【对称性】
=
1
+
a
2
2
∫
−
∞
+
∞
(
y
(
l
−
1
)
)
2
p
(
y
(
l
−
1
)
)
d
y
(
l
−
1
)
【对称性】
=
1
+
a
2
2
V
a
r
[
y
(
l
−
1
)
]
\begin{align} E[(a_{i}^{(l-1)})^2]&=\int^{+\infty}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}ReLU^2(y^{(l-1)})p(y^{(l-1)})dy^{(l-1)}\nonumber \\&=\int^{0}_{-\infty}(ay^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}+\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【ReLU展开】 \\&=(1+a^2)\int^{+\infty}_{0}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1+a^2}{2}\int^{+\infty}_{-\infty}(y^{(l-1)})^2p(y^{(l-1)})dy^{(l-1)}\nonumber \quad【对称性】 \\&=\frac{1+a^2}{2}Var[y^{(l-1)}]\nonumber \end{align}
E[(ai(l−1))2]=∫−∞+∞ReLU2(y(l−1))p(y(l−1))dy(l−1)=∫−∞0ReLU2(y(l−1))p(y(l−1))dy(l−1)+∫0+∞ReLU2(y(l−1))p(y(l−1))dy(l−1)=∫−∞0(ay(l−1))2p(y(l−1))dy(l−1)+∫0+∞(y(l−1))2p(y(l−1))dy(l−1)【ReLU展开】=(1+a2)∫0+∞(y(l−1))2p(y(l−1))dy(l−1)【对称性】=21+a2∫−∞+∞(y(l−1))2p(y(l−1))dy(l−1)【对称性】=21+a2Var[y(l−1)]
则有:
V
a
r
[
w
i
(
l
)
]
=
2
(
1
+
a
2
)
M
l
−
1
Var[w_{i}^{(l)}]=\frac{2}{(1+a^2)M_{l-1}}
Var[wi(l)]=(1+a2)Ml−12
则针对均匀分布有
w
i
(
l
)
∼
U
(
−
6
(
1
+
a
2
)
M
l
+
1
,
6
(
1
+
a
2
)
M
l
+
1
)
w_{i}^{(l)} \sim U(-\sqrt{\frac{6}{(1+a^2)M_{l+1}}},\sqrt{\frac{6}{(1+a^2)M_{l+1}}})
wi(l)∼U(−(1+a2)Ml+16,(1+a2)Ml+16)
当
a
=
0
a=0
a=0时,Leaky ReLU与ReLU等价。