0.概述
- 一般而言,样本的原始特征中的每一维特征由于来源以及度量单位不同,其特征取值的分布范围往往差异很大。当我们计算不同样本之间的欧氏距离时,取值范围大的特征会起到主导作用。这样,对于基于相似度比较的机器学习方法(比如最近邻分类器KNN),必须先对样本进行预处理,将各个维度的特征归一化到同一个取值区间,并且消除不同特征之间的相关性,才能获得比较理想的结果。虽然神经网络可以通过参数的调整来适应不同特征的取值范围,但是会导致训练效率比较低。
- 假设一个只有一层的网络 $y=\tanh \left(w{1} x{1}+w{2} x{2}+b\right)$,其中$x{1} \in[0,10]$,$x{2} \in[0,1]$。因为tanh函数的导数在区间 [−2, 2]上是敏感的,其余地方的导数接近于 0。因此,如果 $w{1} x{1}+w{2} x{2}+b$过大或过小,都会导致梯度过小,难以训练。为了提高训练效率,我们需要使$w{1} x{1}+w{2} x{2}+b$在 [−2, 2]区间,我们需要将w1设得小一点,比如在 [−0.1,0.1]之间。可以想象,如果数据维数很多时,我们很难这样精心去选择每一个参数。因此,如果每一个特征的取值范围都在相似的区间,比如 [0, 1]或者 [−1, 1],我们就不太需要区别对待每一个参数,减少人工干预。
- 当不同输入特征的取值范围差异比较大时,梯度下降法的效率也会受到影响。下图给出了数据归一化对梯度的影响。其中,图a为未归一化数据的等高线图。取值范围不同会造成在大多数位置上的梯度方向并不是最优的搜索方向。当使用梯度下降法寻求最优解时,会导致需要很多次迭代才能收敛。如果我们把数据归一化为取值范围相同,如图b所示,大部分位置的梯度方向近似于最优搜索方向。这样,在梯度下降求解时,每一步梯度的方向都基本指向最小值,训练效率会大大提高。
1.常用的归一化方法
- 1.1 缩放归一化:通过缩放将每一个特征的取值范围归一到 [0, 1]或 [−1, 1]之间。假设有 N 个样本$\left{\mathbf{x}^{(n)}\right}_{n=1}^{N}$,对每一维特征x,其中,min(x)和max(x)分别是特征x在所有样本上的最小值和最大值。
- 1.2 标准归一化:将每一个维特征都处理为符合标准正态分布(均值为 0,标准差为 1)。假设有 N 个样本$\left{\mathbf{x}^{(n)}\right}_{n=1}^{N}$,对每一维特征x,先计算它的均值和标准差:然后,将特征$x^{(n)}$减去均值,并除以标准差,得到新的特征$\hat{x}^{(n)}$。这里$\sigma$不能为0,如果标准差为0,则说明这一维度的特征没有任务的区分性,可以直接删除。在标准归一化之后,每一维特征都服从标准正态分布。
- 1.3 白化:是一种重要的预处理方法,用来降低输入数据特征之间的冗余性。输入数据经过白化处理后,特征之间相关性较低,并且所有特征具有相同的方差。白化的一个主要实现方式是使用主成分分析PCA方法去除掉各个成分之间的相关性。