深度学习初始化Xavier、Kaiming
初始化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?1??wi(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?1??wi(l)?ai(l?1)?]=i=1∑Ml?1??E[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?1??wi(l)?ai(l?1)?]=i=1∑Ml?1??Var[wi(l)?]Var[ai(l?1)?]=Ml?1?Var[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?1?Var[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?1?1?
以上即为只考虑前向传播时的初始化。
同理,考虑反向传播时的初始化,有
V
a
r
[
w
i
(
l
)
]
=
1
M
l
+
1
Var[w_{i}^{(l)}]=\frac{1}{M_{l+1}}
Var[wi(l)?]=Ml+1?1?
综合考虑,即取前后神经元个数的平均值,有
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?1??1?=Ml+1?+Ml?1?2?
因此,我们得到了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?1?6??
具体使用时,还有一个参数
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?1?6??
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?1?2?)
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}}
η=∫?kk?e?x2dx∫?kk?x2e?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)?]=161?Ml?1?Var[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?1??wi(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?1??E[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?1?E[(wi(l)?ai(l?1)?)2]=Ml?1?E[(wi(l)?)2]E[(ai(l?1)?)2]=Ml?1?Var[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)=∫?∞0?ReLU2(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)【对称性】=21?E[(y(l?1))2]=21?{Var[y(l?1)]+(E[(y(l?1))])2}=21?Var[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?1?Var[wi(l)?]E[(ai(l?1)?)2]=21?Ml?1?Var[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?1?2?
具体采样方法如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)=∫?∞0?ReLU2(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+a2?Var[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?1?2?
则针对均匀分布有
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+1?6??,(1+a2)Ml+1?6??)
当
a
=
0
a=0
a=0时,Leaky ReLU与ReLU等价。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!