核心要点

  • BatchNorm 沿 batch 维度对每个特征通道统计均值方差,强依赖 batch 大小,小 batch 时统计噪声大

  • LayerNorm 沿单样本的特征维度统计,与 batch 无关,每个样本独立归一化

  • BN 训练用当前 batch 统计、推理用累积的 running mean/var,存在训练/推理不一致;LN 训练推理行为完全一致

  • NLP 序列变长且 batch 内长度不一,BN 难以稳定统计,故 Transformer/RNN 普遍采用 LayerNorm

标准回答

归一化维度的差异

设输入张量形状为 (N, ..., D)。BatchNorm 对每个特征(通道)沿 batch 维度 N 计算 μ、σ,即「跨样本、单特征」;LayerNorm 对每个样本沿特征维度 D 计算 μ、σ,即「单样本、跨特征」。两者都再经可学习的 γ、β 仿射变换。

对 batch 的依赖

BN 的统计量依赖 batch 大小:batch 太小时 μ、σ 噪声大,且需维护 running mean/var 供推理使用,带来训练/推理不一致风险。LN 仅在单样本内部统计,与 batch 大小无关,训练与推理行为一致。

为什么 Transformer 用 LayerNorm

NLP 任务序列长度可变、batch 内各样本长度不一,padding 会污染 batch 维统计,BN 难以给出稳定均值方差;而 LN 在每个 token 的特征维上独立归一化,不受序列长度和 batch 影响,因此成为 Transformer、RNN 的标配。

常见误区

⚠️ 常见踩坑

把两者都说成「对一批数据归一化」而混淆统计维度;忽略 BN 推理须切换到 running stats、而 LN 无此区别这一关键差异。

追问

追问 1Pre-LN 与 Post-LN 有什么区别?

Post-LN 把 LayerNorm 放在残差相加之后(原始 Transformer),训练深层时梯度不稳定,常需 warmup;Pre-LN 把 LN 放在子层输入处,残差路径更通畅、训练更稳定,是当前大模型的主流选择,但极深时表达能力略有折损。

追问 2RMSNorm 与 LayerNorm 的区别?

RMSNorm 去掉了减均值(中心化)步骤,仅用特征的均方根做缩放,省去一次均值统计,计算更省、数值更稳定,效果与 LayerNorm 相当,被 LLaMA 等大量大模型采用。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。