学习率,站在数学的角度去理解,就是步长,它决定了每次迭代过程中沿着梯度方向移动的距离。如果步长很大,那么算法就会陷入局部最优,很难收敛;步长太小,则算法将会花费大量的时间,才能收敛,速度很慢。所以学习率的选择很大程度的决定了算法的性能。
但如何调整学习率呢?应该包握住这个大方向:在斜率大的地方使用小的学习率,在斜率小的地方使用大的学习率。
接下来谈谈学习率如何表示:记h(a)=f(xk+adk),a>0,其中当前点为xk,当前的搜素方向为dk,a为学习率。
对h(a)关于a求导,得到∇ h(a)=∇ f ( xk +adk ) Tdk,因为梯度下降是寻找f(x)的最小值,则令∇ h(a)=∇ f ( xk +adk ) Tdk
=0,下降方向可以选择负梯度方向,从而h(0)的导数小于0,如果能够找到足够大的a,使得h(a)的导数大于0,则必存在一个a*,使得h`(a*)=0,其中a*即为要找的学习率。
常用的方法有:线性搜索,回溯线性搜索
听完邹博老师讲完梯度下降后,自己总结一下,希望有用!