梯度下降法的高效使用

1. 特征缩放(Feature Scaling)

  有多维特征的时候,当这些特征都具有相近的尺度时,梯度下降算法能更快收敛。

  例如有两个特征,他们的尺度分别为0 - 2000 和 0 - 5,那么他们的代价函数等高线图如下:

  可以看出图像显得很扁,梯度下降算法往往需要很多次的迭代才能收敛。

  解决方案:将所有特征的尺度都尽量缩放到-1~1之间。(根据实际情况,接近-1,1即可,切不可相差太大)

  例:

 

  同时,我们一般也会做均值归一化,最简单的方法如下:

  

  其中,μn是平均值,Sn一般取该特征值的范围(max - min)

  如:x1 = (x1 - 1000) / 2000,x2 = (x2 - 2) / 5

  区间大致为-0.5~0.5.

 

2. 学习速率的选取

  观察梯度下降算法的收敛情况我们可以通过绘制迭代次数和代价函数的图来完成。比如:

  

  梯度下降算法的每次迭代受到学习率 影响,如果α 过小,则达到收敛所需的迭代次数会非常高;如果学习率 α 过大,可能会越过局部最小值导致无法收敛甚至发散。

  

  以上两种情况均属于α 过大,我们应该取更小的α 。

 

  通常我们会通过实验选择一个合适的学习率。一般可以隔十倍取,如:0.001, 0.01, 0.1, 1;也可以隔三倍取:0.001,0.003,0.01,0.03,0.1,0.3,1;

 

posted on 2017-07-14 17:31  J_K_Guo  阅读(311)  评论(0编辑  收藏  举报