神经网络的归一化方法挺多的,如Batch Normalization(BN)、Layer Normalization(LN)以及Instance Normalization(IN)。其中LN主要是在RNN中比较有效,而IN主要是在图像风格化中用的比价多。BN的提出是深度学习上的一个里程碑,现在很多吊炸天的网络都有BN层。但是BN有个问题,那就是当batch size比较小(RCNN系列,以及物体分割中训练批次经常比较少)的时候效果就没那么明显了。为此该论文提出了Group Normalization(GN)。
我们先看看BN、LN、IN和GN的计算区别,看论文给的一张图:
其中蓝色的点表示归一化的均值和方差从这些点计算得到。N:样本数,C:通道数,HW:宽高。
那么我们可以计算出每一种归一化的最终输出张量大小(均值和方差张量大小是一样的)。
BN:沿H,W,N计算均值和方差。最终得到的均值和方差张量大小为 [C]
LN:沿H,W,C计算均值和方差。最终得到的均值和方差张量大小为[N]
IN:沿H,W计算均值和方差。最终得到的均值和方差张量大小为[N,C]
GN:沿H,W,C/G计算均值和方差。最终得到的均值方差张量大小为[G,N]。G为分组数。
好了GN的计算方法就是上图所展示的方法,同样的GN也有和BN一样加入了