初始点能够决定算法是否收敛,有些初始点十分不稳定,使得该算法会遭遇数值困难,并完全失败。当学习收敛时,初始点可以决定学习收敛得多快,以及是否收敛到一个代价高或低的点。此外,差不多代价的点可以具有区别极大的泛化误差,初始点也可以影响泛化。

破坏对称性

如果具有相同激活函数的两个隐藏单元连接到相同的输入,那么这些单元必须具有不同的初始参数。

如果它们具有相同的初始参数,然后应用到确定性损失和模型的确定性学习算法将一直以相同的方式更新这两个单元。

即使模型或训练算法能够使用随机性为不同的单元计算不同的更新(例如使用 Dropout 的训练),通常来说,最好还是初始化每个单元使其和其他单元计算不同的函数。这或许有助于确保没有输入模式丢失在前向传播的零空间中,没有梯度模式丢失在反向传播的零空间中。

简单的初始化方法

对于 m 个输入,n 个输出的全连接层

最简单

从分布 $U\left(-\frac{1}{\sqrt{m}}, \frac{1}{\sqrt{m}}\right)$ 采样

标准初始化

$U\left(-\sqrt{\frac{6}{m+n}}, \sqrt{\frac{6}{m+n}}\right)$

随机正交矩阵初始化

稀疏初始化

kaiming 初始化