Transformer 中为什么用LayerNorm而不用BatchNorm?

无论是 BERT、GPT 还是 ViT,几乎都不用 Batch Normalization,而是清一色地用 Layer Normalization。

这不是巧合,而是 Transformer 架构中一个非常深层的设计选择。 所有相关源码示例、流程图、面试八股、模型配置与知识库构建技巧,我也将持续更新在Github:AIHub,欢迎关注收藏!

一、BN 和 LN 到底在做什么?

BN 和 LN 的出发点其实一样------稳定训练,防止梯度爆炸或消失

  • Batch Normalization(BN)
    它在一个 batch 内计算均值和方差,对同一层的所有样本的每个通道做标准化。
    换句话说,BN 关心的是这一批数据的统计特征
  • Layer Normalization(LN)
    LN 则是在同一个样本内部计算均值和方差,对该样本的所有特征维度一起归一化。
    换句话说,LN 关心的是单个样本内部的特征分布

BN 是跨样本归一化,LN 是单样本归一化。

二、BN 的问题

BN 在 CNN 时代非常成功,但为什么在 Transformer 中就变得水土不服?

根本原因有三点。

1. Transformer 是序列模型,batch 维度不稳定

BN 的计算依赖 batch 的统计量(均值和方差)。

而 Transformer 的输入往往是变长序列,不同样本长度不同,padding 数量不同,导致 batch 内统计特性不一致,BN 的均值和方差变得不可靠。

2. 自注意力机制破坏了空间独立性

在卷积中,BN 对通道归一化是合理的,因为每个通道特征相对独立。

但在 Transformer 的 Self-Attention 中,每个 token 都与其他 token 有强关联

此时再按 batch 统计均值、方差,就会让不同样本的分布互相干扰,破坏注意力机制的学习稳定性。

3. 推理阶段 BN 的统计特性难以复用

BN 在推理时会使用训练阶段的滑动均值来做归一化。

但 Transformer 的输入分布在推理阶段往往与训练时不同(比如变长文本、不同语言或领域),这会导致分布漂移(distribution shift),从而引入偏差。

LN 不依赖 batch,因此天然更稳定。

三、LN 的优势

相较 BN,LN 有三个天然优势,让它几乎成了 Transformer 的标配:

  1. 与 batch size 无关:LN 在样本内部归一化,batch 只要有一个样本都能跑。
  2. 适合变长序列:每个 token 独立归一化,不受 padding、mask 等影响。
  3. 训练和推理一致:LN 在训练和推理阶段用的统计量完全一致,不存在分布漂移问题。

这些特性让 LN 特别适合大模型------尤其是在分布式、异步、变长输入的环境下。

更深层次的,BN 的归一化粒度是 batch 维度 ,而 Transformer 想捕捉的是 token 之间的微妙关系

当每个样本长度不同、token 相关性强时,BN 的跨样本归一化反而会削弱模型的表达能力。

LN 的归一化发生在特征维度内部,保证了每个 token 的特征分布稳定,不会被其他样本的统计特征干扰。

这其实是一种从样本层面向特征层面的思维转变。

所以,总结一下:

Transformer 用 LN 而不用 BN,本质上是因为:

  1. BN 依赖 batch 统计量,不适合变长、分布差异大的序列数据;
  2. Attention 机制导致样本间特征强耦合,BN 会破坏这种结构;
  3. LN 与 batch size 无关,推理阶段也稳定一致。

关于深度学习和AI大模型相关的知识和前沿技术更新,请关注公众号 aicoting

📚推荐阅读

一览Transformer整体架构

Transformer------Attention怎么实现集中注意力

Transformer------FeedForward模块在干什么?

从0开始实现Transformer

什么是KV-Cache

Transformer注意力机制------MHA&MQA&GQA

FlashAttention怎么提升速度的?

面试官:BatchNorm、LayerNorm、GroupNorm、InstanceNorm 有什么本质区别?

面试官:Transformer如何优化到线性级?

FlashAttention2:更快的注意力机制,更好的并行效率

FlashAttention3 全解析:速度、精度、显存的再平衡

相关推荐
IT_陈寒13 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
笃行35013 小时前
从零到上线:用 EdgeOne Makers + CodeBuddy 搭一个「对账核对员」AI Agent
人工智能
用户68563262086914 小时前
Claude Code 乱猜字段名?我给它写了一个"数据库查询约束 Skill"
人工智能
你_好14 小时前
# 给你的产品嵌入一个「会操作界面的 AI 助手」
人工智能
ShallWeL14 小时前
【机器学习】(3)—— 线性回归:梯度下降
人工智能·机器学习
陈广亮14 小时前
Prompt、Context、Harness、Agentic:LLM 应用四层嵌套结构,搞清自己卡在哪一层
人工智能
刺猬的温驯14 小时前
Flow Matching 训练的输入分布问题:从 VAE Latent 统计性质到归一化工程实践——以 VoxFlash-TTS 为例
人工智能·语音合成·tts
机器之心14 小时前
近80年后,埃尔德什经典「拉姆齐数下界」,被三位中国学者首次指数级改进
人工智能·openai
机器之心14 小时前
Nvidia都在点赞的LoopWM世界模型,竟然来自一家中国初创FaceMind?
人工智能·openai
美团技术团队15 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法