欢迎光临
我们一直在努力

4、【数学】【基础】归一化的数学原理:LayerNorm、RMSNorm 与 BatchNorm

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如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"怎么取:

归一化中心

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​=m1​i=1∑m​Xij​,σj2​=m1​i=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​=γj​X^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,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!

赞(0)
未经允许不得转载:171主机测评 » 4、【数学】【基础】归一化的数学原理:LayerNorm、RMSNorm 与 BatchNorm
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址