Batch normalization和 layer normalization的区别

Batch normalization 和 layer normalization的公式都是一样的,对数据做归一化处理,使数据分布在均值为0,方差为1的分布中:

三、BertTransformer中为何使用的是LN而很少使用BN

其实这个问题是一个比较难的问题,我个人理解也是很有限的。参阅了很多资料,比较能接受2个解释。

3.1第一个解释

我们先把这个问题转化一下,因为Bert和Transformer基本都是应用到了NLP任务上。所以可以这样问:

为何CV数据任务上很少用LN,用BN的比较多,而NLP上应用LN是比较多的?

我们用文本数据句话来说明BN和LN的操作区别。

我是中国人我爱中国

武汉抗疫非常成功0

大家好才是真的好0

人工智能很火000

上面的4条文本数据组成了一个batch的数据,那么BN的操作的时候

就会把4条文本相同位置的字来做归一化处理,例如:我、武、大、人

我认为这里就破坏了一句话内在语义的联系。

而LN则是针对每一句话做归一化处理。例如:我是中国人我爱中国——归一化处理后,一句话内每个字之间的联系并没有破坏。从这个角度看,LN就比较适合NLP任务,也就是bert和Transformer用的比较多。

3.2第二个解释

1、layer normalization 有助于得到一个球体空间中符合0均值1方差高斯分布的 embedding, batch normalization不具备这个功能。

2、layer normalization可以对transformer学习过程中由于多词条embedding累加可能带来的“尺度”问题施加约束,相当于对表达每个词一词多义的空间施加了约束,有效降低模型方差。batch normalization也不具备这个功能。

NLP和CV的任务差别:

图像数据是自然界客观存在的,像素的组织形式已经包含了“信息”

NLP数据则是又embedding开始的,这个embedding并不是客观存在的,它是由我们设计的网络学习出来的。

通过layer normalization得到的embedding是 以坐标原点为中心,1为标准差,越往外越稀疏的球体空间中。这个正是我们理想的数据分布。

另外一词多义的表示中——简单来说,每个词有一片相对独立的小空间,通过在这个小空间中产生一个小的偏移来达到表示一词多义的效果。transformer每一层都做了这件事,也就是在不断调整每个词在空间中的位置。这个调整就可以由layer normalization 来实现,batch normalization是做不到的。\

  1. Layernorm 针对一条样本的所有特征做均值为0,方差为1的归一化处理;

Batchnorm 针对一个batch内所有样本的一个特征做均值为0,方差为1的归一化处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值