简单线性模型的权重初始化
全0初始化,常用于简单的线性模型中,如Logistic Regression, LR, SVM,感知机等
深度学习中的权重初始化
深度网络容易出现梯度消失问题,造成网络学习停滞。深度网络中参数的梯度为激活值与状态梯度的乘积(例如 ∂ l o s s ∂ w 2 = ∂ l o s s ∂ z 3 ∂ z 3 ∂ w 3 = ∂ l o s s ∂ z 3 a 2 ( z 3 = w 2 a 2 ) \frac{\partial{loss}}{\partial w_2} = \frac{\partial{loss}}{\partial z_3}\frac{\partial{z_3}}{\partial w_3}=\frac{\partial{loss}}{\partial z_3}a_2(z_3=w_2a_2) ∂w2∂loss=∂z3∂loss∂w3∂z3=∂z3∂lossa2(z3=w2a2)),为了避免梯度消失,应避免这两项为零。
标准初始化
基本假设:没有考虑激活函数对输出数据分布的影响。
特点:正向传播时,激活值的方差保持不变
做法:
V
a
r
(
w
i
)
=
1
n
i
n
Var(w_i)= \frac{1}{n_{in}}
Var(wi)=nin1,
w
−
N
(
0
,
1
n
i
n
)
w -N(0, \frac{1}{n_{in}})
w−N(0,nin1) ,
w
−
U
(
−
3
n
i
n
,
3
n
i
n
)
w-U(-\sqrt\frac{3}{n_{in}}, \sqrt\frac{3}{n_{in}})
w−U(−nin3,nin3)
优点:认为网络输出的分布应该一致
Xavier初始化
基本假设:没有考虑激活函数对输出数据分布的影响(要求激活函数关于原点对称,且在原点除近似线性,如tanh)
特点:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变
做法:
V
a
r
(
w
i
)
=
2
n
i
n
+
n
o
u
t
Var(w_i)=\frac{2}{n_{in}+n_{out}}
Var(wi)=nin+nout2
w
−
N
(
0
,
2
n
i
n
+
n
o
u
t
)
w -N(0, \frac{2}{n_{in}+n_{out}})
w−N(0,nin+nout2),
w
−
U
(
−
6
n
i
n
+
n
o
u
t
,
6
n
i
n
+
n
o
u
t
)
w-U(-\sqrt\frac{6}{n_{in}+n_{out}}, \sqrt\frac{6}{n_{in}+n_{out}})
w−U(−nin+nout6,nin+nout6)
优点:认为各层的激活值的方差和状态梯度的方差在传播过程中的应该保存一致
Kaiming初始化
基本假设:使用ReLU激活函数。
特点:正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变
做法:
V
a
r
(
w
i
)
=
2
n
i
n
Var(w_i)=\frac{2}{n_{in}}
Var(wi)=nin2,
w
−
N
(
0
,
2
n
i
n
)
w -N(0, \frac{2}{n_{in}})
w−N(0,nin2) ,
w
−
U
(
−
6
n
i
n
,
6
n
i
n
)
w-U(-\sqrt\frac{6}{n_{in}}, \sqrt\frac{6}{n_{in}})
w−U(−nin6,nin6)
优点:考虑了ReLU激活函数对输出数据分布的影响,使得输入和输出方差一致
随机初始化+BN
BN减小了网络对初始值尺度的依赖,使用较小的标准差初始化即可
pretrain初始化
属于迁移学习的一种,迁移学习认为深度网络靠前的层学到的特征时一般性的可泛化的特征
随机初始化、Xavier初始化都有一个基本假设:每一层的各个神经元的状态值均值为0,且方差相同,这也从侧面说明了输入数据一定要进行标准化预处理。而Kaiming初始化并没有各个神经元的状态值均值为0的假设,但同样有方差相同的假设。