Normalization

Batch size的影响

使用mini-batch训练时,batch size的影响,目前可以实验证实的是:batch size 设置得较小训练出来的模型相对大batch size训练出的模型泛化能力更强,在测试集上的表现更好,而太大的batch size往往不太work,而且泛化能力较差。但是背后是什么原因造成的,目前还未有定论。

两种Normalization的位置

目前有两种在神经元中插入Normalization操作的地方,第一种是原始BN论文提出的,放在激活函数之前;另外一种是后续研究提出的,放在激活函数之后,不少研究表明将BN放在激活函数之后效果更好。

规范化函数

对于神经元的激活值来说,不论哪种Normalization方法,其规范化目标都是一样的,就是将其激活值规整为均值为0,方差为1的正态分布。即规范化函数统一都是如下形式:

如果写成一体的形式,则是如下形式:

其中,ai为某个神经元原始激活值, ai_norm为经过规范化操作后的规范后值。整个规范化过程可以分解为两步,第一步参考公式(1),是对激活值规整到均值为0,方差为1的正态分布范围内。其中, u是通过神经元集合S(中包含的m个神经元各自的激活值求出的均值,即:

为根据均值和集合S中神经元各自激活值求出的激活值标准差:

总结

各种Normalization的适用场景,可以简洁归纳如下:对于RNN的神经网络结构来说,目前只有LayerNorm是相对有效的;如果是GAN等图片生成或图片内容改写类型的任务,可以优先尝试InstanceNorm;如果使用场景约束BatchSize必须设置很小,无疑此时考虑使用GroupNorm;而其它任务情形应该优先考虑使用BatchNorm。

原文链接:https://zhuanlan.zhihu.com/p/43200897

11FjxS.jpg