# BatchNorm

对于一个二维输入 XRN×CX \in \mathbb{R}^{N \times C}, 其中 NN 是样本数,CC 是特征维度。

BatchNorm 是一种归一化方法,将输入按相同特征进行样本归一化。在训练过程中,对于每个 batch 进行归一化,而在预测时对整体进行归一化。

# LayerNorm

LayerNorm 与 BatchNorm 类似,区别在于 LayerNorm 是对每个样本内的各个特征进行归一化。

LayerNorm 在 NLP 中使用更为广泛的原因是,时序特征中各样本的长度往往不完全相同。

例如,如果输入是一系列句子组成的一个张量 XRM×N×DX \in \mathbb{R}^{M \times N \times D}, 其中 MM 是句子数 (batch 大小),NN 是句子长度,DD 是特征维度。则 BatchNorm 可以表示为

X~:,:,d=X:,:,dμ:,:,dσ:,:,d\tilde{X}_{:,:,d} = \frac{X_{:,:,d} - \mu_{:,:,d}}{\sigma_{:,:,d}}

而 LayerNorm 可以表示为

X~m,:m(n),:=Xm,:m(n),:μm,:m(n),:σm,:m(n),:\tilde{X}_{m,:m(n),:} = \frac{X_{m,:m(n),:} - \mu_{m,:m(n),:}}{\sigma_{m,:m(n),:}}

注意到,句子长度 m(n)m(n) 是与 句子编号 mm 唯一相关的,因此这样归一化不会引入填充的 00. 因此,就可以处理长度变化差异更大的样本了。

# Ref

  • 跟李沐学 AI: Transformer 论文逐段精读【论文精读】- Bilibili