6.3 正则化策略:防止过拟合的多重手段

尽管大语言模型通常训练在海量数据上(过拟合风险较低),适当的正则化仍然对训练稳定性和泛化性能至关重要。

6.3.1 Dropout

Dropout 在训练时随机将一定比例的神经元输出置零。原始 Transformer 在以下位置应用 Dropout(率 $P_{\text{drop}} = 0.1$):

  • 自注意力的权重(注意力 Dropout)

  • 每个子层的输出(残差 Dropout)

  • 词嵌入与位置编码相加后

Dropout 的工作原理是防止神经元之间的共适应——当某些神经元随时可能被关闭时,模型被迫学习更鲁棒的、分布式的特征表示,而非依赖特定的少数神经元。

值得注意的是,现代超大规模语言模型(如 GPT-3、Llama 3)通常不使用 Dropout。这是因为在极大规模数据上训练时,模型远未过拟合,Dropout 反而可能减慢收敛。

6.3.2 梯度裁剪

梯度裁剪(Gradient Clipping)是防止训练不稳定的重要手段。当梯度的范数超过预设阈值时,按比例缩小梯度:

ggmax_normmax(g,max_norm)g \leftarrow g \cdot \frac{\text{max\_norm}}{\max(\|g\|, \text{max\_norm})}

常用的裁剪阈值为 1.0。这确保了即使某些批次产生异常大的梯度(如遇到极端样本),参数更新也不会过于剧烈。

梯度裁剪对 Transformer 训练尤其重要,因为注意力机制中 Softmax 的导数在某些条件下可能产生较大的梯度值。

6.3.3 权重衰减

权重衰减(Weight Decay)在每次参数更新时对参数施加微小的收缩:

θ(1λ)θηθL\theta \leftarrow (1 - \lambda) \theta - \eta \nabla_\theta \mathcal{L}

它倾向于使权重保持较小的值,防止模型过度依赖少数大权重特征。在与 AdamW 配合使用时,权重衰减通常设为 0.01~0.1。

6.3.4 训练稳定性的实践建议

大规模 Transformer 训练中的稳定性问题是一个持续的工程挑战。常见的实践包括:

  • 损失尖峰(Loss Spike)处理:训练过程中偶尔出现的损失突然飙升,可通过跳过梯度异常的批次或从最近的检查点回滚来应对

  • 参数初始化:合理的初始化(如 Xavier 或 Kaiming 初始化)确保各层的激活值和梯度在合理范围内

  • 梯度的数值稳定性:在 FP16 训练中,某些操作(如 Softmax、LayerNorm)可能需要在 FP32 下执行以避免数值溢出

最后更新于