每天十分钟机器学习之九:梯度下降算法之二

本讲中我们更深入研究一下梯度下降算法,更直观地感受一下这个算法是做什么的,以及梯度下降算法的更新过程有什么意义。梯度下降算法如下图所示,对θ赋值,使得J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。

如下图求导的目的,基本上可以说取这个红点的切线,就是这样一条红色的直线,刚好与函数相切于这一点,让我们看看这条红色直线的斜率,就是这条刚好与函数曲线相切的这条直线,它有正导数,因此,我得到的新的θ1,θ1更新后减去一个正数乘以α。

接下来分析α情况,如果α太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果α太小的话,可能会很慢因为它会一点点挪动,它会需要很多步才能到达全局最低点。

如果α太大,那么梯度下降法可能会越过最低点,在最低点来回震荡,导致无法收敛。

通常可以考虑尝试些学习率:0.01,0.03,0.1,0.3,1,3,10

还有一种特殊情况,就是将θ1初始化在局部最低点,它已经在一个局部的最优处或局部最低点,那按照梯度下降算法会发生什么呢。

因为局部最优点的导数将等于零(看上面第一个图导数的意义),这意味着你已经在局部最优点,θ1不再改变,也就是新的θ1等于原来的θ1,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率α保持不变时,梯度下降也可以收敛到局部最低点。

在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小α。

这就是梯度下降算法,你可以用它来最小化任何代价函数J。

祝您的机器学习之旅愉快!

本文参考资料:斯坦福吴恩达老师的机器学习讲义,图片直接来自讲义;

往期回归

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181109G1MSRW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券