在深度学习中,随着网络的层数逐渐加深,Internal Covariate Shift现象会变得愈发严重,为了有效缓解这一现象,很多归一化操作被先后提出。如,最常用的BN(Batch Normalization),LN(Layer Normalization),IN(Instance Normalization),SN(Switchable Normalization),GN(Group Normalization)等。本文对几种常用的归一化操作进行简单总结,以作备忘。下文中feature的尺寸都为
简单来说,不同的归一化操作之间的区别是归一化的维度不同,导致不同的归一化操作应用于某些特定的领域时效果较好。
1. Batch Normalization
BN应该是我们最熟悉的归一化操作了,其作用在整个mini-batch上,沿着C维度对N,H,W三个维度进行归一化,换句话说,是对mini-batch中相应的feature进行归一化。假设一个mini--batch中相应的feature可表示为
for i=1, ..., C
可见,BN对于均值和方差的计算与mini-batch的大小有关。当batch size足够大时,每个mini-batch可以较好地反映真实数据的分布;但是,若batch size较小,每个mini-batch就无法反映所有数据的真实分布。因此,BN操作对batch size的选择有较高的要求。
2. Layer Normalization
LN不再对mini-batch中的所有特征计算均值和方差,而是沿着batch维度对CHW三个维度进行归一化操作,从而克服了BN操作对于batch size大小比较敏感的缺点,非常适用于RNN网络的加速训练。
对于mini-batch中的每组特征,令
for i = 1, ..., B
3. Instance Normalization
IN操作是将归一化作用于具体的某个图像实例,在HW维度进行归一化,用于图像风格转换是非常有效的。
令
for i = 1, ..., N
for j = 1, ..., C
4. Switchable Normalization
SN操作时上述BN,LN和IN操作的加权平均,是为了避免人为设计的归一化操作带来的影响模型泛化能力的问题。通过对几种归一化操作加权求和,使得网络本身学习一种适用于自身的归一化操作,增强模型的泛化能力。SN操作的输出可以定义为:
关于SN的有效性,论文中针对不同的应用领域进行了仿真,实验结果表明,不同的领域对于归一化操作有着不同的权重要求。如下图所示:
Reference
[1] BN https://arxiv.org/pdf/1502.03167.pdf
[2] LN https://arxiv.org/pdf/1607.06450v1.pdf
[3] IN https://arxiv.org/pdf/1607.08022.pdf
[4] SN https://arxiv.org/pdf/1806.10779.pdf
About
我的专栏
深度图像与视频增强zhuanlan.zhihu.com我的Github
https://github.com/z-bingogithub.com