BatchNormalization 与 LayerNormalization 区别讲解

BN

BatchNormalization于2015年被谷歌提出,简称BN。

计算方式如下:
在这里插入图片描述
就是对每个batch_size 的数据进行标准化,变成均值为0,标准差为1的数据,消除特征间的量纲差别。
同事还引入了两个可学习的参数: β 和 γ
分别为 scala 和shift,让模型学习适应的分布。

值得注意的是,BN是对不同batch内样本的同一个特征进行归一化,例如有身高体重和年龄三个特征。

在这里插入图片描述

是一种“列缩放”。

BN能够解决梯度弥散。通过将输出进行适当的缩放,可以缓解梯度消失的状况。

拿sigmoid激活函数距离,从图中,我们很容易知道,数据值越靠近0梯度越大,越远离0梯度越接近0,我们通过BN改变数据分布到0附近,从而解决梯度消失问题。

在这里插入图片描述

LN

LayerNormalization则是在Transformer被所有人广泛熟知的。从而广泛用于NLP中。

其是针对样本的不同维度特征进行归一化。
在nlp中,我们输入为(batch_size, seq_len,dim)

LN是在句子内部的每个token的embedding进行归一化,
在这里插入图片描述

BN 感觉是对样本内部特征的缩放,LN 是样本直接之间所有特征的缩放。

因为NLP中不同句子长度大小不同,用BN会导致 均值不同batch间方差非常大,并且在预测时需要计算全局均值方差,这样会更加不准,而LN则不需要计算全局,只需要内部计算即可。

为啥BN不适合NLP ?

是因为NLP模型训练里的每次输入的句子都是多个句子,并且长度不一,那么 针对每一句的缩放才更加合理,才能表达每个句子之间代表不同的语义表示,这样让模型更加能捕捉句子之间的上下语义关系。如果要用BN,它首先要面临的长度不一的问题。有时候batch size 越小的bn 效果更不好。

参考文献:

https://zhuanlan.zhihu.com/p/74516930

https://mp.weixin.qq.com/s/QFpolIXvOQjUsPAngqvqmg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值