梯度下降的特征缩放

1.特征缩放

  • 确保不同特征的特征值都处在一个相近的范围,这样的梯度下降法就能更快的收敛

假如有两个特征,一个是房子的面积 x1,一个是房间数量
0< x1<2000 feet2,一个特征是房间数量 x2,1<=x2<=5

x1 远远大于 x2,故轮廓图如下

由于 x1和x2的范围相差太大,轮廓图是一个又瘦又高的椭圆型轮廓图

梯度下降的特征缩放

寻找全局最小的路径将会是一条曲折的路径

梯度下降的特征缩放

而如果用这个代价函数来运行梯度下降的话,要得梯度值,最终可能需要花很长一段时间并且可能来回波动,然后经过很长时间才能收敛到全局最小值。

  • 可以想象如果这两个特征值方范围相差越大,轮廓图越纤细,梯度下降的过程更缓慢

    在这样的情况下,一种有效的进行特征缩放的方法是:

    梯度下降的特征缩放

两个特质之间的范围差距缩小了,这样的轮廓图更加圆,梯度下降算法就会找到一条更加捷径的路径通向全局最小。

  • 因此 通过特征缩放,通过“消耗掉”这些值范围。在这个例子中,我们把 x1,x2都缩小到(0,1)之间

  • 更一般的,执行特征缩放的时候,我们经常是将特征的取值约束到 -1 到 1 的范围内,不一定是(-1,1)

    之间,如(0,3)或(-2,0) 这些都非常接近

    如果特征值的范围缩小在(-100,100)或 (-0-0001,0.00001)则会认为这个特征不太好

2.判断梯度代价函数是否收敛

  • 画出代价函数迭代步数增加的变化曲线

通常,看这类曲线来试着判断梯度下降算法是否已经收敛

梯度下降的特征缩放

  • 如果代价函数的下降小于一个很小的值 ξ 就认为已经收敛,但选择一个合适的阈值 ξ 是相当困难的

2.1代价函数 J(Θ) 随迭代步数的变化曲线情况

梯度下降的特征缩放

梯度下降的特征缩放

如图所示:梯度下降算法没有正常工作

而这样的曲线通常意味着你应该使用较小的 学习率α

2.2 总结

学习率α太小会使迭代缓慢,学习率太大会使每次迭代不一定是减小

学习率可以尝试取:

… 0.001,0.003,0.01,0.03,0.1,0.3,1, 1x3 …

相关文章: