浅谈深度学习框架中常用的Normalization层
一、BN和IN的对比
假如现有6张图片x1、x2、x3、x4、x5、x6为一个batch,每张图片在CNN的某一卷积层有6个通道,也就是6个feature map。有关Batch Normalization与Instance Normalization的区别请看下图:
Batch Normalization
Instance Normalization
上图中,从C方向看过去是指一个个通道,从N看过去是一张张图片。每6个竖着排列的小正方体组成的长方体代表一张图片的一个feature map。蓝色的方块是一起进行Normalization的部分。
由此就可以很清楚的看出,Batch Normalization是指6张图片中的每一张图片的同一个通道一起进行Normalization操作。而Instance Normalization是指单张图片的单个通道单独进行Noramlization操作。
二、各自适用场景
BN适用于判别模型中,比如图片分类模型。因为BN注重对每个batch进行归一化,从而保证数据分布的一致性,而判别模型的结果正是取决于数据整体分布。但是BN对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布;
IN适用于生成模型中,比如图片风格迁移。因为图片生成的结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,在风格迁移中使用Instance Normalization不仅可以加速模型收敛,并且可以保持每个图像实例之间的独立。
三、BN与IN的公式
3.1 Batch Normalization:
3.2 Instance Normalization:
IN公式中,t代表图片的索引,i代表的是feature map的索引。
四、算法的过程
4.1 BN
Ø 沿着通道计算每个batch的均值u
Ø 沿着通道计算每个batch的方差σ^2
Ø 对x做归一化,x’=(x-u)/开根号(σ^2+ε)
Ø 加入缩放和平移变量γ和β ,归一化后的值,y=γx’+β
4.2 IN
Ø 沿着通道计算每张图的均值u
Ø 沿着通道计算每张图的方差σ^2
Ø 对x做归一化,x’=(x-u)/开根号(σ^2+ε)
Ø 加入缩放和平移变量γ和β ,归一化后的值,y=γx’+β
4.3 BN和IN公式对比
五、其他归一化操作
5.1 Layer Normalization
LN是指对同一张图片的同一层的所有通道进行Normalization操作。
5.2 Group Normalization
GN是指对同一张图片的同一层的某几个(不是全部)通道一起进行Normalization操作。这几个通道称为一个Group。
总结:关于深度学习框架中常用的Normalization方法,大多是基于选择不同的区域进行归一化操作,并且各自的适用场景是不同的,可以多多尝试,对比效果。
论文链接:
BN:https://arxiv.org/pdf/1502.03167.pdf
IN:https://arxiv.org/pdf/1607.08022.pdf