LayerNorm:从“为什么要归一化”到“为什么 Transformer 离不开它”

以下内容由AI辅助生成

神经网络训练的过程,看起来是在“学习语义”或“理解结构”,但在更底层,它其实是一件非常朴素的事情:
一层一层地传递和变换数字。

而几乎所有训练不稳定、梯度异常、不收敛的问题,最终都可以归结为一个原因:

中间数值的尺度失控了。

LayerNorm(Layer Normalization)正是为了解决这个问题而出现的。但要真正理解它,不能从公式开始,而必须先回到一个更基础的问题:什么是归一化,神经网络为什么需要归一化


一、什么是“归一化”:先抛开神经网络

先从一个生活中的例子出发。

假设你要比较两次考试成绩:

  • 一次考试满分 150
  • 另一次考试满分 100

你不能直接比较 120 分和 80 分谁更好,因为它们的尺度不同

一个更合理的做法是:

  • 减去平均值
  • 再除以标准差

这样得到的数值不再依赖原始分数范围,而只反映相对水平——平均值约为 0,波动程度约为 1。

这就是归一化(Normalization)的本质思想:

不改变相对差异,只统一数值尺度。


二、神经网络为什么必须做归一化

回到神经网络。神经网络的基本操作是反复进行线性变换:

如果输入 的尺度稍微偏大,权重 没有被精细约束,那么输出 很容易比 更大或更小。

当层数不断增加时:

1
x → y → z → u → …

哪怕每一层只“放大或缩小一点点”,结果也会变成:

  • 激活值越来越大(数值爆炸)
  • 或越来越小(数值消失)

这就像一张图片被反复复印:复印次数一多,画面一定会失真。

于是,一个非常直接但极其重要的工程直觉出现了:

能不能在每一层之间,把数值拉回到一个“正常范围”?

这正是神经网络中各种 Normalization 方法存在的根源。


三、LayerNorm 到底在归一化什么

在 Transformer 中,每个 token 在某一层都会被表示成一个向量:

个数一起,构成了模型在当前层对这个 token 的全部状态描述。

LayerNorm 的做法非常明确:

  • 不看其他 token
  • 不看 batch
  • 只对当前这个 token 自己的向量做归一化

具体来说,它会在特征维度(hidden dimension)上计算均值和方差:

然后进行标准化,并加上可学习的缩放与平移参数:

归一化之后,向量的均值约为 0、方差约为 1,但通过 ,模型仍然可以学习合适的尺度。

一句话总结:

LayerNorm 是对“每一个 token 自己的向量”做归一化,完全不依赖其他 token 或 batch。


四、为什么 Transformer 特别容易“数值失控”

理解了归一化之后,再看 Transformer 的结构,就会发现:它在数值层面上,天然是一个不稳定系统。

原因来自三个叠加的结构性因素:

1. Attention 是不受约束的加权求和

Attention 的输出形式是:

它本质上是多个向量的线性组合,目标是混合信息,而不是控制输出尺度。缺少约束时,某些 head 的输出可能越来越大,某些维度可能长期主导,不同 token 的数值分布会逐渐漂移。

2. 残差连接会层层累加数值

Transformer 中每一层都有残差结构:

残差的作用是保证信息通路,但它也意味着新信息会不断叠加到旧表示上,数值会随着层数持续累积。

一个常见的误解是把 residual 当作“稳定器”。更准确的说法是:

Residual 负责信息通路,但并不负责数值稳定。

3. Softmax 对尺度极其敏感

Attention 内部使用 softmax,而 softmax 只在一个很窄的数值区间内工作得好:

  • 输入过大 → 接近 one-hot → 梯度几乎为 0
  • 输入过小 → 接近均匀分布 → 注意力失效

Transformer 同时包含 Attention 的加权求和、Residual 的数值累加、Softmax 的高敏感性——如果没有归一化,数值失控几乎是必然的结果。


五、LayerNorm 如何“救场”

LayerNorm 的作用可以概括为一句话:

在每一层,把每个 token 的表示拉回到同一个稳定的统计坐标系。

它在 Transformer 中的分工可以用这张图来理解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
输入 token 向量 x
|
v
[ Attention ] <- 看别人:混合信息
|
v
f(x)
|
+-------------------+
| |
v |
[ Residual: x + f(x) ] <- 保自己:信息不断
|
v
[ LayerNorm ] <- 稳自己:归一化、控数值
|
v
交给下一层

三者的职责是:

  • Attention 管信息交流
  • Residual 管信息传承
  • LayerNorm 管数值纪律

LayerNorm 带来的直接效果包括:

  • 各层输入分布保持相对一致
  • 数值不再随层数漂移
  • softmax 始终工作在有效区间
  • 梯度能够稳定传播

因此可以说:

没有 LayerNorm,Transformer 在数学上是一个不稳定系统;有了 LayerNorm,它才成为可训练的深层模型。


六、为什么不用 BatchNorm

在讨论 LayerNorm 时,BatchNorm 经常被拿来对比。它们同属“归一化家族”,但适用场景完全不同。

BatchNorm 的核心思想是:

利用一个 batch 内所有样本的统计量来做归一化。

这在 CNN 中非常合理(输入尺寸固定、batch 结构稳定),但在 Transformer / NLP 中,会遇到根本性冲突:

1. Batch 本身不稳定

  • 句子长短不同
  • padding 复杂
  • 推理时常常 batch = 1

2. Token 不应被迫参考其他样本

Transformer 的设计是让 token 之间的交互只发生在 Attention 中,归一化阶段不应引入额外耦合。而 BatchNorm 恰恰会让一个 token 的数值受其他 token、其他样本影响。

LayerNorm 则完全相反:不看 batch、不看其他 token,只对自身状态做校准。

一句话总结区别:

BatchNorm 在“群体里”找尺度,LayerNorm 对“自己”做校准。

Transformer 需要的是后者。


结语:把 LayerNorm 放回正确的位置

LayerNorm 并不是 Transformer 的“附加技巧”,而是归一化思想在序列建模中的一次精准落地

  • 以 token 为基本单位
  • 不依赖 batch
  • 不混淆语义交互与数值校准

它让 Transformer 能在极深的结构中,始终保持数值可控、梯度可传、注意力可学习。