LayerNorm:数值纪律

本节要解决什么问题

后端工程师对"标准化"不陌生:处理金额时统一精度(分、角、元),处理日志时对时间戳和数值字段做归一化(减去均值除以标准差)。这些操作的目的只有一个:消除量纲差异,让不同规模的数据可以在同一个尺度上比较

LayerNorm(Layer Normalization,层归一化)做的也是同样的事:把每个 token 在某一层的表示向量,标准化到一个稳定的数值范围内。只不过它的作用域更精确——只归一化单个 token 的所有特征维度,不涉及 batch 中的其他样本。

在 Transformer 中,LayerNorm 是和残差连接配套使用的数值稳定组件。没有它,深层的 Transformer 几乎无法训练。

这个工具/机制是怎么工作的

核心操作:对单个 token 的向量做归一化

在 Transformer 中,每个 token 在某一层被表示为一个 d 维向量:x = (x1, x2, ..., xd)

LayerNorm 做的三件事:

第 1 步:计算均值
μ = (x₁ + x₂ + ... + x_d) / d

第 2 步:计算方差
σ² = [(x₁-μ)² + (x₂-μ)² + ... + (x_d-μ)²] / d

第 3 步:标准化 + 仿射变换
LN(x)_i = γ × (x_i - μ) / √(σ² + ε) + β

其中 γ 和 β 是可学习的参数(默认为 γ=1, β=0)。

直观理解:把向量"拉回原点"

标准化前:x = [1000, 1001, 999]   ← 数值很大,但相对差异很小
标准化后:  = [1.0, 0.0, -1.0]   ← 均值为 0,方差为 1

归一化之后,向量的均值约为 0、标准差约为 1。无论上一层输出的数值有多大、多不稳定,归一化后都会被"拉回到"一个稳定的坐标系中。

γ 和 β 的作用是:模型可以学习"我需要保留多少原始尺度信息",而不是被强制归一化。

为什么 Transformer 特别需要 LayerNorm

Transformer 有三层结构叠加,每个都天然有数值失控的风险:

1. Attention 是无约束的加权求和

Attention 把多个 value 向量按注意力权重加权求和。如果某个 head 的输出数值偏大,它会主导后续计算;如果某个维度数值偏大,它会压制其他维度。没有内在机制约束输出的数值范围。

2. 残差连接会层层累加

第 l+1 层输出 = 第 l 层输出 + 第 l 层变换

残差保证信息通路,但每次新信息都累加到旧表示上,数值会随层数持续漂移。100 层之后,最底层的表示可能已经被叠加了 100 次。

3. Softmax 对尺度极其敏感

Attention 中的 Softmax,只在一个窄范围内工作正常:

  • 输入太大 → 趋近 one-hot(梯度 ≈ 0)
  • 输入太小 → 趋近均匀分布(注意力失去焦点)

三者叠加,没有 LayerNorm 的 Transformer 在数值上几乎必然崩溃。

LayerNorm 在 Transformer 中的位置

Pre-LN Transformer(现代大模型标准做法)的结构:

输入 x
  │
  ├─→ LayerNorm(x)
  │       │
  │       ▼
  │    Self-Attention(x)
  │       │
  │       ▼
  │      x + Attention(x)   ← 残差连接
  │       │
  │       ▼
  ├─→ LayerNorm(...)
  │       │
  │       ▼
  │    Feed-Forward Network
  │       │
  │       ▼
  │      x + FFN(x)         ← 残差连接
  │       │
  └───────┘

职责分工:

  • Attention:管信息交流(看谁)
  • Residual:管信息传承(保自己)
  • LayerNorm:管数值纪律(稳自己)

LayerNorm vs BatchNorm:为什么 Transformer 用前者

BatchNorm 在计算机视觉中几乎是标配,但在自然语言处理(Transformer)中不适用,根本原因在于 batch 本身的性质差异:

维度 BatchNorm LayerNorm
归一化方向 跨 batch 内所有样本 单个样本内所有特征
看其他样本?
batch 稳定? 否(句子长短不一,padding 多) 完全无关
推理 batch=1 时 数值偏移(统计量不稳定) 无影响

NLP 场景的核心矛盾:Transformer 的 Attention 本身就是让 token 之间交互的机制,如果在归一化阶段引入"其他样本对当前样本的影响",就破坏了 Attention 的语义逻辑——LayerNorm 保证每个 token 在归一化时只看自己。

形式化

LayerNorm 公式:LN(x) = γ ⊙ (x - μ) / √(σ² + ε) + β

其中:

  • μ = Σ xi / d(均值)
  • σ² = Σ(xi - μ)² / d(方差)
  • ε:防止除零的小常数
  • γ, β:可学习的缩放和平移参数

本节小结

LayerNorm 对单个 token 的特征向量做均值-方差归一化,是 Transformer 维持数值稳定的核心机制。它不看 batch、不看其他 token,只负责"把自己的数值状态拉回正常范围",与 Attention(信息交流)、残差连接(信息传承)共同构成 Transformer 稳定训练的三驾马车。

延伸阅读

  • Transformer 架构 — LayerNorm 在 Pre-LN 和 Post-LN 两种位置安排下的对比,以及它们各自对训练稳定性的影响

results matching ""

    No results matching ""