定义

Xavier 初始化是一种比较常用的初始化方法,其核心思想是使得每一层的输出方差尽量相等,这样可以避免梯度消失和梯度爆炸,具体的公式如下。

$$
W \sim U(-\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}})
$$

其中 $n_{in}$ 是输入神经元的个数,$n_{out}$ 是输出神经元的个数,$U(a, b)$ 是均匀分布。

优点

为什么要让每一层的输出方差尽量相等呢?

  1. 避免梯度消失和梯度爆炸:如果各层输出的方差不一致,可能会导致梯度在传递过程中逐渐变小(梯度消失)或逐渐变大(梯度爆炸)。
  2. 保证信号的有效传播:如果各层输出方差不一致,可能会导致信号在某些层被放大或缩小,从而影响网络对特征的提取和学习能力。例如,当某一层的输出方差过大时,该层的输出值可能会超出激活函数的有效范围,使得激活函数饱和,从而丢失了部分信息。