文章目录
数据归一化是深度学习数据预处理非常关键的步骤,可以起到统一量纲,防止小数据被吞噬等作用。
归一化:把所有数据都转化为[0,1]或者[-1,1]之间的数,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成网络预测误差较大。
一、归一化的含义
归一化的具体作用是归纳统一样本的统计分布性。归一化在 0 − 1 0-1 0−1 之间是统计的概率分布, 归一化在-1~ +1 之间是统计的坐标分布。
归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,且 sigmoid 函数的取值是 0 到 1 之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。
归一化是统一在 0 − 1 0-1 0−1 之间的统计概率分布, 当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从 而导致学习速度很慢。另外在数据中常存在奇异样本数据,奇异样本数据存在所引起的网络训练时间增加,并可能引起网络无法收敛。为了避免出现这种情况及后面数据处理的方便,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于 0 或与其均方差相比很小。
二、归一化的作用
- 1、为了后面数据处理的方便,归一化的确可以避免一些不必要的数值问题。
- 2、为了程序运行时收敛加快。
- 3、同一量纲。样本数据的评价标准不一样,需要对其量纲化,统一评价标准。这算是应用层面的需求。
- 4、避免神经元饱和。什么意思?就是当神经元的激活在接近 0 或者 1 时会饱和,在这些区域,梯度几乎为 0,这样,在反向传播过程中,局部梯度就会接近 0,这会有效地“杀死” 梯度。
- 5、保证输出数据中数值小的不被吞食。
三、归一化的类型
1、线性归一化
也称为最小-最大规范化、离散标准化,是对原始数据的线性变换,将数据值映射到 [ 0 , 1 ] [0, 1] [0,1]之间。
x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x'=\frac{x-min(x)}{max(x)-min(x)} x′=max(x)−min(x)x−min(x)
离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单方法。
适用范围:比较适用在数值比较集中的情况。
缺点:
- 1)如果 max 和 min 不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。如遇到超过目前属性 [ m i n , m a x ] [min,max] [min,max]取值范围的时候,会引起系统报错,需要重新确定min和max。
- 2)如果数值集中且某个数值很大,则规范化后各值接近于0,并且将会相差不大。(如 1, 1.2, 1.3, 1.4, 1.5, 1.6,10)这组数据。
2、零-均值规范化(z-score标准化
零-均值规范化也称标准差标准化,经过处理的数据的均值为0,标准差为1。转化公式为:
x ′ = x − μ δ x'=\frac{x-\mu}{\delta} x′=δx−μ
其中 μ \mu μ为原始数据的均值, δ \delta δ为原始数据的标准差,是当前用得最多的数据标准化方式。
标准差分数可以回答这样一个问题:"给定数据距离其均值多少个标准差"的问题,在均值之上的数据会得到一个正的标准化分数,反之会得到一个负的标准化分数。
3、小数定标规范化
通过移动属性值的小数位数,将属性值映射到[-1, 1]之间,移动的小数位数取决于属性值绝对值的最大值。转化公式为:
x ′ = x 1 0 k x'=\frac{x}{10^k} x′=10kx
4、非线性归一化
该方法包括 log、指数,正切等。
适用范围:经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函 数,将原始值进行映射。
四、归一化理解
1、归一化能提高求解最优解速度
两张图代表数据是否均一化的最优解寻解过程(圆圈可以理解为等高线)。左图表示未经归一化操作的寻解过程,右图表示经过归一化后的寻解过程。
当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;而右图对两个原始特征进行了归一化,其对应的等高线显得很圆, 在梯度下降进行求解时能较快的收敛。
因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收 敛甚至不能收敛。
2、3D 图解未归一化
例子:
<