假设数据形状是NCHW(以cv图片为准,语音或时序数据则将HW记为H‘)。
归一化的原因:
深度神经网络难训练一个重要的原因就是深度神经网络涉及很多层的叠加,每一层的参数变化都会导致下一层输入数据分布的变化,随着层数的增加,高层输入数据分布变化会非常剧烈,这就使得高层需要不断适应低层的参数更新。因此,一个直接的想法是固定fix神经元的加权输入分布,将该分布的均值和方差框定在某一个范围中。
基本操作 | 优点 | 缺点 | |
---|---|---|---|
BatchNorm | batch方向做归一化,算NHW的均值 | 适用于CNN | 对较小的batch size效果不好,不适用于RNN |
LayerNorm | channel方向做归一化,算CHW的均值 | 适用序列模型,如:RNN | 不适应输入变化很大的数据,大Batch较差 |
InstanceNorm | 一个channel内做归一化,算H*W的均值 | 适用图像风格迁移 | 不适应通道之间的相关性较强数据 |
GroupNorm | 将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值 | 不同Batch Size下具有较大的稳定性 | 在大Batch 下性能略差于BN |
Switchable Normalization | 将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法 | 集BN、IN、LN优点于一身 | 训练复杂 |
Positional Normalization | 位置归一化算法来计算生成网络沿信道维数的统计量 | 在生成网络中表现较好 | 不适应视觉任务 |
Batch Group Normalization | 解决Batch Size退化和饱和的问题 |
norm结果