LayerNorm:稳住激活尺度,让深层可训

层归一化(Layer Normalization,LayerNorm)单个样本、单个位置的隐向量做标准化:减去均值、除以标准差,再用可学习的 (\gamma,\beta) 仿射回去。它不是正则开关(与 Dropout 不同),训练和推理同一套公式。Ba et al.(2016)提出;原版 Transformer / BERT / GPT-2 的默认归一化。

段末注释:归一化(normalization) 指把激活重新标到可计算的尺度;LayerNorm 的统计量沿特征维算,不沿 batch。后文 LN 即 LayerNorm。

系列导读5050.大模型-算法要点-0


1. 作用

层面 LN 在干什么
稳尺度 残差叠加后激活不会一层层漂到极大/极小
稳梯度 深层反向传播时,输入分布不那么漂
可学习回放 (\gamma,\beta) 允许网络「再拉伸、再平移」,不是把表示钉死成标准正态

没有 LN(或等价物),几十层残差很容易在训练前期炸掉。它替代学习率 warmup,也替代梯度裁剪。


2. 功能 / 机制

对最后一个维度 (d)(hidden size)上的向量 (\mathbf{x}):

[
\mu=\frac{1}{d}\sum_{i=1}^{d}x_i,\qquad
\sigma^{2}=\frac{1}{d}\sum_{i=1}^{d}(x_i-\mu)^{2}
]

[
\mathrm{LN}(\mathbf{x})=\boldsymbol{\gamma}\odot\frac{\mathbf{x}-\mu}{\sqrt{\sigma^{2}+\varepsilon}}+\boldsymbol{\beta}
]

(\boldsymbol{\gamma},\boldsymbol{\beta}) 可学习,初值通常 (1) 与 (0)。(\varepsilon) 防除零,是超参。

社区默认实现:PyTorch nn.LayerNorm(normalized_shape)model.eval() 不改变 LN 公式(与 BatchNorm 不同:BN 推理用滑动均值,LN 始终用当前向量自己的 (\mu,\sigma))。

图 1 先去均值 \(\mu\)、再按 \(\sigma\) 缩放,最后 \(\gamma,\beta\) 仿射

插在残差的哪一侧决定深网好不好训:

写法 公式 谁在用
Post-LN (\mathrm{LN}(\mathbf{h}+\mathrm{Sub}(\mathbf{h}))) 原版 Transformer、ProteinMPNN norm(h+drop(Δ))
Pre-LN (\mathbf{h}+\mathrm{Sub}(\mathrm{LN}(\mathbf{h}))) GPT-2 及之后多数 Decoder

Post-LN 把归一化放在残差相加之后,深了容易不稳,更依赖 warmup。Pre-LN 让子层吃到已归一的输入,残差主干保持「公路」,百层也可训。


3. 默认经验值

常见值 备注
(\varepsilon) (10^{-5}) GPT-2 layer_norm_epsilon;过小在 FP16 易炸
(\gamma,\beta) 可学习,init (1,0) 推理必须加载,不是纯超参
位置 现代 LLM Pre-LN 浅网 / 2017 原论文 Post-LN
与 Dropout 常写成 (\mathrm{LN}(h+\mathrm{Drop}(\Delta))) Dropout 打增量,LN 打相加后(Post)或子层前(Pre)

不要把 (\varepsilon) 训/推设成两套:长期生成会慢慢漂 logits。


4. 整体应用

  • 架构:每个 Attention / FFN 子层各一块 LN;词嵌入后有时再加一块。
  • 训练:始终参与前向;(\gamma,\beta) 走反向传播。AdamW 常不对 (\gamma,\beta) 做 weight decay。
  • 推理:公式不变,无 eval() 开关。量化 / 内核融合时要复用同一 (\varepsilon)。

HuggingFace:layer_norm_eps / layer_norm_epsilon


5. 使用案例

BERT / 原版 Transformer:Post-LN + (\varepsilon=10^{-5})。
GPT-2:转向 Pre-LN,仍用 LN 而非 RMSNorm。
ProteinMPNNEncLayer / DecLayer 三处 LayerNorm,Post-LN(先残差加 Dropout,再 Norm)。


6. 易混对照

名称 差在哪
RMSNorm 不去 (\mu),通常无 (\beta);LLaMA 系默认,见本系列 03
BatchNorm 沿 batch 统计;推理用滑动平均。序列变长 / 小 batch 的 LLM 不用
Dropout 训练随机掩码;LN 是确定性仿射

参考

  • Ba et al., Layer Normalization, 2016.
  • Vaswani et al., Attention Is All You Need(Post-LN)。
  • 实现:torch.nn.LayerNorm
-------------本文结束感谢您的阅读-------------