前言

無論是 BERT、GPT 還是 ViT,幾乎都不用 Batch Normalization,而是清一色地用 Layer Normalization。
這不是巧合,而是 Transformer 架構中一個非常深層的設計選擇。

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

BN 和 LN 的出發點其實一樣——穩定訓練,防止梯度爆炸或消失

【值得收藏】大模型必備知識:Transformer為何選擇Layer Normalization而非Batch Normalization_#batch

  • Batch Normalization(BN)

它在一個 batch 內計算均值和方差,對同一層的所有樣本的每個通道做標準化。
換句話説,BN 關心的是這一批數據的統計特徵

【值得收藏】大模型必備知識:Transformer為何選擇Layer Normalization而非Batch Normalization_#transformer_02

  • Layer Normalization(LN)

LN 則是在同一個樣本內部計算均值和方差,對該樣本的所有特徵維度一起歸一化。
換句話説,LN 關心的是單個樣本內部的特徵分佈

【值得收藏】大模型必備知識:Transformer為何選擇Layer Normalization而非Batch Normalization_#transformer_03

BN 是跨樣本歸一化,LN 是單樣本歸一化。

二、BN 的問題

BN 在 CNN 時代非常成功,但為什麼在 Transformer 中就變得水土不服?

【值得收藏】大模型必備知識:Transformer為何選擇Layer Normalization而非Batch Normalization_#大模型入門_04

根本原因有三點。

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 無關,推理階段也穩定一致。