这里写自定义目录标题
- 1 为何要对输入数据做 Normalization
- 2 Batch Normalization
- 3 Layer Normalization
- 4 实际应用
- 参考
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区别