首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >梯度下降收敛性如何判定收敛性?

梯度下降收敛性如何判定收敛性?
EN

Stack Overflow用户
提问于 2013-06-25 12:16:07
回答 2查看 11.1K关注 0票数 10

我通过在线资源(即coursera的机器学习)学习了梯度下降。然而,提供的信息只说重复梯度下降,直到它收敛。

他们对收敛的定义是使用相对于迭代次数的成本函数图,并观察该图何时变平。因此,我假设我将执行以下操作:

代码语言:javascript
复制
if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
} 

或者,我想知道是否另一种确定收敛性的方法是观察系数接近它的真实值:

代码语言:javascript
复制
if (change_in_coefficient_j > precisionvalue) {
          repeat gradient_descent_for_j
} 
...repeat for all coefficients

那么收敛是基于代价函数还是基于系数呢?我们如何确定精确值?它应该是系数的百分比还是总成本函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 19:16:46

你可以想象梯度下降(GD)是如何工作的,想着你把大理石扔进碗里,然后开始拍照。大理石会摆动,直到摩擦力使其在底部停止。现在假设你所处的环境中,摩擦力非常小,大理石需要很长时间才能完全停止,所以我们可以假设,当振荡足够小时,大理石已经到达底部(尽管它可以继续振荡)。在下图中,您可以看到GD的前八个步骤(大理石的照片)。

如果我们继续拍摄大理石没有明显移动的照片,您应该缩放图像:

我们可以继续拍照,动作会变得更加无关紧要。

因此,达到GD对目标函数进行非常小的更改的点被称为收敛,这并不意味着它已经达到了最优结果(但它确实非常接近,如果不是这样的话)。

可以选择精度值作为阈值,在该阈值中,GD的连续迭代几乎相同:

代码语言:javascript
复制
grad(i) = 0.0001
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP
票数 14
EN

Stack Overflow用户

发布于 2018-03-18 05:01:09

我想我明白你的问题了。根据我的理解,GD函数是基于成本函数的。它不断迭代,直到代价函数收敛。

想象一下,绘制成本函数(y轴)与GD(x轴)迭代次数的关系图。现在,如果GD正常工作,曲线是向上凹陷的,或者是递减的(类似于1/x)。因为,曲线是递减的,成本函数的递减变得越来越小,然后出现曲线几乎平坦的点。在这一点上,我们说GD或多或少是收敛的(同样,成本函数比precision_value减少了一个单位)。

所以,我希望你的第一种方法是你需要的:

(if(change_in_costFunction > precision_value))

重复GD;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17289082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档