看了网上最新的一些文章,来解释组归一化(Group Normalization)。
发现百家号的如下文章,解释的比较清晰。大家可去学习参考。
文章标题是“全面解读Group Normalization”,网址如下
http://baijiahao.baidu.com/s?id=1596620335120928574&wfr=spider&for=pc
发现百家号的如下文章,解释的比较清晰。大家可去学习参考。
文章标题是“全面解读Group Normalization”,网址如下
http://baijiahao.baidu.com/s?id=1596620335120928574&wfr=spider&for=pc
现把主要信息列举出来,便于今后学习。
Group Normalization是一种新的深度学习归一化方式,可以替代BN。
BN是深度学习中常使用的归一化方法,在提升训练以及收敛速度上发挥了重大的作用,是深度学习上里程碑式的工作。
BN是深度学习中常使用的归一化方法,在提升训练以及收敛速度上发挥了重大的作用,是深度学习上里程碑式的工作。
BN,全名是Batch Normalization。
BN是一种归一化方式,而且是以batch的维度做归一化,依赖batch,过小的batch size会导致其性能下降,一般来说每GPU上batch设为32最合适。
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的性能却越来越差。
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的均值
LayerNorm:channel方向做归一化,算C*H*W的均值
InstanceNorm:一个channel内做归一化,算H*W的均值
GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)*H*W的均值