权重一定不能全零初始化。因为这会导致神经元在前向传播中计算出同样的输出,然后在反向传播中计算出同样的梯度,从而进行同样的权重更新。这就产生了大量对称性神经元。
通常采用小随机数初始化,通过这样来打破对称性。至于使用高斯分布还是均匀分布,对结果影响很小。
之所以用小的随机数,是因为:如果网络中存在tanh 或者 sigmoid 激活函数,或者网络的输出层为sigmoid 等单元,则它们的变量值必须很小。
如果使用较大的随机数,则很有可能这些单元会饱和,使得梯度趋近于零。这意味着基于梯度下降的算法推进的很慢,从而学习很慢。
如果网络中不存在sigmoid/tanh 等激活函数,网络的输出层也不是sigmoid 等单元,则可以使用较大的随机数初始化。
通常使用 来校准权重初始化标准差。随着输入数据的增长,随机初始化的神经元的输出数据的分布中的方差也在增大。
假设权重 和输入 之间的内积为 (不考虑非线性激活函数)。我们检查 的方差
其中假设输入和权重的平均值都是0,因此有 。同时假设所有的 服从同样的分布,假设所有的 服从同样的分布
要使得输出 和输入 具有同样的方差,则必须保证每个权重 的方差是 。则如果权重通过一个标准高斯分布初始化,则需要将标准差除以
在Glorot的论文中,他推荐初始化公式为: 。其中 为输入和输出的数量。
通常将偏置初始化为0。这是因为随机小数值权重已经打破了对称性