训练神经网络时,权重从什么数值起步、训练过程中如何限制其变化范围,直接决定了模型是顺利收敛还是陷入停滞。权重本身承载着网络学到的知识,同时也左右着梯度在层与层之间的传递是否稳定。只有把初始化策略和正则化手法搭配得当,模型才能稳定地学到有价值的模式。
可以把权重理解为神经元之间的开关旋钮,每个连接点上的数值大小,决定了上游信号对下游激活的影响程度。训练的过程,就是根据损失函数反馈,反复调整这些旋钮,让最终输出逐步靠近目标结果。
权重在模型里实际负责三件事:
很多人误以为权重越大越好。实际上,权重偏大容易让输出波动剧烈,模型对输入的细微扰动会产生过度反应,在验证集上表现反而变差。因此,既要选好起点,也要在训练路上给权重加上合理的限制。
初始化的选择决定了反向传播时梯度能否顺畅流动。起步姿势不正确,深层的梯度会逐渐消失或骤然膨胀,导致训练前期长时间没有进展。
最简单的做法是从零均值附近的正态分布或均匀分布里抽出一组较小的随机值。优点是代码实现直接、易于排查问题;缺点是方差会随网络层数增加而累积,深层网络的梯度信号容易失真。当网络层数不多,且激活函数对数值范围压缩不严重时,这种方法能够快速验证模型的整体流程。一旦增加层数或遇到收敛缓慢,就要立刻更换初始化方式。
当网络使用sigmoid或tanh这类会压缩数值范围的激活函数时,Xavier初始化能保持前向与反向传播中的方差相对均衡,防止信号在逐层传递中被放大或衰减。实际做法是从一个与输入输出节点数相关的均匀区间里随机采样。使用这种方案后,深层网络训练过程中的梯度消失问题会明显缓解,学习曲线也更为平滑。
ReLU函数会把负值输入直接清零,导致每层约一半神经元输出为零,整体信号方差自然缩小一半。He初始化正是针对这一特性进行了方差的修正,通过适度增大初始权重的分布范围,补偿被激活函数截断的信号量。当你的网络使用ReLU、LeakyReLU时,优先选择He初始化通常能带来更快的收敛起步和更稳定的前期表现。
挑选初始化方法的关键依据,就是网络所用的激活函数类型。二者不匹配是训练早期最难排查的问题之一,务必在搭建模型时就核对清楚。
训练启动后,权重会随着梯度更新不断变化。如果缺乏限制,权重数值可能持续走高,模型也容易把训练数据里的噪声细节一并记住,造成过拟合。
L1正则化在损失函数中叠加的是权重绝对值之和,它的独特之处在于能够迫使部分权重精确归零,相当于在训练中自动完成特征筛选,适合要求稀疏解的场景。L2正则化叠加的是权重平方和,效果是整体压缩权重规模,让数值分布更均匀,但不会把权重真正变为零。如果目标是抑制过拟合同时保留所有特征的贡献,L2是更通用安全的选项;若希望获得更简洁可解释的模型结构,L1则更为合适。
另一种限制权重增长的思路是直接给权重数值设定边界。常见做法包括数值裁剪与范数约束。数值裁剪操作方便,把权重限制在一定区间即可;范数约束则按行或列将权重缩放至指定长度。这类方法尤其适用于对抗训练或循环神经网络等容易出现梯度或权重暴涨的场景。使用裁剪时要注意设定合理的上限,过紧会压缩模型的表达空间,过松则形同虚设。
仅靠单独一项措施往往不够,更推荐将初始化、正则化与学习率调节放在一起考虑。以下几条经验值得借鉴:
实践中一个常见误区是只调整正则化强度而忽视学习率。这两者共同影响权重的更新幅度,应该放在一起观察。
会。初始权重的分布方式直接影响训练的收敛速度和最终落点。选错初始化方法可能导致梯度消失或爆炸,使模型长期无法收敛,自然也无法达到理想精度。
不是。正则化系数过大会过度压制权重,使模型表达能力下降,出现欠拟合。合适的系数需要根据验证集结果反复尝试,一般从较小值开始。
不行。所有权重设为相同值会让同层的多个神经元按相同方式更新,无法形成差异化的特征提取能力。实际初始化时应保证随机性,同时控制方差范围。
权重管理贯穿神经网络训练的始终,落脚点在于三个动作:选择与激活函数匹配的初始化方式、通过正则化控制权重增长速度、在学习率与正则强度之间找到平衡。建议动手搭建模型时,先记录激活函数的类型,再据此选定初始化方案;训练过程中密切观察权重数值分布的变化,出现异常膨胀时及时调整。借助这几项基础操作,模型训练会更平稳,最终的泛化表现也更值得期待。