Normalization vs. Standardization vs. Batch Normalization

Normalization标准化和Standardization归一化,作为ML常用的tricks,大家再熟悉不过,但大家往往只知道基本的计算公式,且没深入了解过,甚至不知道标准化与归一化的区别,也不知道其具体作用,原理等,其次,存在为为什么使用Batch Normalization替代Normallization等问题。于是,我做了一定功课,及归纳如下。

一:Normalization归一化和Standardization标准化的定义

以上为众所周知的数学公式定义,我们看国外对Normalization及Standardization的定义如下:

从上文可得出,归一化是将数据缩放止0-1之间,而标准化是将数据分布转换成均值为0,方差为1的数据分布。

除此之外,我找到Google对Normalization的定义如下:

从Google定义可知,Normalization是为了将数据的数值列的数值更改至一个公共尺度,而不会改变数值之间的距离差异。这句话很重要,这是让我们对Normalization的更全面的理解。按我的理解为,Normalization是将各个特征的数值都缩放止一个固定的范围内,从而消除各个特征之间存在的数值差异,但对于单个特征本身而言,并不会改变这个特征里面各个数值的几何距离。从上面定义也可得出,Normalization及Standardization并不仅仅只限于上面两种方法,只是上文两种方法是我们最常使用的方法罢了。

 

二:Normalization归一化和Standardization标准化的区别

(1).归一化是标准化的一种方式,本质上,归一化跟标准化在数学计算上是不存在区别的,都为减去某个数值之后再去除以某个数值,且,归一化及标准化,从某个特征来看,是不会改变单个特征内的数值之间的几何距离。因此,是不会改变特征的数据分布。但从整个数据集来看,所有特征构成的数据,样本之间的几何距离是发生改变的,整个数据集的数据分布是发生改变了的。

(2).归一化目的是将数据缩放至某个区间,而标准化是将各个特征的数据分布都转换成到一个相似的数据分布,都是为了消除各个特征对目标函数的影响的不一致。值得注意的是,只有数据分布本身接近正态分布,标准化后,才可以接近标准的正态分布。

(3).归一化使用到数据的最小值及最大值,而标准化是使用到数据的均值及方差,当然这个只限于上文提到的两种方法。

(4).对于归一化,不是每个样本数据都会对结果产生影响。而标准化,每个样本数据都会产生被参照到,都会产生影响。

 

三:Normalization归一化和Standardization标准化的选择

(1).当对数据的输出有要求,且不存在极端值,异常值时,可使用归一化。

(2).当数据不属于高斯分布,可考虑使用归一化。

(3).当数据存在异常值时,可考虑使用标准化

 

四:Normalization归一化和Standardization标准化的作用及原理:

归一化跟标准化可以消除特征的量纲,既使的各个特征的数值范围接近,在计算loss时,不会因为某个特征的数值过大,导致其产生的loss过大,而忽略了某些特征对输出的影响,以便模型的快速拟合,也可以从而提高模型的准确度。

 

五:Batch Normalization的作用及原理:

Batch Normalization作为DL神器,被各个Net所采用,Batch Normalization对比Normalization有以下优点:

(1).训练过程中,使每次数据输入都具有相同的的数据分布,解决‘Internal covariate Shift’问题,从而加快模型的拟合。 

(2).使用min_batch,对比全部数据的均值方差,等于给模型加入噪声,防止模型的过拟合,类似于dropout ,提高模型的鲁棒性。

(3).适应sigmoid函数,因为数据经过sigmoid激活函数后,输出接近两端的极值,梯度接近0,于是使用批归一化,可以将数据分布拉回正态分布。

 

六:Batch Normalization的生效的真实原因: 

上一条我写到Batch Normalization可以解决‘Internal covariate Shift’问题,简称'ICS'问题,以达到加快模型拟合的效果,然而这个观点使提出BN的作者自己提出的,经过最近的一些研究,ICS问题并非导致深层网络难以训练的根本原因,而BN也同时解决不了ICS问题,且经过证明,在经过BN之后的输出层之后的数据,假如噪声,模仿ICS现象,并不妨碍BN的优秀表现。

经过研究,在深度网络中,存在大量的非线性函数,损失曲面形态将会异常复杂,而我们目的便是在这曲面中找到全局最优,然而,因为曲面存在坑坑洼洼,很容易陷入局部最优。

而当网络加入BN之后,可以使网络的参数重组,对于非线性非凸问题复杂的损失曲面有很好的平滑作用,通过L-Lipschitz函数来评估损失曲面的平滑程度,L-Lipschitz函数定义如下:

从公式中不难看出,L越小,代表曲面越平滑,最终的实验结果如下:

可见,经过BN之后,L的值明显降低,可见,BN通过参数重整确实起到了平滑损失曲面及梯度的作用。

 

参考文档:

https://www.analyticsvidhya.com/blog/2020/04/feature-scaling-machine-learning-normalization-standardization/

https://www.zhihu.com/question/20455227

https://zhuanlan.zhihu.com/p/43200897

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿也可以很哲学

让我尝下打赏的味道吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值