知识点
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 在该步上做:
归一化(忽略 ):
要点:只看这一时刻自身的两个通道做统计;别的时间步、别的样本不参与。
2) BatchNorm(按通道,跨 batch×时间)
通道1所有值:1, 2, 3, 10, 20, 30
通道2所有值:3, 4, 5, 30, 40, 50
对同一个点 (b=0, t=1) 的 [2,4] 做 BN:
要点:每个通道的统计量是跨所有样本和所有时间步算出来的;然后用在任意 (b,t) 上该通道的值。