Batch Normalization 和 Layer Normalization

一、Batch Normalization原理

我们在图像预处理过程中,通常会对图像进行优化,这样能加速网络的收敛,如下图所示,对于Conv1来说输入的就是满足某一分布的特征矩阵,但对于Conv2而言输入的feature map就不一定满足某一分布规律了。在神经网络的训练过程中,随着层数的增加,经过前一层的特征会变得不稳定或分布发生变化。Batch Normalization正是用来缓解这种问题,通过标准化每一层的输入,使得特征分布更为稳定,使我们的feature map接近均值为0,方差为1的分布规律。

1.1 BN层步骤

1.2 BN层一个batch具体计算步骤

我们刚刚有说让feature map满足某一分布规律,理论上是指整个训练样本集所对应feature map的数据要满足分布规律,也就是说要计算出整个训练集的feature map然后在进行标准化处理,对于一个大型的数据集明显是不可能的,所以论文中说的是Batch Normalization,也就是我们计算一个Batch数据的feature map然后在进行标准化(batch越大越接近整个数据集的分布,效果越好)。

先求出每一个batch对应通道的均值和方差,然后将每一个通道的像素进行标准化处理。

我们根据上图的公式可以知道代表着我们计算的feature map每个维度(channel)的均值,注意是u_{B}是一个向量不是一个值,u_{B}向量的每一个元素代表着一个维度(channel)的均值。

\sigma _{B}代表着我们计算的feature map每个维度(channel)的方差,\sigma _{B}注意是一个向量不是一个值,向量的每一个元素代表着一个维度(channel)的方差。

然后根据和计算标准化处理后得到的值。下图给出了一个计算均值和方差的示例:

上图展示了一个batch size为2的Batch Normalization的计算过程,假设feature1、feature2分别是由image1、image2经过一系列卷积池化后得到的特征矩阵,feature的channel为2,那么x(1)代表该batch的所有feature的channel1的数据,同理x(2)代表该batch的所有feature的channel2的数据。然后分别计算每个通道的均值与方差。然后在根据标准差计算公式分别计算每个channel的值(公式中的是一个很小的常量,防止分母为零的情况),最后利用超参数进行尺度变换和偏移。

1.3 整体样本均值和方差计算

在我们训练网络的过程中,我们是通过一个batch一个batch的数据进行训练的,但是我们在预测过程中通常都是输入一张图片进行预测,此时batch size为1,如果在通过上述方法计算均值和方差就没有意义了。所以我们在训练过程中要去不断的计算每个batch的均值和方差,并使用移动平均(moving average)的方法记录统计的均值和方差,在训练完后我们可以近似认为所统计的均值和方差就等于整个训练集的均值和方差。然后在我们验证以及预测过程中,就使用统计得到的均值和方差进行标准化处理。具体计算过程如下所示:

总结

  • 训练阶段:每个batch都计算均值和方差,并使用移动平均来更新全局的均值和方差。
  • 推理和验证阶段:使用训练阶段得到的均值和方差进行标准化,而不是计算实时的均值和方差。

二、Layer Normalization原理

2.1 LN公式

2.2 LN与BN不同

  • 当输入为n个向量时,LayerNorm是对每个向量单独进行归一化,BatchNorm是对n个向量的每个通道进行归一化
  • LayerNorm中不会像BatchNorm那样跟踪统计全局的均值方差,因此train()和eval()对LayerNorm没有影响

2.3 为什么Transformer用LN而不用BN

时序特征并不能用Batch Normalization,因为一个batch中的序列有长有短。如果使用BN,由于为了补齐长短不一的样例而添加进去的0使得较长序列中词语的含义向量规模相对变小,较短序列中的词转换为含义向量的规模相对变大。平白无故增添了误差抖动。

此外,BN 的一个缺点是需要较大的 batchsize 才能合理估训练数据的均值和方差,这导致内存很可能不够用,同时它也很难应用在训练数据长度不同的 RNN 模型上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值