文章目录
引用
知乎:https://zhuanlan.zhihu.com/p/87117010
一、Batch Normalization
1.1 什么是Batch Normalization?
顾名思义,batch normalization,就是“批规范化”。
-
BN的计算就是把每个通道的NHW单独拿出来归一化处理.
-
针对每个channel我们都有一组y,β,所以可学习的参数为2*C.
-
当batch size越小,BN的表现效果也越不好,因为计算过程中所得到的均值和方差不能代表全局.
-
一批批的去标准化图片数据, 依赖批量化的数据。
1.2 Batch Norm的原因
神经网络学习过程的本质就是为了学习数据分布,如果我们没有做归一化处理,那么每一批次训练数据的分布不一样, 从大的方向上看,神经网络则需要在这多个分布中找到平衡点,从小的方向上看,由于每层网络输入数据分布在不断变化,这也会导致每层网络在找平衡点,显然,神经网络就很难收敛了。
如果我们只是对输入的数据进行归一化处理(比如将输入的图像除以255,将其归到0到1之间),只能保证输入层数据分布是一样的,并不能保证每层网络输入数据分布是一样的,所以也需要在神经网络的中间层加入归一化处理。
1.3 Batch Norm的优点
-
可以使学习快速进行(可以增大学习率)
-
减弱对初始化权重的强依赖性
-
防止梯度弥散/爆炸
-
保持隐藏层中数值的均值、方差不变,让数值更稳定,为后面网络提供坚实的基础。
1.4 其它标准化方法
每个子图显示一个特征图张量,N为批处理轴,C为通道轴,(H;W)作 为空间轴。蓝色的像素由相同的均值和方差归一化,通过聚合这些像素的值来计算。
(1)Layer Norm
-
LN的计算就是把每个CHW单独拿出来归一化处理,不受batchsize的影响。
-
常用在RNN网络,但如果输入的特征区别很大,那么就不建议使用它做归一化处理。
-
一张张图片去标准化图片数据.
(2)Instance Norm
-
LN的计算就是把每个CHW单独拿出来归一化处理,不受batchsize的影响。
-
常用在RNN网络,但如果输入的特征区别很大,那么就不建议使用它做归一化处理。
-
一张张图片去标准化图片数据
.(3)Group Norm
-
GN的计算就是先把通道C分成G组,然后把每个gHW单独拿出来归一化处理,最后把G组归一化之后的数据合并成CHW
-
GN介于LN和IN之间,当然可以说LN和IN就是GN的特例,比如G的大小为1或者为C.
-
将通道分成组去标准化数据。
(4)Switchable Normalization
- 将BN、LN、IN结合,赋予权重,让网络自己去学习归一化
层应该使用什么方法 - 集万千宠爱于一身,但训练复杂.