RMSNorm
LayerNorm 的简化变体,仅使用均方根(RMS)统计量做归一化,去除了均值中心化步骤,计算更快且效果相当,已成为大模型的事实标准。
是什么
RMSNorm 将输入向量的每个元素除以该向量的均方根(RMS),然后乘以可学习的缩放参数 γ:
RMSNorm(x) = x / RMS(x) · γ
RMS(x) = sqrt(mean(x²))
与 LayerNorm 的关键区别:不做均值中心化(不减去 mean),仅做缩放。去除了 (x - μ) 步骤,减少一次归约计算。
为什么重要
- 计算效率:比 LayerNorm 少一次归约操作(不用算均值),在大模型中累积节省显著
- 效果不降:实验表明 RMSNorm 效果与 LayerNorm 相当甚至略优
- 事实标准:LLaMA 系列率先采用,之后几乎所有的开源大模型(DeepSeek、Qwen、Mixtral 等)都使用 RMSNorm
- 训练稳定性:同样能保证训练稳定(均值 0 方差 1 的可控范围)
工作原理
输入: x ∈ R^d
RMS(x) = sqrt(1/d · Σ x_i²)
输出: x_i' = x_i / RMS(x) · γ_i
LayerNorm vs RMSNorm 对比:
- LayerNorm:
(x - μ) / σ · γ + β(两个统计量 μ、σ,两个参数 γ、β) - RMSNorm:
x / RMS(x) · γ(一个统计量 RMS,一个参数 γ)
历史与演进
| 方法 | 提出年份 | 归一化方式 | 状态 |
|---|---|---|---|
| BatchNorm | 2015 | 批次维度 | CV 主流,NLP 不适用 |
| LayerNorm | 2016 | 特征维度,μ+σ | NLP 经典方案 |
| RMSNorm | 2019 | 特征维度,仅 RMS | LLM 事实标准 |
| QK-Norm / KV-Norm | 2020 | Attention 内部 Q/K/V | 部分模型采用 |
| DeepNorm | 2022 | 残差后归一化 | 极深模型(1000层) |
归一化位置演进
| 位置 | 说明 | 采用情况 |
|---|---|---|
| Post-Norm | 残差连接之后 | 原始 Transformer |
| Pre-Norm | 残差连接之前 | LLM 主流,训练更稳定 |
| Sandwich Norm | Pre + Post 混用 | 部分模型探索 |
常见误解
- “RMSNorm 是 LayerNorm 的简化版所以效果差” — 效果相当,且计算更快
- “RMSNorm 不中心化会导致训练不稳定” — 实践证明 Pre-Norm + RMSNorm 组合训练非常稳定