随机初始化
使用随机数生成器(如高斯分布或均匀分布)为参数赋初始值。常见方法包括:
- Xavier初始化:适用于Sigmoid或Tanh激活函数,权重从均值为0、方差为\\frac{1}{n_{\\text{in}}}的高斯分布中采样,其中n_{\\text{in}}为输入维度。
- He初始化:适用于ReLU激活函数,权重从均值为0、方差为\\frac{2}{n_{\\text{in}}}的高斯分布中采样。
预训练初始化
利用预训练模型(如BERT、ResNet)的权重作为初始值,适用于迁移学习场景。需注意调整输出层结构以匹配目标任务。
零初始化
将所有权重初始化为0,适用于偏置项(bias)。但全零初始化可能导致神经元对称性问题,通常需结合其他方法使用。
常量初始化
将参数设置为固定常量(如全1初始化),常用于特定场景(如门控机制的初始偏置)。需谨慎使用以避免梯度消失或爆炸。
正交初始化
通过奇异值分解(SVD)生成正交矩阵作为初始权重,能缓解深度网络中的梯度消失问题。适用于RNN或Transformer等结构。
代码示例(PyTorch):
python
# Xavier初始化
torch.nn.init.xavier_normal_(layer.weight)
# He初始化
torch.nn.init.kaiming_normal_(layer.weight, mode='fan_in', nonlinearity='relu')
# 正交初始化
torch.nn.init.orthogonal_(layer.weight)