组归一化(Group Normalization)的解释

看了网上最新的一些文章,来解释组归一化(Group Normalization)。
发现百家号的如下文章,解释的比较清晰。大家可去学习参考。
文章标题是“全面解读Group Normalization”,网址如下
http://baijiahao.baidu.com/s?id=1596620335120928574&wfr=spider&for=pc
现把主要信息列举出来,便于今后学习。

Group Normalization是一种新的深度学习归一化方式,可以替代BN。
BN是深度学习中常使用的归一化方法,在提升训练以及收敛速度上发挥了重大的作用,是深度学习上里程碑式的工作。
BN,全名是Batch Normalization。
BN是一种归一化方式,而且是以batch的维度做归一化,依赖batch,过小的batch size会导致其性能下降,一般来说每GPU上batch设为32最合适。

BN的问题,主要是在batch这个维度上进行归一化,但这个维度并不是固定不变的,比如训练和测试时一般不一样,一般都是训练的时候在训练集上通过滑动平均预先计算好平均-mean,和方差-variance参数。而在测试的时候,不再计算这些值,而是直接调用这些预计算好的来用,但,当训练数据和测试数据分布有差别是时,训练时上预计算好的数据并不能代表测试数据,这就导致在训练,验证,测试这三个阶段存在不一致。

GN的归一化方式避开了batch size对模型的影响,特征的group归一化同样可以解决$Internal$ $Covariate$ $Shift$的问题,并取得较好的效果。

GN与BN的优劣比较:
1、BN会受到batchsize大小的影响。如果batchsize太小,算出的均值和方差就会不准确,如果太大,显存又可能不够用。
2、GN算的是channel方向每个group的均值和方差,和batchsize没关系,自然就不受batchsize大小的约束。
随着batchsize的减小,GN的表现基本不受影响,而BN的性能却越来越差。

BN,LN,IN,GN从学术化上解释差异:
BatchNorm:batch方向做归一化,算N*H*W的均值
LayerNorm:channel方向做归一化,算C*H*W的均值
InstanceNorm:一个channel内做归一化,算H*W的均值
GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)*H*W的均值

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值