Layer Normalization 与 Batch Normalization 在 Transformer 中为何偏好前者?

📅 2026/8/2 4:45:26
Layer Normalization 与 Batch Normalization 在 Transformer 中为何偏好前者?
Layer Normalization vs Batch Normalization 在 Transformer 中的选择一、两者核心区别归一化维度不同假设输入张量形状为[Batch, SeqLen, d_model]Batch Normalization (BN) ┌──────────────┐ Batch │ s₁ s₂ s₃ │ ← 对每个特征维度 │ s₁ s₂ s₃ │ 跨 (Batch × SeqLen) 计算均值/方差 │ s₁ s₂ s₃ │ └──────────────┘ ↑ 按列特征维归一化 统计量形状: [d_model] Layer Normalization (LN) ┌──────────────┐ Batch │ s₁ s₁ s₁ │ ← 对每个样本 │ s₂ s₂ s₂ │ 跨 d_model 维计算均值/方差 │ s₃ s₃ s₃ │ └──────────────┘ ↑ 按行特征维内归一化 统计量形状: [Batch, SeqLen]特性Batch NormalizationLayer Normalization归一化方向跨样本按特征维度跨特征维度按单个样本统计量来源依赖整个 batch仅依赖当前样本自身受 batch size 影响是否受序列长度影响是否训练/推理行为不同推理用滑动平均统计量相同二、Transformer 偏好 LN 的原因原因1序列长度可变Batch 内: 样本A: [t₁, t₂, t₃, t₄, t₅, t₆, t₇, t₈] ← 长序列 样本B: [t₁, t₂, t₃] ← 短序列 样本C: [t₁, t₂, t₃, t₄, t₅] ← 中等序列BN 需要跨 batch 中所有样本的所有位置计算统计量但不同样本长度不同短序列的位置在 BN 的统计量计算中被不均匀地采样位置 4 的统计量只来自样本 A 和 C位置 8 只来自样本 A不同位置的统计量不一致归一化效果差且不稳定LN 对每个位置独立归一化完全不受序列长度差异影响。原因2Batch Size 限制大模型训练的实际场景场景Batch SizeBN 表现大模型预训练可能很小梯度累积BN 统计量噪声大不稳定微调Fine-tuning通常很小1~8BN 几乎失效推理通常为 1BN 无法计算 batch 统计量LN 对每个样本独立计算batch size 1 也能正常工作。原因3训练与推理一致性BN 训练时: 使用当前 batch 的均值/方差 BN 推理时: 使用训练期间累积的滑动平均统计量 → 训练和推理的归一化行为不同 → 若训练/推理 batch 分布有差异性能下降 LN 训练时: 使用当前样本的均值/方差 LN 推理时: 使用当前样本的均值/方差 → 行为完全一致无分布偏移问题原因4自注意力的排列不变性自注意力将输入视为无序集合每个位置的表示是独立计算的。BN 跨位置混合统计量引入了位置间的隐式耦合与自注意力的设计理念冲突。LN 保持每个位置的独立性更契合自注意力的计算模式。原因5梯度传播更稳定Transformer 是深层堆叠结构数十甚至上百层。LN 的残差路径中归一化不依赖其他样本梯度流更稳定。BN 在深层网络中 batch 统计量的波动会逐层放大导致训练不稳定。三、总结对比因素BN 的问题LN 的优势可变序列长度不同位置统计量不均每位置独立无影响小 batch size统计量噪声大/失效不依赖 batch训练/推理一致性行为不同需维护滑动平均完全一致与自注意力契合跨位置耦合理念冲突位置独立天然契合深层稳定性统计量波动逐层放大梯度流稳定四、一句话总结Transformer 偏好 Layer Normalization 而非 Batch Normalization根本原因在于LN 按单个样本的特征维度归一化不依赖 batch 统计量因此不受序列长度可变、batch size 小、训练/推理分布差异的影响且与自注意力位置独立计算的设计理念天然契合。而 BN 跨样本统计在可变长度序列、小 batch 微调和单样本推理场景下均不稳定不适合 Transformer 的架构特点。