Batch Norm 与 Layer Norm

Source

1 为何要对输入数据做 Normalization

可以比较好的抑制梯度消失和梯度爆炸的情况

归一化技术就是让每一层的分布稳定下来,让后面的层能在前面层的基础上“安心学习”。BatchNorm 就是通过对 batch size 这个维度归一化来让分布稳定下来。LayerNorm 则是通过对 Hidden size 这个维度归一。

不管是 Batch Normalization 还是 Layer Normalization,Normalization 的目的是为了把输入转化成均值为 0 方差为 1 的数据。换句话说,这里的 Normalization 其实应称为 Standardization(标准化),而不是 Normalization(归一化)

Normalization:
在这里插入图片描述

Standardization:
在这里插入图片描述
在实际应用中 normalization 代指 Standardization

2 Batch Normalization

假如有 Batch 中有三个样本,x_1、x_2、x_3、x_4 表示 4 个特征。Batch Normalization 对每个特征计算均值和方差,随后归一化。

在这里插入图片描述
在这里插入图片描述

3 Layer Normalization

Layer Normalization 对每个样本计算均值和方差,随后归一化。

在这里插入图片描述
在这里插入图片描述

4 实际应用

Batch Normalization:
BN 不适合 RNN、transformer 等序列网络,不适合文本长度不定和​​batchsize ​​较小的情况,适合于 CV 中的 CNN 等网络

Layer Normalization:
LN 适合用于 NLP 中的 RNN、transformer 等网络,因为 sequence 的长度可能是不一致的

参考

NLP中 batch normalization与 layer normalization
Build Better Deep Learning Models with Batch and Layer Normalization
深度学习 batch normalization和layer normalization区别