三种 Norm 一张图读懂:LayerNorm、RMSNorm、AdaRMS

为什么需要归一化?

训练大模型时,每一层的激活值容易忽大忽小,梯度不稳定。
归一化(Normalization) 把每个 token 的 DDD 维向量 x\mathbf{x}x 拉到合适尺度,再让网络学习如何缩放、平移。

下面三个名字最常一起出现:

方法 一句话
LayerNorm(LN) 先减均值,再除以标准差
RMSNorm 不减均值,除以均方的平方根
AdaRMS 分母同 RMS,缩放/平移由条件 c\mathbf{c}c 决定

前提

单个 token 的向量 x∈RD\mathbf{x} \in \mathbb{R}^Dx∈RD,在 DDD 维 内部 做统计(不跨 token、不跨 batch)。
ε\varepsilonε 为极小常数(如 10−610^{-6}10−6),防止除零。


一、LayerNorm

中心化 (减均值),再按 标准差 缩放,最后用可学习参数 γ,β\boldsymbol{\gamma}, \boldsymbol{\beta}γ,β 做仿射变换。

μ=1D∑i=1Dxi,x^=x−μVar(x)+ε,y=γ⊙x^+β \mu = \frac{1}{D}\sum_{i=1}^{D} x_i, \qquad \hat{\mathbf{x}} = \frac{\mathbf{x} - \mu}{\sqrt{\mathrm{Var}(\mathbf{x}) + \varepsilon}}, \qquad \mathbf{y} = \boldsymbol{\gamma} \odot \hat{\mathbf{x}} + \boldsymbol{\beta} μ=D1i=1∑Dxi,x^=Var(x)+ε x−μ,y=γ⊙x^+β

  • 有减均值 x−μ\mathbf{x}-\mux−μ
  • 分母是 Var+ε\sqrt{\mathrm{Var}+\varepsilon}Var+ε (标准差),不是方差本身
  • 可学习参数约 2D2D2D 个(γ\boldsymbol{\gamma}γ 与 β\boldsymbol{\beta}β 各 DDD 维)

常见于 Transformer、ViT。


二、RMSNorm

不减均值 ,用各维平方的平均值 mmm 开根号作为尺度,把 x\mathbf{x}x 除过去,再可学习缩放。

m=1D∑i=1Dxi2,x^=xm+ε,y=(1+w)⊙x^ m = \frac{1}{D}\sum_{i=1}^{D} x_i^2, \qquad \hat{\mathbf{x}} = \frac{\mathbf{x}}{\sqrt{m + \varepsilon}}, \qquad \mathbf{y} = (1 + \mathbf{w}) \odot \hat{\mathbf{x}} m=D1i=1∑Dxi2,x^=m+ε x,y=(1+w)⊙x^

亦有实现写 y=w⊙x^\mathbf{y} = \mathbf{w} \odot \hat{\mathbf{x}}y=w⊙x^。

正确与错误写法:

正确: x^=xm+ε错误: x^=xm+ε \boxed{ \text{正确:}\ \hat{\mathbf{x}} = \frac{\mathbf{x}}{\sqrt{m + \varepsilon}} \qquad \text{错误:}\ \hat{\mathbf{x}} = \frac{\mathbf{x}}{m + \varepsilon} } 正确: x^=m+ε x错误: x^=m+εx

x⋅rsqrt(m+ε)\mathbf{x} \cdot \mathrm{rsqrt}(m+\varepsilon)x⋅rsqrt(m+ε) 与上式等价。

LLaMA、Gemma 等常用 RMSNorm,比 LayerNorm 少算一步均值,往往略快。


三、AdaRMS

去噪、流匹配等场景里,网络要在不同噪声水平 ttt 下表现不同。AdaRMS 在 每一层 用条件 c\mathbf{c}c(如时间步嵌入)调节归一化后的向量,思路类似扩散模型中的 AdaLN

RMS 归一化(与 RMSNorm 相同):

x^=xmean(x2)+ε \hat{\mathbf{x}} = \frac{\mathbf{x}}{\sqrt{\mathrm{mean}(\mathbf{x}^2) + \varepsilon}} x^=mean(x2)+ε x

条件仿射

s, t, g=f(c),y=x^⊙(1+s)+t \\mathbf{s},\\, \\mathbf{t},\\, \\mathbf{g} = f(\mathbf{c}), \qquad \mathbf{y} = \hat{\mathbf{x}} \odot (1 + \mathbf{s}) + \mathbf{t} s,t,g=f(c),y=x^⊙(1+s)+t

可选门控残差:

hout=hin+g⊙Sublayer(⋅) \mathbf{h}{\mathrm{out}} = \mathbf{h}{\mathrm{in}} + \mathbf{g} \odot \mathrm{Sublayer}(\cdot) hout=hin+g⊙Sublayer(⋅)

x^\hat{\mathbf{x}}x^ 的分母与 RMSNorm 相同;s,t\mathbf{s}, \mathbf{t}s,t 随 c\mathbf{c}c 变化,而非全局固定的 γ,β\boldsymbol{\gamma}, \boldsymbol{\beta}γ,β。


四、并排对照

LayerNorm:x^=x−μmean((x−μ)2)+ε,y=γ⊙x^+βRMSNorm:x^=xmean(x2)+ε,y=(1+w)⊙x^AdaRMS:x^=xmean(x2)+ε,y=x^⊙(1+s(c))+t(c) \begin{aligned} \textbf{LayerNorm:} \quad & \hat{\mathbf{x}} = \dfrac{\mathbf{x}-\mu}{\sqrt{\mathrm{mean}((\mathbf{x}-\mu)^2)+\varepsilon}}, \quad \mathbf{y} = \boldsymbol{\gamma}\odot\hat{\mathbf{x}}+\boldsymbol{\beta} \\0.6em \textbf{RMSNorm:} \quad & \hat{\mathbf{x}} = \dfrac{\mathbf{x}}{\sqrt{\mathrm{mean}(\mathbf{x}^2)+\varepsilon}}, \quad \mathbf{y} = (1+\mathbf{w})\odot\hat{\mathbf{x}} \\0.6em \textbf{AdaRMS:} \quad & \hat{\mathbf{x}} = \dfrac{\mathbf{x}}{\sqrt{\mathrm{mean}(\mathbf{x}^2)+\varepsilon}}, \quad \mathbf{y} = \hat{\mathbf{x}}\odot(1+\mathbf{s}(\mathbf{c}))+\mathbf{t}(\mathbf{c}) \end{aligned} LayerNorm:RMSNorm:AdaRMS:x^=mean((x−μ)2)+ε x−μ,y=γ⊙x^+βx^=mean(x2)+ε x,y=(1+w)⊙x^x^=mean(x2)+ε x,y=x^⊙(1+s(c))+t(c)

减均值? x^\hat{\mathbf{x}}x^ 分母 输出
LayerNorm Var+ε\sqrt{\mathrm{Var}+\varepsilon}Var+ε γ⊙x^+β\boldsymbol{\gamma}\odot\hat{\mathbf{x}}+\boldsymbol{\beta}γ⊙x^+β
RMSNorm mean(x2)+ε\sqrt{\mathrm{mean}(\mathbf{x}^2)+\varepsilon}mean(x2)+ε (1+w)⊙x^(1+\mathbf{w})\odot\hat{\mathbf{x}}(1+w)⊙x^
AdaRMS 同 RMS x^⊙(1+s)+t\hat{\mathbf{x}}\odot(1+\mathbf{s})+\mathbf{t}x^⊙(1+s)+t

五、数值例子

设 x=1,2,3,4⊤\mathbf{x} = 1,2,3,4^\topx=1,2,3,4⊤:

  • LayerNorm :μ=2.5\mu=2.5μ=2.5,x^\hat{\mathbf{x}}x^ 大致正负对称
  • RMSNorm :m=7.5m=7.5m=7.5,x^=x/7.5\hat{\mathbf{x}} = \mathbf{x}/\sqrt{7.5}x^=x/7.5 ,分量同向拉伸

二者 x^\hat{\mathbf{x}}x^ 不同------不仅是否减均值不同,分母用的统计量也不同。RMSNorm 并不是「不减均值的 LayerNorm」。


六、选用建议

  • 经典结构、生态成熟 → LayerNorm
  • 大语言模型、略省计算 → RMSNorm
  • 强条件生成(时间步、类别等),希望每层注入条件 → AdaRMS(或 AdaLN)

小结

LN:x^=x−μVar(x)+ε,  y=γ⊙x^+β \textbf{LN:}\quad \hat{\mathbf{x}}=\frac{\mathbf{x}-\mu}{\sqrt{\mathrm{Var}(\mathbf{x})+\varepsilon}},\; \mathbf{y}=\boldsymbol{\gamma}\odot\hat{\mathbf{x}}+\boldsymbol{\beta} LN:x^=Var(x)+ε x−μ,y=γ⊙x^+β

RMS:x^=xmean(x2)+ε,  y=(1+w)⊙x^ \textbf{RMS:}\quad \hat{\mathbf{x}}=\frac{\mathbf{x}}{\sqrt{\mathrm{mean}(\mathbf{x}^2)+\varepsilon}},\; \mathbf{y}=(1+\mathbf{w})\odot\hat{\mathbf{x}} RMS:x^=mean(x2)+ε x,y=(1+w)⊙x^

AdaRMS:x^=xmean(x2)+ε,  y=x^⊙(1+s(c))+t(c) \textbf{AdaRMS:}\quad \hat{\mathbf{x}}=\frac{\mathbf{x}}{\sqrt{\mathrm{mean}(\mathbf{x}^2)+\varepsilon}},\; \mathbf{y}=\hat{\mathbf{x}}\odot(1+\mathbf{s}(\mathbf{c}))+\mathbf{t}(\mathbf{c}) AdaRMS:x^=mean(x2)+ε x,y=x^⊙(1+s(c))+t(c)

相关推荐
Mr_愚人派9 小时前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
Lee川9 小时前
Memory 模块深度解析(面试向)
人工智能·面试
MacroZheng10 小时前
Claude Code官方桌面端正式发布,夯爆了!
java·人工智能·后端
IT_陈寒10 小时前
React的useEffect依赖数组把我坑惨了,真相其实很简单
前端·人工智能·后端
Kapaseker10 小时前
什么?Stack Overflow 给 AI 做了个 Stack Overflow
人工智能
aneasystone本尊10 小时前
让小龙虾自己写手册:Skill Workshop
人工智能
火山引擎开发者社区11 小时前
一篇看懂 VKE AI Profiling:AI 应用性能分析优化实战
人工智能
IT乐手11 小时前
马斯克的AI模型Grok,竟然帮美军炸了伊朗?!
人工智能
AI袋鼠帝11 小时前
斥资500元/上亿Token,深度横评4个顶尖模型的真实排名~
人工智能
大刚测试开发实战20 小时前
TestHub V0.2.2版本发布,附更新指南
人工智能