训练深度神经网络,归一化输入特征可以加快学习。
假设一个训练集有两个输入特征x1,x2,一般需要两个步骤:
- 零均值
- 归一化方差
左图为原始数据分布图;
中间为零均值化后的分布图:
相当于移动训练集;
右图为归一化方差后的分布图:
在原始分布图中,特征x1的方差比特征x2的方差大得多,通过上式的归一化操作,特征x1和特征x2具有了相抵的方差,效果如右图所示。
为什么归一化可以加速收敛速度?
下面是代价函数的计算公式:
左上图为没有归一化之前代价函数的图像。如果特征图在不同的范围,假如特征x1取值范围从1到1000,特征x2的取值范围为从0到1,结果参数w1和w2值得范围或者比率将会非常不同,为直观显示,这里将数据轴标记为w和b,代价函数就有点像狭长得碗。此时,如果进行代价函数优化的话,在左上图中使用梯度下降法,必须使用一个非常小的值,这样的话,如左下图所示,需要经过多次迭代过程,才能找到最小值。
右上图为归一化之后代价函数的图像。归一化的特征将会在相似的范围内,不是从1到1000,0到1这样的范围,而是在-1到1范围内的相似误差,此时的函数是一个更圆的球形轮廓,那么无论从哪个未知开始,都能更直接的找到最小值。