众所周知,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 | ( 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) |