BN,LN,IN,GN的比较

众所周知,Normalization会控制数据的尺度分布,有助于模型训练,常见的Normalization主要有BN(BatchNormalization),LN(LayerNormalization),IN(InstanceNormalization),GN(GroupNormalization)这4种。本文不讲述具体的原理,只对这四种方法进行简单的比较,有不足的地方希望大牛们指正。谢谢!

首先,在进行对比之前先讲一个问题------深度网络中的数据维度。深度网络中的数据维度一般是 ( N , C , H , W ) (N,C,H,W) (N,C,H,W)或者 ( N , H , W , C ) (N,H,W,C) (N,H,W,C)格式, N N N是batch size, H / W H/W H/W是feature的高/宽, C C C是feature的channel,压缩 H / W H/W H/W至一个维度。BN(BatchNormalization),LN(LayerNormalization),IN(InstanceNormalization),GN(GroupNormalization)的三维表示如下图:
BN,LN,IN,GN的比较_第1张图片
将这四种方法的对比以表格的形式进行呈现,更为直观。具体如下所示:

名称 操作维度 优点 缺点 适用情况
BN ( N , H , W ) (N,H,W) (N,H,W) 减轻对初始值的依赖,提高网络的训练效率。可以使用更高色学习速率 依赖Batch的大小,当Batch太小计算的均值和方差不稳定 深度固定的CNN/DNN等神经网络
LN ( C , H , W ) (C,H,W) (C,H,W) 抛弃对Batch大小的依赖 由于其根据不同的通道进行了归一化,因此对相似度较大的特征LN会降低模型的表达能力 mini_Batch较小的场景、动态网络结构、RNN
IN ( H , W ) (H,W) (H,W) 对于样式转换任务,IN在丢弃图像对比度信息方面优于BN IN还可以看作是将LN单独应用于每个通道,就像通道的数量为1的LN一样,其大部分实际用效果较差 风格化类的图像应用
GN LN与IN的中间体 由于GN可利用跨通道的依赖关系因此其优于IN;因为它允许对每一组通道学习不同的分布所以它也比LN好;当批大小较小时,GN始终优于BN 当批处理大小非常大时,GN的伸缩性不如BN,可能无法匹配BN的性能 Batch较小(本人实验batch的大小小于10可使用GN)

你可能感兴趣的:(机器学习/深度学习,BN,LN,IN,GN,BN,LN,IN,GN)