10 Group Normalization
Motivation i.e. BN’s drawbacks
1)过小的batch size会使得BN的错误率上升:
batch size很小的时候,batch数据的均值和方差的代表性会比较差,统计信息的准确性较差,这时候再去做归一化的话对精度影响较大。
在某些任务中,例如object detection and segmentation、视频相关的任务中,内存大小负担不起太大的batch size(往往只有1-2),这时候使用BN的效果不好。
2)训练和测试时
bn是在batch维度上做norm,在验证的时候很有可能没办法一个batch一个人batch地验证,所以需要在训练的时候预先计算好均值和方差,在测试的时候直接调用这些值。
这样做的一个问题是,如果训练集和测试集的分布不同,那在训练和测试之间就存在inconsistency
Addressing small batches
batch renormalization:
可以减轻BN在batch size小的时候遇到的问题(只是减轻,没有解决)引入了两个额外的参数,限制了BN在一定范围内估计均值和方差,减小了“漂移”。但是这还是依赖于batch的,所以只是减轻了问题没有解决
避免使用small batches:
这是在将算法问题强行迁移到对硬件的要求上
why GN work?
在深度学习之前:使用SIFT、HOG、GIST来提取特征,这些特征都是按照group表示的特性
在深度学习中:可以认为卷积提取的特征是一种非结构化的特征或者向量。例如:卷积核filter1和经过转秩后的filter2,在同一张图像上学习到的特征应该具有相同的分布,可以被分到同一个组中。每一层有那么多卷积核,它们学到的特征很可能不是完全相互独立的,所以应该是可以被group(分组)的
因此对图像的通道进行分组似乎是可行的,提出了组归一化的形式
GN避开了batch size对模型的影响,所以说对batch size的变化不太敏感,因此在batch size很小的时候效果也不会有明显下降
这里要注意,提出GN的目的不是为了全面超过BN,而是要解决BN在batch size很小的情况下错误率升高的问题,实验也证明,GN的效果跟BN在batch size较大时几乎差不多(错误率略有一点点上升),但在batch size小的时候,GN错误率显著低于BN。