最近收到很多同学和老师的私信,找我要梯度下降的图文和动画。现在我将其发布到B站,方便大家自取。(创作不易,引用时注明来源马同学,感激不尽!)
同学们大家好,今天我们来学习梯度下降法
用一句话解释,梯度下降法就是快速找到最低点的一个方法。比如在山上有一个球,经过几次运动后,就会来到谷底附近。
要完成这个过程,我们需要回答三个问题:
假设有一蓝点在曲线上,要运动到最低点,这个过程大概是这样的
这是个一元函数,自变量有两个运动方向,一个朝左,一个朝右。
朝右边运动,越走越高,函数值在增加,这个方向被称为梯度方向。
朝左边运动,越走越低,函数值在减小,这个方向被称为梯度方向的反方向。显然,要走到最低处,我们应该选择梯度的反方向。
走了一次后,来到一个新的位置,这时我们需要又一次对方向进行判断,而同样的,这里的方向也有梯度方向,和梯度的反方向。
继续朝梯度的反方向移动,重复之前的逻辑,不断朝梯度反方向移动,运气好,我们就能走到最低点附近。
也就是说,要到最低点附近,我们需要朝着梯度的反方向运动。
刚刚说“运气好”,因为要达到目的,我们还要考虑,每一次走多远。因为这个要从计算结果中反应,所以这里给出一些具体数值。设 ,起始点为 这个位置
这样
根据前面讲的,下一个移动的位置在梯度的反方向,那么
也就是第一次移动,移动到了 的位置
第二次移动,也是梯度的反方向
计算后得到,这一次移动到了 这个位置
同样的方法,计算出
可以看到,虽然一直在移动,但始终在 和 点振荡,没有降到最低点。
为此,我们需要一个参数来控制移动的距离,这个参数被称为学习率。
3.1 学习率
将用 来表示,则迭代的式子可以表示为
显然,刚刚来回振荡时, 为1
如果将学习率继续调大,比如调大到 ,多次迭代后,不仅不会降到最低点,甚至还会越走越高
而如果将学习率调低到一个较小值,比如 。这时,每次迭代后,位置确实是在降低,但降低的幅度比较小,迭代很多次都没到达谷底附近。
而如果将学习率调为 ,迭代10次后,基本就能降到谷底了。
从这里,我们也看出了,要完成梯度下降,需要选择合适的学习率
最后,我们来看看终止条件,为此首先计算出 时,每次迭代后的梯度值
可以看到,每次迭代后,梯度值都在不断的下降。这也是将这个方法,命名为梯度下降的原因。而我们知道梯度为0时的位置,就是最低点的位置,因此选择较小的梯度值作为终止条件是比较自然的。
比如,我们希望最后的梯度值小于等于 ,那么就只要迭代 次
小于等于 ,就需要迭代19次
只要学习率选择的合适,梯度就可以下降到任意小。这是有理论支撑的,关于这个的证明,感兴趣的同学可以查看我们的课程里的证明。有了这个理论保证,我们就可以选择梯度值当做终止条件了。
三个问题都解答完了,最后我们来看个例子。设函数 ,起始位置 ,在图中用红点表示。
选取学习率为 ,则第一次迭代后的位置
根据迭代公式
可以计算出每次迭代后的位置
将终止条件设为梯度值小于等于 ,则迭代到第16次时
小于0.1,任务完成
以上内容选自马同学图解数学系列课程,想要系统学习,推荐加入:
到此这篇随机梯度上升和随机梯度下降(随机梯度下降的随机)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/16608.html