GN,BN和LN都是在神经网络训练时的归一化方法,BN即Batch Normalization,LN即Layer Normalization,关于BN和LN的解释,可以参考之前写过的一篇文章《深度学习——逐层归一化(BN,LN)》。
Group Normalization(GN)
批量归一化BN是计算机视觉发展中很重要的组成部分,BN是在一个batch中计算均值和方差,BN可以简化并优化使得非常深的网络能够收敛。但是BN却很受batch大小的影响,通过实验证明:BN需要一个足够大的批量,小的批量大小会导致对批统计数据的不准确率提高,显著增加模型的错误率。比如在检测、分割、视频识别等任务中,比如在faster R-cnn或mask R-cnn框架中使用一个batchsize为1或2的图像,因为分辨率更高,其中BN被“冻结”转换为线性层;在3D卷积的视频分类中,空间时间特征的存在引入了时间长度和批处理大小之间的权衡。BN的使用经常会使这些系统在模型符号和批量大小之间做出妥协。
在很宽的批处理大小中,GN表现很稳定,在一个2个样本的批量大小情况下。ImageNet的ResNet-50中,GN的错误比BN要低10.6%。使用常规的批处理大小,GN性能yuBN相当,并优于其他标准化的变体。
上图为四种归一化方法,其中N为批量,C为通道,(H,W)表示feature map,蓝色像素代表相同的均值和方差归一化。
首先描述特征归一化的公式:
计算均值和标准差:
在BN中:
在LN中:
表示LN计算每个样本沿着(C,H,W)轴来计算
在IN中:
表示IN计算每个样本和每个通道沿着(H,W)轴计算
BN,LN和IN的所有方法都学习了一个每通道的线性变换,来补偿表示能力的丢失:
在GN中:
G是组的数量,是预定义的超参数(默认为G=32)。C/G是每组的通道数,GN沿着(C/G,H,W)来计算
如果我们将组号设置为G = 1,则GN变为LN 。LN假设层中的所有通道都做出“类似的贡献”。GN比LN受限制更少,因为假设每组通道(而不是所有通道)都受共享均值和方差的影响; 该模型仍然具有为每个群体学习不同分布的灵活性。这导致GN相对于LN的代表能力提高。
如果我们将组号设置为G = C(即每组一个通道),则GN变为IN。 但是IN只能依靠空间维度来计算均值和方差,并且错过了利用信道依赖的机会。
注:四种归一化的理解
- BatchNorm:batch方向做归一化,计算N*H*W的均值
- LayerNorm:channel方向做归一化,计算C*H*W的均值
- InstanceNorm:一个channel内做归一化,计算H*W的均值
- GroupNorm:先将channel方向分group,然后每个group内做归一化,计算(C//G)*H*W的均值
- GN与LN和IN有关,这两种标准化方法在训练循环(RNN / LSTM)或生成(GAN)模型方面特别成功。
参考链接:
https://blog.csdn.net/qq_21167623/article/details/82848996blog.csdn.net