在普通的梯度下降过程中通常使用这个公式来更新参数,
,而学习率
的选择就显得非常的重要了,如上图所示,学习率选择过小,就会导致左图的情况,学习率过小在到达碗底平缓地区,导数值也非常小,从而导致损失函数移动的速度非常的慢,使得很难尽快的收敛,如果学习率设置过大,导致损失值来回震荡,很难取到最优值。
接下来,我们讲解一下,一个可以合理选择步长的方法 -Line Search,这种方法能够保证我们无论从图中哪一点开始梯度下降,都能保证收敛到局部最优值,这种性质也叫做全局收敛性(global convergence),请一定不要和收敛到全局最优解混淆,全局收敛性只是保证从任意的起点开始都能收敛到局部最优。根据泰勒公式我们有:
d是下降方向,我理解的是,它其实是没有梯度下降前的导数,而
是梯度下降后的新的损失的导数,如上公式所示,如果学习率
足够的小就能保证,
,因为梯度是负方向的,但是学习率又不能太小这样就导致以后损失下降速度过慢无法到达局部最优点,所以让我们选择合适的学习率
来使得下面的公式最小:
通过求导导数为零,就可以得到那个合适的学习率,上图8.3就是使用线性搜索的方法,得到的梯度下降的图形,我们可以看到上图下降的图形很像我们以前玩的贪吃蛇游戏中的贪吃蛇,横平竖直的爬行,至于为什么是这样,我在下面也将给出解释,因为我们要去上面的公式取得最小值,从而得到我们想要的学习率,就满足:对于这个优化一个必要的条件就是
,通过链式法则我们可以到其导数为
而
是梯度下降后的导数,所以我们为了达到导数为零这个条件,要么使得g=0即我们已经到达局部最优点(稳定点),要么我们需要
,即上次下降的方向与下次下降的方向互相垂直。
本文章参考于MLAPP中8.3.2,如有疑问,可以查看这本书中8.3.2节。