神经网络初始化方法
字数 1244 2025-11-15 17:03:07
神经网络初始化方法
神经网络初始化方法指的是在训练开始前为网络中的权重和偏置设置初始值的策略。正确的初始化对模型的收敛速度和最终性能至关重要。
1. 初始化的基本目标
- 打破对称性:如果所有权重初始化为相同值,网络中不同神经元可能学到相同的特征,降低表达能力的多样性。
- 控制梯度范围:初始权重的尺度会影响训练过程中梯度的幅度,过大或过小可能导致梯度爆炸或消失问题。
- 促进收敛:合适的初始化能使损失函数在优化时更平滑地下降,减少训练时间。
2. 常见初始化方法
(1)零初始化
- 将所有权重设为0。
- 缺陷:导致神经元输出相同,反向传播的梯度也相同,权重更新对称,网络无法学习有效特征。
(2)随机初始化
- 小随机数:从均匀分布或正态分布中采样微小值(如±0.01)。
- 问题:权重过小会使深层网络梯度逐渐消失;权重过大会导致梯度爆炸或激活值饱和。
(3)Xavier初始化(Glorot初始化)
- 适用场景:针对S型激活函数(如Sigmoid、Tanh)设计。
- 原理:根据输入和输出的神经元数量调整权重方差,使前向传播的激活值和反向传播的梯度方差保持一致。
- 公式:
- 均匀分布:区间为 \([- \sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}}]\)
- 正态分布:均值为0,方差为 \(\frac{2}{n_{in} + n_{out}}\),其中 \(n_{in}\) 和 \(n_{out}\) 分别为层的输入和输出维度。
(4)He初始化(Kaiming初始化)
- 适用场景:针对ReLU及其变体(如Leaky ReLU)设计。
- 原理:考虑ReLU激活函数会将负值置零,调整方差以补偿信息损失。
- 公式:
- 正态分布:均值为0,方差为 \(\frac{2}{n_{in}}\)。
- 均匀分布:区间为 \([-\sqrt{\frac{6}{n_{in}}}, \sqrt{\frac{6}{n_{in}}}]\)。
3. 高级初始化策略
- 正交初始化:将权重矩阵初始化为正交矩阵,保留梯度范数,适用于循环神经网络(RNN)。
- 稀疏初始化:将大部分权重设为0,仅随机初始化少量连接,减少参数间的相关性。
- 自适应方法:预训练模型(如迁移学习)中使用已学到的权重作为初始值。
4. 初始化与网络深度的关系
- 深层网络中,初始化不当易导致梯度消失或爆炸。例如,使用Xavier初始化时,若网络层数过多,Tanh函数在饱和区的梯度衰减仍可能累积。
- 现代架构(如ResNet)通过残差连接缓解此问题,降低对初始化的敏感度。
5. 实践建议
- 默认使用He初始化用于ReLU系列激活函数,Xavier初始化用于S型激活函数。
- 对于自注意力架构(如Transformer),常采用截断正态分布配合缩放因子(如T5初始化)。
- 监控训练初期的激活值分布与梯度直方图,验证初始化效果。