首页 > 其他分享 >Batch、Layer、Instance、Group四种Norm

Batch、Layer、Instance、Group四种Norm

时间:2024-04-02 23:55:06浏览次数:15  
标签:Layer Group hw Batch batch 归一化 GroupNorm BatchNorm channel

归一化Normalization

BatchNorm 的初衷是解决 Internal Covariate Shift 问题。尽可能将 mini-batch 归一化到标准正态分布,使得网络层的输出分布趋于稳定。

Internal Covariate Shift 问题简单来说,是网络学习更新权重后可能会改变输出的分布,导致下一层总是迟一步适应这次的分布。后来的实验与探究证明,BatchNorm 并不能解决 ICS 问题。

在网络层之间引入归一化层,有以下优势:

  • 缓解过拟合,起到正则化效果
  • 改善梯度传递,避免梯度弥散和梯度爆炸,模型适应更大的学习率
  • 避免像是 Sigmoid 这样的激活函数出现饱和问题

BatchNorm

若输入维度为 [batch, channel, hw],BatchNorm 是在 [batch, hw] 维度进行归一化。换句话说,会进行 channel 次归一化。

推荐将 BatchNorm 层放在激活层之后。

带有 BatchNorm 层的网络训练受 batch_size 大小影响较大(例如 batch_size 过小时会严重影响网络训练效果)。接下来的 LayerNorm、InstanceNorm 和 GroupNorm 能够避免 batch 维度上的归一化,回避了这个问题。

LayerNorm

若输入维度为 [batch, channel, hw],LayerNorm 是在 [channel, hw] 维度进行归一化。换句话说,会进行 batch 次归一化。

可见,不同于 BatchNorm,这里 LayerNorm 不受 batch 变化的影响。

InstanceNorm

InstanceNorm 仅在 hw 维度进行归一化。换句话说,会进行 batch * channel 次归一化。

GroupNorm

GroupNorm 会将 channel 划分为多个组。若输入维度为 [batch, channel, hw],GroupNorm 可以说是将之视为 [batch, group, channel // group, hw],然后在 [channel // group, hw] 维度进行归一化。

当 group=channel 时,GroupNorm 等价于 InstanceNorm;当 group=1 时,GroupNorm 等价于 LayerNorm。

GroupNorm 会进行 batch * group 次归一化。

总结

BatchNorm 很强大。但如果 batch_size 的影响过分恶劣(例如 batch_size 小于 8),使用 GroupNorm 值得一试。

LayerNorm 更适合 RNN 和 NLP 领域;BatchNorm 更适合计算机视觉。

参考来源

标签:Layer,Group,hw,Batch,batch,归一化,GroupNorm,BatchNorm,channel
From: https://www.cnblogs.com/chirp/p/18111753

相关文章