美文网首页
BatchNormalization和LayerNormaliz

BatchNormalization和LayerNormaliz

作者: zuomeng844 | 来源:发表于2020-06-21 10:15 被阅读0次

神经网络中有各种归一化算法:Batch Normalization (BN)、Layer Normalization (LN)、Instance Normalization (IN)、Group Normalization (GN)。

各种Normalization示意图

从公式看它们都差不多:无非是减去均值,除以标准差,再施以线性映射:y=\gamma (\frac{x-\mu (x)}{\sigma (x)} )+\beta ,其中\mu (x)为均值,\sigma 为方差,\gamma \beta 为缩放和平移因子

这些归一化算法的主要区别在于操作的 feature map 维度不同。

Batch Normalization

Batch Normalization (BN) 是最早出现的。feature map:x\in R^{N\times C\times H\times W} ,包含 N 个样本,每个样本通道数为 C,高为 H,宽为 W。对其求均值和方差时,将在 N、H、W上操作,而保留通道 C 的维度。具体来说,就是把第1个样本的第1个通道,加上第2个样本第1个通道 ...... 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。具体公式为:

如果把x类比为一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 W 个字符。BN 求均值时,相当于把这些书按页码一一对应地加起来(例如第1本书第36页,第2本书第36页......),再除以每个页码下的字符总数:N×H×W,因此可以把 BN 看成求“平均书”的操作(注意这个“平均书”每页只有一个字),求标准差时也是同理。

Layer Normalization

BN 的一个缺点是需要较大的 batchsize 才能合理估训练数据的均值和方差,这导致内存很可能不够用,同时它也很难应用在训练数据长度不同的 RNN 模型上。Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。

对于x\in R^{N\times C\times H\times W},LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。其均值和标准差公式为:

继续采用上一节的类比,把一个 batch 的 feature 类比为一摞书。LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,求标准差时也是同理。

直观理解

再直观点理解,将输入x转换成2维的数组

从图中可以看出:Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。

总结一下:

BN、LN可以看作横向和纵向的区别。

经过归一化再输入激活函数,得到的值大部分会落入非线性函数的线性区,导数远离导数饱和区,避免了梯度消失,这样来加速训练收敛过程。

BatchNorm这类归一化技术,目的就是让每一层的分布稳定下来,让后面的层可以在前面层的基础上安心学习知识。

BatchNorm就是通过对batch size这个维度归一化来让分布稳定下来。LayerNorm则是通过对Hidden size这个维度归一。

参考:

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

https://www.jianshu.com/p/05de1f989790

相关文章

网友评论

      本文标题:BatchNormalization和LayerNormaliz

      本文链接:https://www.haomeiwen.com/subject/eeyoxktx.html