完整题目
在大模型架构中,为何Transformer系列普遍采用Layer Normalization而非Batch Normalization?请从训练稳定性、批大小依赖、序列建模特性等方面进行详细解释。
计算轴不同
- BatchNorm通常对每个通道使用batch及其他被纳入统计的轴计算均值方差,训练依赖当前batch,推理使用运行统计。
- LayerNorm对每个token或样本的隐藏维独立归一化,不依赖其他batch样本,训练与推理使用当前样本统计。
Transformer更常用LN/RMSNorm的原因
- batch独立:微批大小变化、梯度累积和推理batch变化不会改变LN统计。
- 序列边界清晰:每个token在隐藏维归一化,变长序列与padding不需要混入跨样本统计。BN是否被padding污染取决于布局、统计轴和mask实现,并非必然。
- 自回归一致性:生成时batch与长度不断变化,LN无需维护训练期running mean/variance。
- 残差优化经验:Transformer已形成Pre-Norm、Post-Norm及RMSNorm等成熟配方;这是架构与优化的经验选择,不是数学上“必须LN”。
LN会改变送入Q/K/V的表示尺度与中心,因此会影响注意力logit和权重分布,不能说“不影响attention”。BN也不是理论上不能用于序列模型;如果明确定义统计轴、正确mask并处理训练推理统计差异,可以构造变体,但通常引入跨样本耦合和更复杂的部署行为。
工程比较应控制模型、初始化和batch,观察训练稳定性、不同长度/批量下的一致性、吞吐和最终质量,而不是用“BN需要大batch”一条绝对规则结束。
继续追问 · 3 个问题
- 为什么LLM训练时通常用Pre-Norm(LN在残差前)而非Post-Norm?
- RMSNorm相比LayerNorm有什么优势,为什么现在主流LLM更常用它?
- 如果一定要用BN,在Transformer中有什么改进方法?
换一种问法,检查是否真正理解
场景切入
假设现在训练一个处理变长文本的 Transformer,batch 较小且各样本 padding 差异明显。你会选择 LayerNorm 还是 BatchNorm,判断依据是什么?