LayerNorm(层归一化)

一种归一化技术,对单个样本的特征维度做标准化(均值为0、方差为1),再通过可学习参数缩放和平移。在Transformer中紧跟每个子层之后,稳定训练过程,加速收敛。

LayerNorm(层归一化)

一句话理解

对每个 token 的特征向量做标准化——拉到均值 0、方差 1,再用可学习参数缩放和平移,让训练更稳定。

公式

LayerNorm(x)=γxμσ2+ϵ+β\text{LayerNorm}(x) = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \betaLayerNorm(x)=γσ2+ϵxμ+β
  • μ,σ2\mu, \sigma^2μ,σ2:在特征维度上计算的均值和方差
  • γ,β\gamma, \betaγ,β:可学习的缩放和偏移参数
  • ϵ\epsilonϵ:防止除零的小常数

为什么需要归一化

深层网络训练时,每层的输入分布会随着训练不断变化(内部协变量偏移)。如果不做归一化,某些维度的值可能爆炸式增长或缩小到接近零,导致梯度不稳定、训练难以收敛。

在 Transformer 中的位置

text
Self-Attention → Add(残差) → LayerNorm → FFN → Add(残差) → LayerNorm

每个子层之后都有一次 LayerNorm,与残差连接配合使用。

LayerNorm vs BatchNorm

维度LayerNormBatchNorm
归一化方向单个样本的所有特征一个 batch 内同一特征
对 batch 大小敏感
主要用于Transformer / NLPCNN / CV

Transformer 选择 LayerNorm 是因为序列长度不固定,且不希望依赖 batch 统计量。

引用本术语的文章