2.1.3 正则化(归一化)的用处以及何时使用
正则化输入
假设我有一个训练集,它有两个输入特征x1和x2,。归一化输入需要两个步骤。第一步是零均值话(subtract mean),经过零均值话处理之后数据就如中间那个图分布的那样。
第二步是归一化方差,我们注意到x1的方差要比x2的方差大很多。所以进行如下操作:
之后图片就变成右边的样子了。
注意,我们这里实际上是x-0的平方,因为我们已经做了零均值处理了,所以我们的均值就是0,m是样本量,这样我们就计算出了方差。我们通常情况下归一化是使用
但是这里的均值是0,所以(2)就这样实现了归一化处理。
最后右图x1和x2的方差都变成了0。我们这里要提醒一下如果你用相同的归一化方式去处理了训练集,那么一定要用相同的方式去处理测试集
我们为什么要进行正则化输入呢
如果你使用了非归一化进行处理,最后cost函数就会像左图这样非常细长而狭窄。因为x1的取值范围可能是0到1000,而x2的取值范围可能只是0到1。结果会使得w1和w2的值范围变得非常不同。最后cost function就会像这样变得非常细长。
而你使用归一化处理后函数可能会变得比较均匀,就像右图所示。如果在左图使用梯度下降法运行,那么你必须使用一个非常小的学习率,那将会增加许多迭代次数。但如果函数是一个圆的球形轮廓,那么不论从哪个位置开始,梯度下降法都能更直接的找到最小值。可以在梯度下降法中使用较大步长。
因此,如果输入特征属于不同范围,那么归一化是十分重要的,但是如果特征值在比较近似的范围内,那么归一化就不那么重要了