本篇文章对深度学习网络结构中常用的Normalization进行梳理,对比其区别和联系,以及分别适用的场景,给出响应的paper和code。
论文链接
- Batch Normalization【2015.3】
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift - Layer Normalization【2016.7】
Layer Normalization - Instance Normalization【2017.11】
Instance Normalization:The Missing Ingredient for Fast Stylization - Group Normalization【2018.6】
Group Normalization - Switch Normalization【2019.4】
DIFFERENTIABLE LEARNING-TO-NORMALIZE VIA SWITCHABLE NORMALIZATION
对比
针对CV,输入的shape为[N, C, H, W];针对NLP,输入的shape为[N, C, H],主要区别为:
- batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;
- layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显【Transformer】;
- instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;
- GroupNorm将channel分组,然后再做归一化;
- SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。
Batch Normalization
Layer Normalization
同一隐藏层共用相同的正则化项
μ
和
σ
\mu和\sigma
μ和σ,不同的样本有不同的正则化项。