批处理归一化(BN)是早期提出的一种归一化方法,也是应用最为广泛的方法。BN利用计算出的均值和方差对特征图进行归一化,再对归一化后的特征图进行重新缩放和移位,以保证DCNN(深度卷积神经网络)的表征能力。同时,在BN的基础上,提出了许多其他任务的归一化方法。
目前在深度学习中常用的Normalization如下:
- Batch Normalization(BN,2015年)
- Layer Normalization(LN,2016年)
- Instance Normalization(IN,2017年)
- Group Normalization(GN,2018年)
- Positional Normalization(PN,2019年)
- Batch Group Normalization(BGN,2020年)
- 层归一化-LN:用于计算递归神经网络沿通道的统计量;
- 权值归一化-WN:来参数化权值向量,用于监督图像识别、生成建模和深度强化学习;
- 切分归一化-DN:提出包含BN和LN层的归一化层,作为图像分类、语言建模和超分辨率的特例;
- 实例归一化-IN:为了进一步快速风格化,提出了IN层,主要用于图像分割迁移,其中统计量由高度和宽度维度计算得到;
- 组归一化-GN:对通道进行分组,统计每个分组通道的高度和宽度,增强对批量大小的稳定性;
- 位置归一化-PN:提出了位置归一化算法来计算生成网络沿信道维数的统计量;
其他相关归一化的改进比如:
EvalNorm、
Moving Average BN、
Adaptive Normalization、
Square LN、
Decorrelated BN、
Spectral Normalization、
BatchInstance Normalization(BIN)、
Switchable Normalization(SN)、
Meta Normalization、
Kalman Normalization(KN)
等等,
这里不再赘述,感兴趣的您可以寻找相关论文进行研究。
在这些归一化方法中,BN通常可以在中、大批量中取得良好的性能。然而,在小批量它的性能便会下降比较多;GN在不同的Batch Size下具有较大的稳定性,而GN在中、大Batch Size下的性能略差于BN。其他归一化方法,包括IN、LN和PN在特定任务中表现良好,但在其他视觉任务中泛化性比较差。
BGN:超大Batch下BN会出现饱和(比如,Batch为128),并提出在小/超大Batch下BN的退化/饱和是由噪声/混淆的统计计算引起的。因此,在不增加新训练参数和引入额外计算的情况下,通过引入通道、高度和宽度维度来补偿,解决了批量标准化在小/超大Batch下BN的噪声/混淆统计计算问题。
对于这一系列的Normalization操作,我今天就总结到这,详细的内容请参考下面的参考文献,里面的内容更加的丰富。有时间的话,我会研读每一篇paper,今天就到这里,拜拜。
参考
https://mp.weixin.qq.com/s/lTwaTEAVjfOODg-w1Nb8tA[含论文下载]
https://mp.weixin.qq.com/s/f7R9akK-rmJ5TaQbRZiQRw
https://mp.weixin.qq.com/s/tdDhBRDgFE702XINmKTHnQ
https://mp.weixin.qq.com/s/IfgsqL0wtjD7hRo6V5VGcw