Batch Normalization & Layer Normalization

Batch Normalization

目前在CV方面最主流的归一化方法为BN,BN的作用是为了解决梯度消失与梯度爆炸。BN作用是将参数拉回到激活函数比较敏感的区域。

归一化在计算过程中可以看到:
1.求数据均值
2.求数据方差
3.数据进行标准化
4.训练参数γ,β
5.输出y通过γ与β的线性变换得到新的值
在这里插入图片描述
按照样本,纵向地进行归一化,需要保存计算得到的均值和方差,用于inference,适用于batch-size较大,样本间分布较为集中的场景

对于下图这种数据,类似传统的机器学习的数据,使用BN是非常合理的且效果不错。绿框是BN的范围
在这里插入图片描述

但是BN不大适用于RNN等序列数据

  • 因为自然语言比较灵活,同一个位置的词在不同样本里出现的分布差异会很大,这和BN要求的分布集中有冲突,所以效果比较差。
  • 另外自然语言处理句子的长度不是固定的,差别会很大。

Layer Normalization

在NLP中,一个字或者词会通过一个词嵌入矩阵来表示,这个矩阵的维度是多少你可以自行决定。在LN中,他处理的是每一个词嵌入矩阵中对应的特征来进行归一化。
听起来和上面说的好像没什么区别,但是在NLP的数据处理中,一个batch是好几句话组成的,一句话又通过好几个词嵌入矩阵构成。

总结

BN:不同样本,同一特征,归一化
LN:一句话,各个词嵌入的特征,归一化

猜你喜欢

转载自blog.csdn.net/CSTGYinZong/article/details/128497644