在深度学习中,规范化(Normalization)可以说是必不可少的一个环节。神经网络在更新参数后,各层输入的分布会发生变化,从而给训练带来困难,这种现象被称为内部协变转移。这便会不断累积从而产生梯度消失和梯度爆炸的问题,从而导致网络收敛速度,和参数更新速度降低。

深度学习中的 Normalization 根据规范化操作涉及的对象不同,可以大致分为两大类,一类是对 l 层的激活后的输出值进行标准化,Batch Norm、Layer Norm、Instance Norm、Group Norm 就属于这一类;另一类是对神经元连接边的权重进行规范化操作,Weight Norm 就属于这一类。

目前常见的 Normalization 有 Batch Norm(BN)、Layer Norm(LN)、Instance Norm(IN)和 Group Norm(GN)。

Batch Normalization(BN)

batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布。

Layer Normalization(LN)

channel方向做归一化,算CHW的均值,主要对RNN作用明显。

Instance Normalization(IN)

一个channel内做归一化,算H*W的均值,用在风格化迁移;因为在图像风格化中,生成结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。

Group Normalization(GN)

将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值;这样与batchsize无关,不受其约束。

参考文档

https://blog.csdn.net/qq_33431368/article/details/107328558

https://zhuanlan.zhihu.com/p/115949091

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/239