2. 理解 RMSNorm
RMSNorm:大模型为什么不用 LayerNorm,而改用 RMSNorm?
在现代大语言模型(LLM)中,例如 LLaMA、Qwen、Mistral、DeepSeek 等,越来越多的模型开始使用 RMSNorm(Root Mean Square Normalization,均方根归一化),而不是 Transformer 早期广泛采用的 LayerNorm。
RMSNorm 最早由 Biao Zhang 和 Rico Sennrich 在 2019 年的论文《Root Mean Square Layer Normalization》中提出。作者发现:
对于深度神经网络来说,真正重要的可能只是控制激活值的尺度(Scale),而不一定需要像 LayerNorm 那样强制把均值变成 0。
论文地址:
一、先理解 LayerNorm
在 Transformer 中,LayerNorm 的计算公式为:
其中:
:输入向量 :输入向量的均值 :输入向量的方差 :可学习参数 :防止除零的小常数
一个简单例子
假设输入向量:
第一步:计算均值
第二步:减去均值
第三步:计算标准差
第四步:归一化
此时数据满足:
- 均值为 0
- 方差为 1
LayerNorm 在做什么?
实际上 LayerNorm 做了两件事情:
1. Centering(中心化)
将均值变成 0:
2. Scaling(尺度归一化)
控制数据整体大小:
因此 LayerNorm 同时控制:
- 数据的位置(Position)
- 数据的尺度(Scale)
二、作者发现了什么?
RMSNorm 论文提出了一个很有意思的问题:
神经网络真的需要“均值归零”吗?
换句话说:
LayerNorm 中的两个步骤:
- 去均值(Centering)
- 尺度归一化(Scaling)
是否都必不可少?
作者通过大量实验发现:
真正重要的似乎是尺度归一化,而不是均值归零。
于是他们尝试直接删除 LayerNorm 中的去均值操作。
这就是 RMSNorm。
三、RMSNorm 的定义
RMSNorm 的公式:
其中:
与 LayerNorm 最大的区别是:
没有均值计算。
即:
- 不求
- 不减
- 不求方差
只计算 RMS(均方根)。
四、什么是 RMS?
RMS(Root Mean Square)即:
本质上可以理解为:
向量整体大小(Magnitude)的度量。
举个例子
输入:
平方
求平均
开根号
归一化后:
整个过程没有任何均值计算。
五、直观理解 RMSNorm
假设有三个学生:
| 学生 | 分数 |
|---|---|
| A | 60 |
| B | 80 |
| C | 100 |
LayerNorm 的思路
先计算平均分:
然后得到:
| 学生 | 相对平均值 |
|---|---|
| A | -20 |
| B | 0 |
| C | +20 |
LayerNorm关心的是:
谁高于平均值?谁低于平均值?
也就是说:
它关注数据的相对位置。
RMSNorm 的思路
RMSNorm 完全不关心平均值。
它只关心:
这些数字整体是不是太大了?
例如:
全部乘以 10:
RMSNorm 会自动把整体尺度缩回来。
因此:
LayerNorm
控制:
- 数据位置(Mean)
- 数据尺度(Scale)
RMSNorm
只控制:
- 数据尺度(Scale)
六、为什么这样仍然有效?
这是 RMSNorm 最核心的发现。
很多训练不稳定的问题来源于:
- 梯度爆炸
- 梯度消失
- 激活值不断增大
这些问题本质上与向量大小有关。
即:
越来越大。
而 RMSNorm 已经对向量大小进行了约束:
使得不同样本的激活值维持在相似范围内。
因此:
即使不进行均值归零,模型依然能够稳定训练。
实验结果表明:
RMSNorm 在多个任务上的效果与 LayerNorm 几乎一致。
七、为什么 RMSNorm 更快?
从计算过程来看:
LayerNorm
需要:
- 计算均值
- 减均值
- 计算方差
- 开根号
- 归一化
RMSNorm
只需要:
- 平方
- 求平均
- 开根号
- 归一化
少了:
- 均值计算
- 减均值操作
- 方差计算
因此:
- FLOPs 更少
- 内存访问更少
- GPU Kernel 更简单
在超大模型中,这些优化会被放大。
八、为什么大模型普遍采用 RMSNorm?
现代 LLM 通常具有:
- 32 层
- 48 层
- 64 层
- 80 层以上
每层都需要执行归一化。
即使单层只节省一点计算:
最终也会转化为:
- 更快训练
- 更快推理
- 更低显存带宽消耗
因此:
| 模型 | 归一化方式 |
|---|---|
| Transformer (2017) | LayerNorm |
| BERT | LayerNorm |
| GPT-2 | LayerNorm |
| LLaMA | RMSNorm |
| Mistral | RMSNorm |
| Qwen | RMSNorm |
| DeepSeek | RMSNorm |
RMSNorm 已经成为现代大模型的主流选择。
九、从数学角度理解 RMSNorm
可以把 LayerNorm 拆解成:
即:
其中:
:负责中心化 :负责尺度归一化
而 RMSNorm 则变成:
即:
保留了最重要的尺度控制部分。
删除了中心化部分。
十、一句话总结
LayerNorm 的思想是:
先把数据移动到均值为 0,再调整尺度。
RMSNorm 的思想是:
不关心数据在哪里,只关心数据有多大。
RMSNorm 的核心发现是:
对深度神经网络而言,控制激活值的尺度通常已经足够稳定训练,而均值归零并不是必须的。
正因为这一点,RMSNorm 在保持模型效果基本不变的同时,减少了计算开销,最终成为现代大语言模型最常用的归一化方法之一。