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)是防止训练不稳定的重要手段。当梯度的范数超过预设阈值时,按比例缩小梯度:
g←g⋅max(∥g∥,max_norm)max_norm
常用的裁剪阈值为 1.0。这确保了即使某些批次产生异常大的梯度(如遇到极端样本),参数更新也不会过于剧烈。
梯度裁剪对 Transformer 训练尤其重要,因为注意力机制中 Softmax 的导数在某些条件下可能产生较大的梯度值。
6.3.3 权重衰减
权重衰减(Weight Decay)在每次参数更新时对参数施加微小的收缩:
θ←(1−λ)θ−η∇θL
它倾向于使权重保持较小的值,防止模型过度依赖少数大权重特征。在与 AdamW 配合使用时,权重衰减通常设为 0.01~0.1。
6.3.4 训练稳定性的实践建议
大规模 Transformer 训练中的稳定性问题是一个持续的工程挑战。常见的实践包括:
损失尖峰(Loss Spike)处理:训练过程中偶尔出现的损失突然飙升,可通过跳过梯度异常的批次或从最近的检查点回滚来应对
参数初始化:合理的初始化(如 Xavier 或 Kaiming 初始化)确保各层的激活值和梯度在合理范围内
梯度的数值稳定性:在 FP16 训练中,某些操作(如 Softmax、LayerNorm)可能需要在 FP32 下执行以避免数值溢出
最后更新于
