BN vs LN

提示:本文探究BN、LN的实现方法、区别。

一、Batch Normalization

1、 引言

什么是输入归一化?
例如损失函数 f(x) = w1 * x1 + w2 * x2,x1 的范围是[1000–2000] ,x2 的范围是[0.1–0.5],若在此范围内进行模型优化,模型参数w1,w2无法公平得被训练,也就是说w1会占据较大的优势甚至是决定性优势,导致模型跑偏或者是训练速度过于缓慢。因此这种情况下需要对x1,x2进行归一化处理,可以加快训练速度。
如下图,左图是原始的x1,x2的数据分布;中间是与均值做差后的数据分布;右图是在中间的基础上处以方差后的数据分布。明显看出,右图的数据分布更均衡。
在这里插入图片描述
深度学习中的训练集同样需要输入归一化,与此同时,随着DNN层数的增多,每一层的输入同样需要进行归一化,加快训练速度,减少梯度消失和爆炸的风险。

2、BN实现

BN的思想是,不只是归一化整个网络的输入,而且对网络中每个层的输入归一化。之所以被称为“批”归一化,是因为在训练期间,通过使用当前批中 数据的均值和方差(通常为零均值和单位方差)来标准化每一层的输入。
在这里插入图片描述
上图中,前两个公式求数据的均值、方差,第三个公式计算新的x。最后一个公式引入两个参数->gamma(缩放)、beta(移位)来进一步得进行归一化输入。
原因是简单的归一化通过限制数据范围减弱或降低了后续激活函数的表达能力(比如对于sigmoid来说,这将限制其输出到s曲线的线性区域)。为了克服这个问题,BN允许网络学习gamma和beta参数,让层自主去“调整”归一化的输入分布,增强表达能力。
需要注意的是,均值和方差是在每个mini-batch 上做的,因此整个操作叫做batch normalization,而gamma、beta两个参数是在整个数据集上学习到的。

3、BN的好处

1) 加快网络训练速度
2) 允许使用更大的学习率
3) 使得网络的权重更容易初始化
4) 使能更多的激活函数(如Sigmoids函数在训练中很容易丢失梯度,很难应用于深层网络;Relu函数训练过程中很容易停止训练,BN使用后会大大减少发生这些问题的概率)
5) 会使得整个网络的学习效果更好
在这里插入图片描述
关于第一点加快训练速度,左图是没有进行归一化的处理,训练过程曲折且缓慢;右图是归一化处理后的训练,训练过程直接且快速。

二、Layer Normalization

1. 实现

不同于BN,在每一个batch内进行数据归一化,Layer Normalization 是在特征维度进行的归一化。如下图公式所示,i、j分别是输入数据x的两个维度。
在这里插入图片描述

2. 好处

对于RNNs的训练来说,LN的效果优于 BN。
在RNN训练时,每个时间步的递归激活有着不同的统计数据,如果使用BN这意味着我们必须为每个时间步拟合一个单独的批处理归一化层,导致模型更加复杂并且占用空间,因为上述需要我们在训练期间存储每个时间步的统计信息。

总结

归一化的实现都是通过平均值和方差进行平移和缩放的。假设每个层的输入是在这里插入图片描述, 其中N= batchsize, C是该层的通道数,H、W分别是feature map 的高度和宽度。

在这里插入图片描述

1) BN就是计算所有样本在两个空间维度上每个通道的平均值和方差。
在这里插入图片描述
在这里插入图片描述
2)LN是计算每个样本的所有通道两个空间维度上的平均值和方差。
在这里插入图片描述
在这里插入图片描述

3)Instance Norm是计算H、W空间维度上 每个样本的每个通道的平均值和方差。
在这里插入图片描述
在这里插入图片描述

总的来说,借用李宏毅老师的话,归一化的效果一般会优于不进行归一化的效果,至于选择哪种归一化方式,需要具体的网络具体的问题具体去选择。如最近的BotNet选用了LN,而它所借鉴的transformer结构则是选用了BN。

参考文献

1、 https://towardsdatascience.com/batch-normalization-an-intuitive-explanation-42e473fa753f
2、https://medium.com/techspace-usict/normalization-techniques-in-deep-neural-networks-9121bf100d8
3、https://becominghuman.ai/all-about-normalization-6ea79e70894b

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值