Group Normalization

Batch NormalizationLayer Normalization

1 motivation

在视觉领域,其实最常用的还是BN,但BN也有缺点,通常需要比较大的Batch Size。如下图所示,蓝色的线代表BN,当batch size小于16后error明显升高(但大于16后的效果确实要更好)。对于比较大型的网络或者GPU显存不够的情况下,通常无法设置较大的batch size,此时可以使用GN。如下图所示,batch size的大小对GN并没有影响,所以当batch size设置较小时,可以采用GN。

2 计算过程

  1. 分组:首先,对于每个样本(与batch是无关的),输入特征的通道被分成若干个组。假设有C个通道,被分成G组,每个组会有C/G个通道
  2. 计算均值:对于每个组,计算该组内所有通道的均值。如果一个组内有 个数据点(这包括该组内所有通道的所有空间位置),组内均值  计算如下:\[\mu=\frac1N\sum_{i=1}^Nx_i\]
  3. 计算方差:接着,计算该组内所有通道的方差。组内方差 计算如下:\[\sigma^2=\frac1N\sum_{i=1}^N(x_i-\mu)^2\]
  4. 规范化:\[y_i=\frac{x_i-\mu}{\sqrt{\sigma^2+\epsilon}}\]
  5. 缩放\(\gamma\)和偏移\(\beta\):在计算了每个组的均值和方差,对组内特征进行规范化之后,GN通常会进行一个仿射变换。这两个参数是针对每个通道独立学习的,允许模型调整规范化后的输出,以更好地适应数据的特定特征。\[\hat{y_i}=\gamma\cdot y_i+\beta \]仿射操作的引入使得GN不仅仅是简单地标准化数据,而是提供了模型自适应调整规范化过程的能力。这种灵活性是非常重要的,因为它允许模型保留或恢复可能被规范化步骤过度压缩的重要信息。

为了形象展示,我用了一张图(图片来源),下图中,每个样本被分成了两组

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇