作用:缓解梯度消失和梯度爆炸问题,有利于模型性能和收敛速度。
1.把权重初始化为0
把权重初始化为0的方式不可取的。 这是因为如果把w初始化0,那么每一层的神经元学到的东西都是一样的(输出是一样的),而且在反向传播的时候,他们的梯度相同。在这种情况下, 隐含层单元就会完全一样,因此他们完全对称。导致模型性能下降,还会出现梯度消失的情况。
2. 小随机数初始化
只要随机初始化W你就有不同的隐含单元计算不同的东西,因此打破对称性。 我们通常倾向于初始化为很小的随机数。因为如果你用tanh或者sigmoid激活函数,当 W很大,激活函数的输出值就会很大或者很小,因此这种情况下你很可能停在tanh/sigmoid函数的平坦的地方, 这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。
缺点:随着网络的加深,梯度慢慢消失
3.Xavier初始化(tanh)
尽可能的让输入和输出服从相同的分布,这样就能够避免后面层的激活函数的输出值趋向于0。 让信息可以在网络中均匀的分布一下。 输出值在很多层之后依然保持着良好的分布,有利于优化神经网络
权重分布:均值为0,方差为1 / n(输入的个数 )的 均匀分布
缺点:对非线性函数不具有普适性
4.He Initialization(ReLU)
只需要在Xavier的基础上再除以2。