Batch Norm 与 Layer Norm

Posted 小何才露尖尖角

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Batch Norm 与 Layer Norm相关的知识,希望对你有一定的参考价值。

这里写自定义目录标题

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

以上是关于Batch Norm 与 Layer Norm的主要内容,如果未能解决你的问题,请参考以下文章

将 GCC 9.3.0 降级到 7 以用于 openpose 后,cuda_compile_1_generated_batch_norm_layer.cu.o.Release.cmake 出现 CMa

caffe中batch norm源码阅读

Tensorflow 批量标准化:tf.contrib.layers.batch_norm

LRN和Batch Norm

如何使用 caffe batch norm

在 tensorboard 中可视化 batch_norm 参数