
118
|
第
4
章
array([[4.21509616],
[2.77011339]])
嘿,这不正是标准方程的发现么!梯度下降表现完美。如果使用了其他的学习率
eta 呢?图 4-8 展现了分别使用三种不同的学习率时,梯度下降的前十步(虚线表示
起 点 )。
图 4-8:各种学习率的梯度下降
左图的学习率太低:算法最终还是能找到解决方法,就是需要太长时间。中间图的学习
率看起来非常棒:几次迭代就收敛出了最终解。而右图的学习率太高:算法发散,直接
跳过了数据区域,并且每一步都离实际解决方案越来越远。
要找到合适的学习率,可以使用网格搜索(见第 2 章)。但是你可能需要限制迭代次数,
这样网格搜索可以淘汰掉那些收敛耗时太长的模型。
你可能会问,要怎么限制迭代次数呢?如果设置太低,算法可能在离最优解还很远时就
停了。但是如果设置得太高,模型达到最优解后,继续迭代则参数不再变化,又会浪费
时间。一个简单的办法是在开始时设置一个非常大的迭代次数,但是当梯度向量的值变
得很微小时中断算法
—
也就是当它的范数变得低于 (称为容差)时,因为这时梯度
下降已经(几乎)到达了最小值。
收敛速度
成本函数为凸函数,并且斜率没有陡峭的变化时(如 MSE 成本函数),具有固定学
习率的批量梯度下降最终会收敛到最佳解,但是你需要等待一段时间:它可以进行
O
(1/ ) 次迭代以在
的范围内达到最佳值,具体取决于成本函数的形状。换句话
说,如果将容差缩小为原来的 1/10(以得到更精确的解),算法将不得不运行 10 倍
的时间。