数据归一化(概率模型不需要)

目的就是将数据的所有特征都映射到同一尺度上,这样可以避免由于量纲的不同使数据的某些特征形成主导作用。

优点:加快了梯度下降求最优解的速度(椭圆、圆);有可能提高精度(原始数据可能突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用)

方法:最大最小标准化(图像)

机器学习标准化的优势 标准化机械化_机器学习标准化的优势

、z-score标准化(数据分布近似高斯分布)

机器学习标准化的优势 标准化机械化_数据分布_02

、非线性归一化(数据分化比较大)如log、L2范数

神经网络标准化

提出的原因:

标准化的提出,就是要解决在训练过程中,中间层数据分布发生改变的情况。

深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训好模型,我们需要非常谨慎地去设定学习率、初始化权重、以及尽可能细致的参数更新策略。

机器学习标准化的优势 标准化机械化_机器学习标准化的优势_03

Batch Normalization(BN):

BN在batch的维度上norm,归一化维度为[N,H,W],对batch中对应的channel归一化。

机器学习标准化的优势 标准化机械化_机器学习标准化的优势_04

在网络中间层数据做一个归一化处理

变换重构,引入了可学习参数γ(缩放)、β(平移),提高网络的表达能力(不加此参数的话,中间层的输出将被限制在标准正态分布下),即

机器学习标准化的优势 标准化机械化_数据分布_05

实现:

 

机器学习标准化的优势 标准化机械化_机器学习标准化的优势_06

机器学习标准化的优势 标准化机械化_数据_07

优点:

机器学习标准化的优势 标准化机械化_归一化_08

缺点:

  • BN特别依赖Batch Size;当Batch size很小的适合,BN的效果就非常不理想了。在很多情况下,Batch size大不了,因为你GPU的显存不够。
  • BN对处理序列化数据的网络比如RNN是不太适用的。
  • BN只在训练的时候用,inference的时候不会用到,因为inference的输入不是批量输入。这也不一定是BN的缺点,但这是BN的特点。

Layer Normalization(LN)

LN的操作类似于将BN做了一个“转置”,对同一层网络的输出做一个标准化。注意,同一层的输出是单个图片的输出,比如对于一个batch为32的神经网络训练,会有32个均值和方差被得出,每个均值和方差都是由单个图片的所有channel之间做一个标准化。这么操作,就使得LN不受batch size的影响。同时,LN可以很好地用到序列型网络如RNN中。同时,LR在训练过程和inference过程都会有,这就是和BN很大的差别了。但LN的性能不如BN。 

Instance Normalization(IN):

图像风格化中,生成结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。

Group Normalization(GN):

主要是针对BN对小batchsize效果差,GN将channel方向分group,然后每个group内做归一化,算(C//G)*H*W的均值,这样与batchsize无关,不受其约束。