参数初始化方法分类

参数初始化在深度学习中至关重要,直接影响模型训练的收敛速度和最终性能。常见的初始化方法可分为以下几类:

随机初始化
  • 均匀分布初始化:参数从均匀分布 $U(-a, a)$ 中随机采样,其中 $a$ 通常设为较小值(如 0.01)。
  • 正态分布初始化:参数从正态分布 $N(0, \sigma^2)$ 采样,$\sigma$ 控制初始权重范围。
基于方差缩放的初始化
  • Xavier/Glorot 初始化:适用于 Sigmoid/Tanh 激活函数,方差缩放因子为 $\frac{1}{n_{in} + n_{out}}$,其中 $n_{in}$ 和 $n_{out}$ 是层的输入输出维度。
  • He 初始化:针对 ReLU 及其变体设计,方差缩放因子为 $\frac{2}{n_{in}}$,能缓解 ReLU 的神经元死亡问题。
正交初始化

通过生成正交矩阵初始化权重,保持前向传播中的范数稳定性,适用于RNN或需要保持长程依赖的场景。

预训练初始化

利用预训练模型(如 ImageNet)的权重作为初始值,适用于迁移学习场景。

特殊场景初始化
  • 零初始化:偏置项常初始化为零,但权重零初始化会导致对称性问题。
  • 常数初始化:权重设为固定常数(如全1),通常仅用于测试或特定研究。

选择建议

  • 默认推荐使用 He 初始化(ReLU 族)或 Xavier 初始化(Sigmoid/Tanh)。
  • 对于深层网络,可尝试结合正交初始化防止梯度爆炸/消失。
  • 迁移学习优先加载预训练参数,微调部分可用较小标准差初始化。

代码示例(PyTorch):

# He 初始化
torch.nn.init.kaiming_normal_(weight, mode='fan_in', nonlinearity='relu')

# Xavier 初始化
torch.nn.init.xavier_uniform_(weight, gain=1.0)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐