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