参考:https://mp.weixin.qq.com/s/2laMXTVFH5yw43WFiWpjzw
1、BN是应用最多的数据归一化处理:训练神经网络的过程中,由于神经网络的各层参数变化,神经网络的各层输入也会产生变化。(不同数据范围不同,服从不同的分布,导致学习率选择困难,增加了网络的训练难度)。
网络训练过程中要求较低的学习率和详细的初始化参数 ,减慢了训练速度,而且训练模型具有饱和性和非线性的模型非常困难。(该现象称为内部协变量偏移,通过BN解决该问题)。当训练过程中两个数据处于不同的范围,而使用同一学习率进行训练时,容易导致梯度轨迹沿某一方向来回震荡,从而需要更多步才能找到局部最优值。
训练过程中在一个BN层对应每一个样本的同意通道计算均值和方差,在对数据进行归一化,最后使用两个超参数α、γ对归一化数据进行缩放和移位。在训练过程中保存每个minibatch的数据,最后求所有minibatch的均值和方差的期望,以此作为推理过程中BN层的均值和方差。
BN层的作用:1)在训练过程中可以使用更大的学习率进行训练;
2)防止过拟合,数据训练过程中进行了打乱,对不同的mini-batch数据做归一化有数据增强的效果;
3)明显加快收敛速度;
4)防止梯度消失和梯度爆炸问题。
2、LRN:让响应值大的feature map变得更大,使feature map之间的相关性减小。
3、Instance Normalization:生成对抗网络、风格迁移和domain adaptation这类生成任务上,IN的效果明显比BN更好
4、Layer Normalization:应用于RNN和transform。
5、Group Normalization:batch size较小时,神经网络退化严重,但GN始终保持一致,batch size较大时,GN会低于BN。GN的使用过程中要求通道数是g的整数倍。
应用场景:当输入图像分辨率大且内存受限的情况。
以上五种方法都是针对feature map进行归一化,