【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
标题
4、【数学】【基础】归一化的数学原理:LayerNorm、RMSNorm 与 BatchNorm
背景
上篇 blog 3、【数学】【基础】内积、欧氏距离与梯度 讲清了内积、欧氏距离与梯度,并给出方差等价形式的完整推导。从 RMSNorm 开始,"归一化"这个词就反复出现,但一直只看到"均方根"这一半。本篇换个角度,从数学上把归一化讲透:它到底在归什么、几何上做了什么、为什么能让深层网络训练稳定。
统一公式:中心 + 尺度
LayerNorm、RMSNorm、L2 归一化,其实可以写成同一个式子:
x
^
=
x
−
c
s
,
o
u
t
=
γ
⊙
x
^
+
β
\\hat{x}=\\frac{x-c}{s},\\qquad \\mathrm{out}=\\gamma\\odot\\hat{x}+\\beta
x^=sx−c,out=γ⊙x^+β 区别只在"中心
c
c
c"和"尺度
s
s
s"怎么取:
| LayerNorm |
μ = 1 n ∑ x i \\mu=\\frac{1}{n}\\sum x_i μ=n1∑xi |
σ = 1 n ∑ ( x i − μ ) 2 + ϵ \\sigma=\\sqrt{\\frac{1}{n}\\sum(x_i-\\mu)^2+\\epsilon} σ=n1∑(xi−μ)2+ϵ |
| RMSNorm |
0 0 0(不减) |
R M S = 1 n ∑ x i 2 + ϵ \\mathrm{RMS}=\\sqrt{\\frac{1}{n}\\sum x_i^2+\\epsilon} RMS=n1∑xi2+ϵ |
| L2 归一化 |
0 0 0 |
∥ x ∥ 2 = ∑ x i 2 \\lVert x\\rVert_2=\\sqrt{\\sum x_i^2} ∥x∥2=∑xi2 |
所以 RMSNorm 的"归一化"就是除以均方根(代码里写成乘 rsqrt),均方根本身只是分母。
数学本质:一次平移 + 一次伸缩
- 减中心
x
−
c
x-c
x−c:平移操作,消除"位置/偏置",让输出均值为0
0
0; - 除尺度
(
x
−
c
)
/
s
(x-c)/s
(x−c)/s:伸缩操作,消除"大小",让输出的方差、均方根或长度归一。
归一化 = 先平移、后伸缩。RMSNorm 把平移那一步省掉了(
c
=
0
c=0
c=0),所以它只归"大小"、不归"位置"——这正是 AI 226 实测里 RMSNorm 输出均值约
0.000298
0.000298
0.000298、没有归零的原因。
几何意义:把向量压到固定曲面上
设向量维数为
n
n
n,三个恒等关系决定了归一化后的落点:
- L2:
∥
x
^
∥
2
=
1
\\lVert\\hat{x}\\rVert_2=1
∥x^∥2=1,落在单位球面上; - RMSNorm:
R
M
S
(
x
^
)
=
1
⟺
∥
x
^
∥
2
=
n
\\mathrm{RMS}(\\hat{x})=1\\iff\\lVert\\hat{x}\\rVert_2=\\sqrt{n}
RMS(x^)=1⟺∥x^∥2=n,落在半径n
\\sqrt{n}
n 的球面上; - LayerNorm:既要求均值
0
0
0(零均值超平面),又要求方差1
1
1(即∥
x
^
∥
2
=
n
\\lVert\\hat{x}\\rVert_2=\\sqrt{n}
∥x^∥2=n),落在超平面与球面的交线上。

图中取二维(
n
=
2
n=2
n=2,
n
=
2
\\sqrt{n}=\\sqrt{2}
n
=2
):原始向量指向四面八方、长短不一,L2 归一化把它们全部压到单位圆上,RMSNorm 则压到半径
2
\\sqrt{2}
2
的圆上。归一化的几何动作,就是把任意向量映射到一张尺度固定的曲面上。
尺度不变性:为什么能消除量级漂移
- RMSNorm 与 L2:对任意
α
>
0
\\alpha>0
α>0,n
o
r
m
(
α
x
)
=
n
o
r
m
(
x
)
\\mathrm{norm}(\\alpha x)=\\mathrm{norm}(x)
norm(αx)=norm(x),即缩放不变; - LayerNorm:对
x
↦
α
x
+
β
1
x\\mapsto\\alpha x+\\beta\\mathbf{1}
x↦αx+β1(α
>
0
\\alpha>0
α>0)不变,即平移 + 缩放不变。
换句话说,输入整体放大或平移,输出不变。深层网络里激活值的量级会逐层漂移,归一化靠这个不变性把漂移直接抹掉——这就是它能让训练稳定的数学根源。
数字验证:同一组数的三种归一化
取
x
=
[
3
,
1
,
4
,
2
]
x=[3,1,4,2]
x=[3,1,4,2],维数
n
=
4
n=4
n=4,则
μ
=
2.5
\\mu=2.5
μ=2.5、
σ
≈
1.118
\\sigma\\approx1.118
σ≈1.118、
R
M
S
≈
2.739
\\mathrm{RMS}\\approx2.739
RMS≈2.739、
∥
x
∥
2
≈
5.477
\\lVert x\\rVert_2\\approx5.477
∥x∥2≈5.477:
| LayerNorm |
( x − μ ) / σ (x-\\mu)/\\sigma (x−μ)/σ |
[ 0.447 , − 1.342 , 1.342 , − 0.447 ] [0.447,-1.342,1.342,-0.447] [0.447,−1.342,1.342,−0.447] |
2 = n 2=\\sqrt{n} 2=n,和为 0 |
| RMSNorm |
x / R M S x/\\mathrm{RMS} x/RMS |
[ 1.095 , 0.365 , 1.461 , 0.730 ] [1.095,0.365,1.461,0.730] [1.095,0.365,1.461,0.730] |
2 = n 2=\\sqrt{n} 2=n,和不为 0 |
| L2 |
x / ∥ x ∥ 2 x/\\lVert x\\rVert_2 x/∥x∥2 |
[ 0.548 , 0.183 , 0.730 , 0.365 ] [0.548,0.183,0.730,0.365] [0.548,0.183,0.730,0.365] |
1 1 1 |
可以看到:LayerNorm 与 RMSNorm 的范数都等于
n
=
2
\\sqrt{n}=2
n
=2,但只有 LayerNorm 的和为
0
0
0;L2 归一化则把长度压到
1
1
1。
ϵ
\\epsilon
ϵ 与
γ
\\gamma
γ、
β
\\beta
β 的数学角色
-
ϵ
\\epsilon
ϵ:当尺度s
=
0
s=0
s=0 时会除零、映射出现奇点;加一个极小的正数把奇点"软化",保证处处有定义,这就是数值稳定; -
γ
\\gamma
γ(缩放)、β
\\beta
β(平移):归一化把向量压到固定曲面后,原本的尺度与位置信息被丢弃;γ
\\gamma
γ、β
\\beta
β 是一次仿射恢复,让网络重新学回需要的尺度与中心。RMSNorm 只有γ
\\gamma
γ(省掉β
\\beta
β),LayerNorm 两者都有。
BatchNorm:换个维度做同样的事
前面几种都是在一个样本内部、跨特征做归一化;BatchNorm(Batch Normalization,批归一化)是在同一个特征上、跨样本做归一化。
设一个 batch 有
m
m
m 个样本、每个样本
d
d
d 维,堆成矩阵
X
∈
R
m
×
d
X\\in\\mathbb{R}^{m\\times d}
X∈Rm×d(
m
m
m 行样本、
d
d
d 列特征),对每个特征
j
j
j:
μ
j
=
1
m
∑
i
=
1
m
X
i
j
,
σ
j
2
=
1
m
∑
i
=
1
m
(
X
i
j
−
μ
j
)
2
\\mu_j=\\frac{1}{m}\\sum_{i=1}^{m}X_{ij},\\qquad \\sigma_j^2=\\frac{1}{m}\\sum_{i=1}^{m}(X_{ij}-\\mu_j)^2
μj=m1i=1∑mXij,σj2=m1i=1∑m(Xij−μj)2
X
^
i
j
=
X
i
j
−
μ
j
σ
j
2
+
ϵ
,
Y
i
j
=
γ
j
X
^
i
j
+
β
j
\\hat{X}_{ij}=\\frac{X_{ij}-\\mu_j}{\\sqrt{\\sigma_j^2+\\epsilon}},\\qquad Y_{ij}=\\gamma_j\\hat{X}_{ij}+\\beta_j
X^ij=σj2+ϵ
Xij−μj,Yij=γjX^ij+βj

差别就一句话:BatchNorm 对每一列(一个特征)统计,LayerNorm 对每一行(一个样本)统计。
还有一处工程差异:训练时 BatchNorm 用当前 batch 的统计量,推理时单条样本没有"批",只能用训练期间累计的滑动平均。Transformer 里少见 BatchNorm,正是因为序列长度和 batch 多变、小 batch 下统计噪声大,而按 token 的 LayerNorm / RMSNorm 更自然。
四种归一化对比
| LayerNorm | 是 |
σ \\sigma σ |
均值
0 0 0、方差 1 1 1 |
γ , β \\gamma,\\beta γ,β |
特征维(行) |
| RMSNorm | 否 |
R M S \\mathrm{RMS} RMS |
均方根
1 1 1 |
γ \\gamma γ |
特征维(行) |
| L2 归一化 | 否 |
∥ x ∥ 2 \\lVert x\\rVert_2 ∥x∥2 |
长度
1 1 1 |
无 | 整个向量 |
| BatchNorm | 是 |
σ \\sigma σ |
均值
0 0 0、方差 1 1 1 |
γ , β \\gamma,\\beta γ,β |
样本维(列) |
小结
归一化可以用一个式子概括:
x
^
=
(
x
−
c
)
/
s
\\hat{x}=(x-c)/s
x^=(x−c)/s,即先平移、后伸缩,把向量映射到一张固定尺度的曲面上。LayerNorm 减均值、除标准差,归的是"中心 + 尺度";RMSNorm 不减均值、只除均方根,归的是"尺度";L2 归一化把长度压到
1
1
1;BatchNorm 则把统计维度从"特征"换成了"样本"。
ϵ
\\epsilon
ϵ 负责数值稳定,
γ
,
β
\\gamma,\\beta
γ,β 负责把丢掉的尺度与中心学回来——理解了这几点,再看到任何归一化层,都能一眼看出它"归的是什么、在哪个维度归"。
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!





