LRN,BN,LN,IN,GN
分类:
文章
•
2024-09-27 09:33:04
- 这篇文章中我们介绍五种用在深度学习中的normalization方法。Local Response Normalization,Batch Normalization,Layer Normalization,Instance Normalization,Group Normalization
- Local Response Normalization
- 来源:AlexNet
- 公式化:bx,yi=(1+∑j=max(0,i−n)min(N−1,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^+β,可以提升模型的表示能力(power of representation)。
- 接下来我们先用一个图来说明BN,LN,IN和GN之间的关系,如下图所示(来自Group Normalization)
- 统一期间,我们总结如下的normalization 计算流程,BN,LN,IN,GN都遵循如下的计算流程,只不过彼此对Sk的定义不同。∣Sk∣表示的是集合中元素的个数。
- u=∣Sk∣1∑xi∈Skxi
- σ2=∣Sk∣1∑xi∈Sk(xi−u)2+ϵ
- xi^=σxi−u
- y=γx^+β
- Batch Normalization
- 假设我们的Tensor 形状是N∗H∗W∗C(下同)。
- 则Sk就是N∗H∗W内的所有点。如上图所示,BN是along with N,H,W axis 计算的normalization。
- 对于BN来说,每个channel(特征)是独立的。针对每个channel我们都有一组γ,β。所有参数的个数是C*2个
- 缺点:大家认为Batch Normalization的性能受到batch size的影响较大。尤其是在fully connect layer的时候。如果batch size等于1,则相当于没有作normalization。因为每个channel的均值就是他自己本身。在计算Normalization的时候每个特征彼此之间是独立的,互不影响的。
- Layer Normalization
-
Sk就是H∗W∗C内的所有点。如上图(b)所示。LN 是 along with H,W,C 轴计算的normalization。
- 对于LN来说,每个sample是独立的,我们对表示每个sample的feature map进行normalization。
- 缺点:有时候可能输入的特征,本身之间差距就比较大,不适合在整个特征内做normalization。
- Instance Normalization
-
Sk就是H∗W内的所有点。如上图©所示。IN 是 along with H,W 轴计算的normalization。
- 对于IN来说,我们是对每个sample的每个channel做来归一化。每个sample的每个channel都是独立的。
- 相比较于BN,在计算均值的时候它减去了N的维度。
- 缺点:和LN正好相反,有时候缺少channel之间的依赖。
- Group Normalization
- 首先将N∗H∗W∗C分成G组,即就是G个N∗H∗W∗C/G。
-
Sk就是H∗W∗G内的所有点。如上图d所示,GN是along with H,W,G轴计算的normalization。
- 对于GN来说,他介于IN和LN中间。我们对每个sample的每个group做归一化。
- 做完归一化得到G个N∗H∗W∗C/G,再将其合并成N∗H∗W∗C。
- 然后对合并得到的N∗H∗W∗C,对每个channel维度作scale 和 variance变换。
- 所以整个参数的个数也是C*2个。