Batch Norm 与 Layer Norm

这里写自定义目录标题

  • 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:
Batch Norm 与 Layer Norm_第1张图片

Standardization:
Batch Norm 与 Layer Norm_第2张图片
在实际应用中 normalization 代指 Standardization

2 Batch Normalization

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

Batch Norm 与 Layer Norm_第3张图片
Batch Norm 与 Layer Norm_第4张图片

3 Layer Normalization

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

Batch Norm 与 Layer Norm_第5张图片
Batch Norm 与 Layer Norm_第6张图片

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区别

你可能感兴趣的:(深度学习,机器学习,batch,python,Normalization,Batch,Norm,Layer,Norm)