神经网络在开始训练之前,每一个权重都需要一个初始值。这个看似不起眼的"起点",其实深刻影响着网络能不能训得动、训得快。权重初始化,就是给这些参数选定出发位置的技术。
如果初始化得太小会怎样?以深层网络为例,每一层的输出都是上一层乘以权重、再经过激活函数得到的。如果初始权重普遍偏小,信号在逐层传递时会被不断缩小,到后面几层几乎"传不动",梯度也随之趋近于零——这就是梯度消失(vanishing gradient),网络难以学习。反过来,如果权重太大,信号会逐层放大,最终溢出成极值,梯度爆炸,训练直接发散。
早期人们尝试过把权重全部初始化为 0 或相同的常数,但这会带来一个致命问题:同一层里所有神经元的前向输出和梯度完全一样,网络无论怎么训练都像是在"复制粘贴",学不到不同的特征,这被称为对称性破缺失败。因此,初始化必须引入随机性,用来打破对称。
现代解决方案的思路,是让"每一层的输出方差在传播前后尽量保持一致"。Xavier(Glorot)初始化按输入与输出的神经元数量来缩放随机权重的方差,适合 Sigmoid、Tanh 等激活函数;而当网络改用 ReLU 家族激活时,He(Kaiming)初始化会把方差再放大一些,用来补偿 ReLU 把一半输入置零带来的信号衰减。两者的共同点都是:让信号的"音量"在层层传递中保持稳定。
对于今天的大语言模型,主流做法又有新的演化。由于 Transformer 广泛使用 RMSNorm、残差连接与大量参数矩阵,许多模型采用更简洁的方案:普通线性层用较小方差的正态分布初始化,同时把残差分支上的部分投影矩阵(例如输出投影)初始化为接近 0 的小值,从而让训练初期网络更接近"恒等映射",优化过程更平稳。初始化看似只是细节,却常常是"大模型能不能训起来"的关键一环。
小结:好的初始化不会让网络天生就聪明,但它能保证信号与梯度在深层结构中不消散、不爆炸,让训练拥有一个稳定的开局。理解了这一点,也就理解了为什么"开局"往往决定成败。
【参考来源】综合整理自公开发布的行业信息