1 归一化方法
1.1 线性函数归一化
对原始数据进行归一化,将其取值范围映射到[0,1]之间,实现对原始数据的等比缩放。
计算公式:
X
n
o
r
m
=
X
−
X
m
i
n
X
m
a
x
−
X
m
i
n
X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}
Xnorm=Xmax−XminX−Xmin
1.2 零均值归一化
将原始数据映射到均值为0、标准差为1的分布上。
计算公式:
X
n
o
r
m
=
X
−
u
σ
X_{norm} = \frac{X - u}{\sigma}
Xnorm=σX−u
1.3 逐样本的均值消减
在每个样本上减去数据的统计平均值,用于平稳的数据(即数据每一个维度的统计都服从相同分布),对图像一般只用在灰度图上,也就是对图像的各像素点减去其均值。
2 归一化的作用
归一化的目的是希望输入数据的不同维度的特征具有相近的取值范围,从而能够更快的通过梯度下降找到最优解。
上图,左图是使用未归一化的原始数据进行梯度下降时的收敛过程,因为两个维度的数据
(
x
1
,
x
2
)
(x_1,x_2)
(x1,x2)的取值范围不同,整个等高线呈现狭长型,梯度下降的收敛过程中出现了多次的横向波动,收敛速度较慢;右图是对输入数据进行归一化处理后的数据进行梯度下降的收敛过程,现在函数的等高线为圆形,其梯度下降收敛更快,更容易找到最优解。
3 图像数据归一化
CNN处理图像数据时,各个像素点的取值范围都是0 - 255,已经满足了第二节的要求,那么还为什么还需要对输入图像进行归一化处理?
按照1.3节所述,灰度图像是是’‘平稳’'的(即数据每一个维度的统计都服从相同分布),那么你可以考虑在每个样本上减去数据的统计平均值(逐样本计算)。这种归一化可以移除图像的平均亮度值(intensity)。这是因为很多情况下我们对图像的照度并不感兴趣,而更多地关注其内容,这时对每个数据点移除像素的均值不改变图像的内容。
但彩色图像并不是“平稳”的,具体来说,是因为不同色彩通道中的像素并不都存在平稳特性。彩色图像的常见归一化处理过程,一般都是在3个通道上分别减去127.5,然后再除以128。这样做的目的是使得图像的三个通道像素值的取值范围变到[-1,1]之间。
彩色图像这种归一化方式有两个好处:
- 避免了反向传播时梯度过大
反向传播时,loss对一个隐藏层的梯度如上图所示,和输入数据x正相关。如果不对输入数据做归一化,则会造成梯度过大,在最优值左右处震荡,无法收敛到最优解。当然可以使用较小的学习率减小震荡,但又会造成收敛速度过慢。 - 避免了反向传播时第一个隐藏层各神经元的梯度同方向变化
如上面的公式所示,第一个隐藏层的各神经元的梯度和输入x同符号,如果输入数据全为正,那么第一个隐藏层的各神经元的梯度同方向,这样不利于模型收敛到最优解,会造成收敛速度较慢。
综上,彩色图像的归一化,通过减127.5,使得输入数据各像素点的值有正有负,通过除以128使得输入数据的取值范围变到了[-1,1]之间,从而可以以较快的速度收敛到最优解。
4 什么情况下需要进行归一化处理
实际应用中,通过梯度下降法求解的模型,通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络。
但是对于决策树模型并不适用,决策树在进行节点分裂时主要依据数据集D关于各维度特征的信息增益比,而信息增益比与是否归一化无关,归一化不会改变样本在各特征上的信息增益。