面临的问题:
内部协方差漂移(Internal Covariate Shift):隐藏层神经元的输入分布随着网络参数的迭代更新不断发生变化,违背了机器学习中数据IID的假设,使得上层神经元需要不断适应新的输入分布,增加了深层神经网络的训练难度。
解决的思路:
精简版图像白化(Whiten):对隐藏层每一个神经元的输入都进行标准化(标准正态分布),标准化之后再添加平移(reshift)和伸缩(rescale)因子,尊重底层神经元的学习结果,同时增加网络的非线性表达能力。
主流的Normalization方法:
(1)BN
BN属于纵向规范化,其规范化针对单个神经元进行。但规范化的参数是一个mini-batch的一阶统计量和二阶统计量,这就要求每一个mini-batch的统计量是整体统计量的近似估计,或者说每一个mini-batch彼此之间,以及和整体数据,都应该是同分布的。分布相差较小的mini-batch可以看作是为规范化操作引入了噪声,可以增强模型的鲁棒性;但如果每一个mini-batch跟整体分布差别很大,就会增加训练的难度。
因此BN比较适用的场景:(1)mini-batch比较大(2)数据分布比较接近(3)在进行训练之前赢做好充分的shuffle,否则效果会很差。
(2)LN
LN属于横向规范化,它考虑的是一层的所有维度,计算该层的均值和方差。LN针对单个样本进行,不依赖于其他数据,因此可以避免BN中mini-batch分布差别的影响。但对于LN而言,它是将一整层的神经元训练得到同一个变换,所有的输入都在同一个区间范围内,这样会降低模型的表达能力。
(3)WN
(4)CN