二月 04, 2026

LayerNorm

公式全貌:
$$
\text{LayerNorm}(x) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta
$$


第一阶段:强制标准化 (Standardization)

$$
\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}
$$

这一步的目的是**“消除差异,统一度量衡”**。

1. 符号拆解

  • $x$ (Input): 输入的向量。比如刚才算出来的 [91, 71]
  • $\mu$ (Mean): 均值。代表这个向量的“平均水平”。
    • (91+71)/2 = 81
  • $\sigma$ (Standard Deviation): 标准差。代表这个向量里的数“波动有多大”。
    • 波动是 10
  • $\epsilon$ (Epsilon): 极小值(比如 0.00001)。
    • 作用:防止分母为 0。如果方差是 0(所有数都一样),除法会报错,加上这个数保平安。

2. 物理意义:Z-Score (Z分数)

这其实就是统计学里最著名的 Z-Score

  • $x - \mu$ (去中心化):把数据的中心强行拉回 0
    • 不管你原来是 [91, 71] 还是 [10091, 10071],减去均值后都变成 [10, -10]。
  • 除以 $\sigma$ (归一化):把数据的波动范围强行缩放到 1
    • 不管你原来波动多大,除以标准差后,波动幅度都统一了。

💡 举个例子:考试排名

  • A班试卷简单,平均分 90 分。
  • B班试卷很难,平均分 50 分。
  • 这就好比 LayerNorm 之前的数据,量级不同,没法比较。
  • Norm 之后:大家都变成了“超过平均分多少个标准差”。如果你的得分是 +2.0,说明你是两个班里一样的学霸,无关试卷难易。

第二阶段:个性化调整 (Rescaling)

$$
y = \hat{x} \cdot \gamma + \beta
$$

这一步的目的是**“赋予模型自由”**。

1. 为什么标准化之后还要变回去?

如果我们只做第一步,所有的输出都会变成均值为 0、方差为 1 的死板数据。
但是,神经网络可能不希望数据这么死板!
也许对于某些任务,数据偏大一点(均值=5)或者波动大一点(方差=10)才更好?

2. 符号拆解

这两个参数不是算出来的,而是模型自己“学”出来的(就像权重矩阵 W 一样)。

  • $\gamma$ (Gamma - 缩放因子)
    • 模型会问:“标准差为 1 够吗?不够的话我乘个 2,把它拉宽。”
  • $\beta$ (Beta - 平移因子)
    • 模型会问:“均值为 0 合适吗?不合适的话我加个 5,把它整体抬高。”

💡 核心逻辑:可逆性
如果模型发现“标准化”是个错误的决定,它完全可以通过学习让 $\gamma = \sigma$ 且 $\beta = \mu$,从而把数据还原回去

这给了模型选择权:它可以选择标准的数据,也可以选择保留原始特征。