Skip to content

知识点

1. LayerNorm 和 BatchNorm 的区别

LayerNorm 是对单个样本的所有特征进行归一化,而 BatchNorm 是对一个批次的样本进行归一化。

举个例子

设数据形状 [B=2, T=3, C=2]

把它拆开成 (b,t) 的二维向量([通道1, 通道2]):

  • (0,0): [1, 3]
  • (0,1): [2, 4]
  • (0,2): [3, 5]
  • (1,0): [10, 30]
  • (1,1): [20, 40]
  • (1,2): [30, 50]

1) LayerNorm(按步,沿通道)

(b=0, t=1) 这一个时间步,向量是 [2, 4]

LN 在该步上做:

μ(0,1)=2+42=3,σ(0,1)=(23)2+(43)22=1\mu_{(0,1)} = \frac{2 + 4}{2} = 3, \quad \sigma_{(0,1)} = \sqrt{\frac{(2-3)^2 + (4-3)^2}{2}} = 1

归一化(忽略 γ,β,ϵ\gamma, \beta, \epsilon):

LN([2,4])=[231,431]=[1,1]\text{LN}([2, 4]) = \left[\frac{2-3}{1}, \frac{4-3}{1}\right] = [-1, 1]

要点:只看这一时刻自身的两个通道做统计;别的时间步、别的样本不参与


2) BatchNorm(按通道,跨 batch×时间)

通道1所有值:1, 2, 3, 10, 20, 30

μc=1=666=11,σc=1=(x11)2610.708\mu_{c=1} = \frac{66}{6} = 11, \quad \sigma_{c=1} = \sqrt{\frac{\sum(x-11)^2}{6}} \approx 10.708

通道2所有值:3, 4, 5, 30, 40, 50

μc=2=1326=22,σc=218.912\mu_{c=2} = \frac{132}{6} = 22, \quad \sigma_{c=2} \approx 18.912

对同一个点 (b=0, t=1)[2,4] 做 BN:

BN1=21110.7080.841,BN2=42218.9120.951\text{BN}_1 = \frac{2-11}{10.708} \approx -0.841, \quad \text{BN}_2 = \frac{4-22}{18.912} \approx -0.951

要点:每个通道的统计量是跨所有样本和所有时间步算出来的;然后用在任意 (b,t) 上该通道的值。

构建时间:11/21/2025, 1:28:39 PM | 本博客内容均为自己学习,如内容涉及侵权,请联系邮箱:pangzl0215@163.com