参数初始化
1、 参数初始化可以减缓梯度爆炸和梯度消失问题
2、tanh一般使用Xavier初始化方法
3、Relu及其变种使用Kaiming初始化方法
V a r ( X ) = E ( X 2 ) − E ( X ) 2 V a r ( X + Y ) = V a r ( X ) + V a r ( Y ) , 当 X 和 Y 互相独立 V a r ( X Y ) = V a r ( X ) V a r ( Y ) + V a r ( X ) E ( Y ) 2 + V a r ( Y ) E ( X ) 2 Var(X) = E(X^2) - E(X)^2 \\ Var(X+Y) = Var(X) +Var(Y), 当X和Y互相独立 \\ Var(XY) = Var(X)Var(Y) + Var(X)E(Y)^2 + Var(Y)E(X)^2 Var(X)=E(X2)−E(X)2Var(X+Y)=Var(X)+Var(Y),当X和Y互相独立Var(XY)=Var(X)Var(Y)+Var(X)E(Y)2+Var(Y)E(X)2
方差的基本性质
1、方差的定义:对于随机变量X,其方差定义为
V
a
r
(
X
)
=
E
[
E
−
E
[
X
]
]
2
Var(X) = E[E-E[X]]^2
Var(X)=E[E−E[X]]2
其中E[X]是X的期望值。
2、方差的线性性质:对于两个随机变量X和Y,如果它们是独立的,那么Var(X+Y) = Var(X) +Var(Y)
当参数都初始化为0,两个神经元的梯度一样,初始值一样,最后会导致训练过程中的变化也一样,无法学习更复杂的特征,这种情况称为对称现象
我们从正态分布N(0,1)中采样参数的初始值
输入经过神经元后,标准差从1变成了1.732,意味着输入经过神经元后,输出的离散程度提高了。
如果输入不止3个,而是n个输入,y的离散程度将会被进一步放大,当不使用任何激活函数的时候,放大的y值将被累积在反向传播的过程里,这将造成梯度爆炸,如果使用tanh作为激活函数,也有可能因为y的值过大或者过小得到一个非常小或者非常大的梯度,造成梯度爆炸和梯度消失。
所以,为了让神经网络训练过程稳定下来,需要让y的方差落在一个可控的范围内。让y的方差等于1,这样求出参数w分布的方差就等于1/n。同时考虑输入和输出,则参数w的方差应该满足2/(输入+输出)
上述两种初始化对于tanh友好,但无法在relu函数上使用。
kaiming初始化适合relu