GN-Group Normalization
此篇文章也是凯明大神的作品,Group Normalization下面简称GN,是一种可以用来代替Batch Normalization(BN)的一种正则方法。
一、为什么要提出GN
BN全称Batch Normalization,它是从batch维度对网络提取的特征进行归一化的一种处理。正是因为它是从batch维度进行特征归一化的,那么这种操作严重依赖于batchsize。当batchsize过小时,BN操作对batch维度的统计信息不准确,导致最终的网络效果变差,如下图所示。图中网络采用的是resnet-50,蓝线表示采用BN时减小batchsize对于imagenet任务的error在不断增加。
所以采用BN最好有个较大的batchsize,但是这样会受到显存的限制。
在进行推断时采用BN也会受到影响,因为BN是依赖于batch维度的,统计出来的特征的均值和方差也是根据batch维度计算的,当进行推断任务的时候,有时候并不会采用batch的操作。这样只能使用训练时计算好的均值和方差来参与推断阶段的计算,当训练的数据与测试数据分布不一致时,这样会导致推断结果变差。
通过上面分析可以知道,要解决的问题是使得归一化不从batch维度进行。GN就是从通道的维度对特征进行归一化的。
二、什么是GN
在GN提出前还有其他的一些归一化方法,如Layer Norm(LN)、Instance Norm(IN)。各种归一化方法的操作维度如下图所示。
下面来一一解释一下各种归一化的方法。
在解释之前先用一些通用的公式表达这些计算方法。
x i ^ = 1 σ ( x i − μ i ) \hat{x_{i}}=\frac{1}{\sigma}(x_{i}-\mu_{i}) xi^=σ1(xi−μi)
上式中x表示卷积层输出的特征,i表示索引。对于二维图像来说 i = ( i N , i C , i H , i W ) i=(i_{N},i_{C},i_{H},i_{W}) i=(iN,iC,iH,iW),它是一个四维的,其中N表示batch维度,C表示通道维度,H和W分别是特征的高和宽。
上式中的 μ i \mu_{i} μi和 σ i \sigma_{i} σi计算如下
μ i = 1 m ∑ k ∈ S i x k , σ i = 1 m ∑ k ∈ S i ( x k − μ i ) 2 + ϵ \mu_{i}=\frac{1}{m}\sum_{k\in S_{i}}x_{k},\quad \sigma_{i}=\sqrt{\frac{1}{m}\sum_{k\in S_{i}}(x_{k}-\mu_{i})^2+\epsilon} μi=m1∑k∈Sixk,σi=m1∑k∈Si(xk−μi)2+ϵ
上式中 ϵ \epsilon ϵ是个很小的常数。 S i S_{i} Si表示用于计算均值和标准差的像素集,像素集的表示如上图中的蓝色区域表示。
Batch Norm
对于Batch Norm操作来说 S i S_{i} Si表示如下
S i = { k ∣ k C = i C } S_{i}=\{k|k_{C}=i_{C} \} Si={k∣kC=iC}
i C i_{C} iC表示的是在通道维度上的索引。这表示BN的均值和方差计算是在(N,H,W)轴上进行的,即对每个通道进行BN的计算。
Layer Norm
对于Layer Norm操作来说 S i S_{i} Si表示如下
S i = { k ∣ k N = i N } S_{i}=\{k|k_{N}=i_{N} \} Si={k∣kN=iN}
表示LN的均值和方差计算是在(C,H,W)轴上进行的,即对每个样本层进行索引。
Instance Norm
对于Instance Norm操作来说 S i S_{i} Si表示如下
S i = { k ∣ k N = i N , k C = i C } S_{i}=\{k|k_{N}=i_{N},k_{C}=i_{C} \} Si={k∣kN=iN,kC=iC}
表示IN的均值和方差计算是在(H,W)轴上进行的。
Group Norm
对于Group Norm操作来说 S i S_{i} Si表示如下
S i = { k ∣ k N = i N , ⌊ k C C / G ⌋ = ⌊ i C C / G ⌋ } S_{i}=\{k|k_{N}=i_{N},\lfloor \frac{k_{C}}{C/G}\rfloor = \lfloor \frac{i_{C}}{C/G}\rfloor \} Si={k∣kN=iN,⌊C/GkC⌋=⌊C/GiC⌋}
G是个超参数,表示group的大小,默认为32。C/G表示group的个数。 ⌊ { ⋅ } ⌋ \lfloor \{ \cdot\} \rfloor ⌊{⋅}⌋表示向下取整操作。说明GN操作是在(H,W)轴上并且属于同一个C/G通道的特征值进行均值和方差的计算。
另外上面所有的归一化在最后都会有下式的操作
y i = γ x i ^ + β y_{i}=\gamma \hat{x_{i}}+\beta yi=γxi^+β
其中 γ , β \gamma,\beta γ,β是学习得到的参数,对于上面所有的归一化都是和BN一样在batch维度进行学习的,即每个通道都有一对 γ , β \gamma,\beta γ,β。
三、为什么想到Group
这里解释一下,为什么凯明大神会想到对组进行卷积的。
通道维度的特征表示并不是完全独立的。
在传统的SIFT,HOG,GIST特征提取方法中就使用过组表示,每一个组通道都由相同种类的直方图构建而成。而更高维的特征比如VLAD和Fisher Vectors(FV)也可以看作是group-wise feature,此处的group可以被认为是每个聚类(cluster)下的子向量sub-vector。
相似的,对于卷积来说,卷积提取的特征是非结构化特征。对于一张图片来说,一个卷积和同一个卷积经一些变化(例如水平翻转)后得到的结果分布是相同的。通过相同卷积以及有一些其他的翻转等操作得到的特征可以一起进行组归一化。可以理解为,每个卷积输出的特征有一定的相似性,使用可以进行组归一化。
这样GN就诞生了。
GN-Group Normalization相关推荐
- Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization
BN BN的作用 为了对隐含层进行归一化操作.对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落 ...
- PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization
PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...
- group normalization
全面解读Group Normalization-(吴育昕-何恺明 ) - 知乎前言 Face book AI research(FAIR)吴育昕-恺明联合推出重磅新作Group Normalizati ...
- Batch Nomalization,Group Normalization,Cross-Iteration Batch Normalization分析
BatchNomalization 发表于第32届机器学习国际会议 PMLR,2015年 前言 由于深度神经网络每层输入的分布在训练过程中随着前一层的参数变化而变化,因此训练深度神经网络很复杂.由于需 ...
- 【AI数学】Group Normalization(何恺明ECCV2018最佳论文提名)
声明:原创文章,欢迎转载,但必须经过本人同意. 论文标题:<Group Normalization> 论文链接: https://arxiv.org/pdf/1803.08494.pdf ...
- 优化方法总结 Batch Normalization、Layer Normalization、Instance Normalization 及 Group Normalization
目录 从 Mini-Batch SGD 说起 Normalization 到底是在做什么 Batch Normalization 如何做 3.1 前向神经网络中的 BN 3.2 CNN 网络中的 BN ...
- 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
RBM & DBN & Deep Autoencoder(续) DBN RBM不仅可以单独使用,也可以堆叠起来形成Deep Belief Nets(DBNs),其中每个RBM层都与其前 ...
- 论文阅读 - Group Normalization
文章目录 1 概述 2 几种normalization的方法 2.1 Batch Norm 2.2 Layer Norm 2.3 Instance Norm 2.4 Group Norm 3 效果对比 ...
- 深度学习中的归一化方法BN,LN,IN,GN
文章目录 前言 一.BN 二.LN 三.IN 四.GN 前言 归一化层,目前主要有这几个方法, 1.Batch Normalization(2015) 2.Layer Normalization(20 ...
- normalization总结和实现
本博文大量引用张俊林老师的专栏:https://zhuanlan.zhihu.com/p/43200897 内化于己 默认你已经略懂BN,至少读过batch normalization论文! 介绍 n ...
最新文章
- SAP QM Dynamic Modification Rule (动态修改规则)
- AI芯片:从历史看未来
- c++list支持索引吗_还在为不懂Python切片操作及原理而苦恼吗?漫画帮你立马理解掌握...
- php ajax 删除行,php – 使用jQuery Ajax删除mySQL表行
- 从零开始配置MySQL MMM
- SQL5 将查询后的列重新命名(数据库的几种去重方法)
- 为什么微软要推 ADO.NET Data Services
- elasticsearch Java API 之Delete By Query API
- python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
- react-redux
- 如何获取maven命令执行后成功与否的返回值
- 稳定不掉线,翀旭用飞鱼星解决高密Wi-Fi接入
- Mac使用U盘重装系统
- 计算机无法查看隐藏文件夹,电脑里的隐藏文件夹怎么显示不出来啊?
- Unity3D音效问题
- UnityWebGL引用4399的Api
- linux操作系统安装自定义分区,CentOS linux操作系统安装图文教程
- android控件翻书效果,android ViewPager实现滑动翻页效果实例代码
- Spring Security(安全框架)
- Css margin和pandding的上下左右