LRN,BN,LN,IN,GN

  • 这篇文章中我们介绍五种用在深度学习中的normalization方法。Local Response Normalization,Batch Normalization,Layer Normalization,Instance Normalization,Group Normalization
  • Local Response Normalization
    • 来源:AlexNet
    • 公式化: b x , y i = a x , y i ( 1 + ∑ j = m a x ( 0 , i − n ) m i n ( N − 1 , i + n ) ( a x , y j ) 2 ) β b^i_{x,y}=\frac{a^i_{x,y}}{(1 + \sum_{j=max(0, i-n)}^{min(N-1, i+n)}{(a^j_{x,y})^2})^\beta} bx,yi=(1+j=max(0,in)min(N1,i+n)(ax,yj)2)βax,yi
    • 物理意义:其实就是针对feature map的每一个位置,对channel 维度计算一个normalization,不过不是全部的channel,而是某一个局部的范围,所以称之为local response normalization
  • 在接下来接受BN,LN,IN和GN之前,我们先说明一下这四种和LRN的区别。LRN过程中是不存在可学习的参数,所以不需要反向传播。但是后面四种都需要一个可学习的参数,来增强模型的非线性能力。因为通过单纯的normalization后,模型的值会集中在0~1之间,而通过 y = α x ^ + β y=\alpha \hat{x} + \beta y=αx^+β,可以提升模型的表示能力(power of representation)。
  • 接下来我们先用一个图来说明BN,LN,IN和GN之间的关系,如下图所示(来自Group Normalization)
    Normalization
  • 统一期间,我们总结如下的normalization 计算流程,BN,LN,IN,GN都遵循如下的计算流程,只不过彼此对 S k S_k Sk的定义不同。 ∣ S k ∣ |S_k| Sk表示的是集合中元素的个数。
    • u = 1 ∣ S k ∣ ∑ x i ∈ S k x i u=\frac{1}{|S_k|}\sum_{x_i \in S_k}x_i u=Sk1xiSkxi
    • σ 2 = 1 ∣ S k ∣ ∑ x i ∈ S k ( x i − u ) 2 + ϵ \sigma^2=\frac{1}{|S_k|}\sum_{x_i \in S_k}{(x_i - u)^2 + \epsilon} σ2=Sk1xiSk(xiu)2+ϵ
    • x i ^ = x i − u σ \hat{x_i}=\frac{x_i-u}{\sigma} xi^=σxiu
    • y = γ x ^ + β y = \gamma \hat{x} + \beta y=γx^+β
  • Batch Normalization
    • 假设我们的Tensor 形状是 N ∗ H ∗ W ∗ C N*H*W*C NHWC(下同)。
    • S k S_k Sk就是 N ∗ H ∗ W N*H*W NHW内的所有点。如上图所示,BN是along with N,H,W axis 计算的normalization。
    • 对于BN来说,每个channel(特征)是独立的。针对每个channel我们都有一组 γ , β \gamma, \beta γ,β。所有参数的个数是C*2个
    • 缺点:大家认为Batch Normalization的性能受到batch size的影响较大。尤其是在fully connect layer的时候。如果batch size等于1,则相当于没有作normalization。因为每个channel的均值就是他自己本身。在计算Normalization的时候每个特征彼此之间是独立的,互不影响的。
  • Layer Normalization
    • S k S_k Sk就是 H ∗ W ∗ C H*W*C HWC内的所有点。如上图(b)所示。LN 是 along with H,W,C 轴计算的normalization。
    • 对于LN来说,每个sample是独立的,我们对表示每个sample的feature map进行normalization。
    • 缺点:有时候可能输入的特征,本身之间差距就比较大,不适合在整个特征内做normalization。
  • Instance Normalization
    • S k S_k Sk就是 H ∗ W H*W HW内的所有点。如上图©所示。IN 是 along with H,W 轴计算的normalization。
    • 对于IN来说,我们是对每个sample的每个channel做来归一化。每个sample的每个channel都是独立的。
    • 相比较于BN,在计算均值的时候它减去了N的维度。
    • 缺点:和LN正好相反,有时候缺少channel之间的依赖。
  • Group Normalization
    • 首先将 N ∗ H ∗ W ∗ C N*H*W*C NHWC分成G组,即就是G个 N ∗ H ∗ W ∗ C / G N*H*W*C/G NHWC/G
    • S k S_k Sk就是 H ∗ W ∗ G H*W*G HWG内的所有点。如上图d所示,GN是along with H,W,G轴计算的normalization。
    • 对于GN来说,他介于IN和LN中间。我们对每个sample的每个group做归一化。
    • 做完归一化得到G个 N ∗ H ∗ W ∗ C / G N*H*W*C/G NHWC/G,再将其合并成 N ∗ H ∗ W ∗ C N*H*W*C NHWC
    • 然后对合并得到的 N ∗ H ∗ W ∗ C N*H*W*C NHWC,对每个channel维度作scale 和 variance变换。
    • 所以整个参数的个数也是C*2个。
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值