一般神经网络被随机初始化。随机从均匀分布或者高斯分布中采样。
初始化的基本动机是每一层网络输出的方差应该和输入方差保持一致,便于网络的学习更新(信息流动)。
1、Xavier初始化
适用于tanh,sigmoid激励函数,其输出激励值的均值为0;
w
∼
U
(
−
s
c
a
l
e
,
+
s
c
a
l
e
)
w \sim U(-scale,+scale)
w∼U(−scale,+scale);
s
c
a
l
e
=
6
n
i
n
+
n
o
u
t
scale=\sqrt{\frac{6}{n_{in}+n_{out}}}
scale=nin+nout6.
w
∼
N
(
0
,
s
t
d
2
)
w \sim N(0,std^2)
w∼N(0,std2);
s
t
d
=
2
n
i
n
+
n
o
u
t
std=\sqrt{\frac{2}{n_{in}+n_{out}}}
std=nin+nout2.
2、Kaiming初始化
适用于ReLu激励函数,其输出激励值的均值不为0;
w
∼
U
(
−
s
c
a
l
e
,
+
s
c
a
l
e
)
w \sim U(-scale,+scale)
w∼U(−scale,+scale);
s
c
a
l
e
=
3
n
i
n
(
n
o
u
t
)
scale=\sqrt{\frac{3}{n_{in}(n_{out})}}
scale=nin(nout)3.
w
∼
N
(
0
,
s
t
d
2
)
w \sim N(0,std^2)
w∼N(0,std2);
s
t
d
=
1
n
i
n
(
n
o
u
t
)
std=\sqrt{\frac{1}{n_{in}(n_{out})}}
std=nin(nout)1.