【问题标题】:Gradient descent convergence How to decide convergence?梯度下降收敛 如何决定收敛?
【发布时间】:2013-06-21 18:18:46
【问题描述】:

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

他们对收敛的定义是使用成本函数相对于迭代次数的图表,并观察图表何时变平。因此,我假设我会做以下事情:

if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
} 

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

if (change_in_coefficient_j > precisionvalue) {
          repeat gradient_descent_for_j
} 
...repeat for all coefficients

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

【问题讨论】:

  • 收敛始终是优化变量中的“没有变化”(或太小的变化),在大多数情况下应该直接反映您的成本。
  • 这里的精度值是多少?

标签: machine-learning gradient-descent


【解决方案1】:

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

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

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

因此,达到 GD 对您的目标函数做出非常小的变化的点称为收敛,这并不意味着它已经达到了最佳结果(但它确实非常接近,如果不是这样的话)。

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

grad(i) = 0.0001
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP

【讨论】:

  • 我接受你的回答,但你没有说清楚 GD 是成本函数还是系数。 Thomas Jungblut 的评论说,系数的收敛将反映在成本函数中,所以对我来说这听起来像“没关系”......不过感谢您的详细回答!
  • GD 是一种在凸函数中求最小值的通用算法。该函数可以是 ML 问题的成本函数或任何其他函数。
  • 我对此也有一些困惑,但仍然找不到明确的答案,因为到目前为止我发现的所有文章都错过了这一步(检查收敛性)。我们可以计算每一步的成本函数,看看它是否每一步都有很大的变化。但是计算成本函数也可能很昂贵。有随机梯度下降算法,我们可以使用部分数据来计算下降本身,但我们仍然需要所有数据来计算成本函数?我还不清楚。
【解决方案2】:

我想我理解你的问题。根据我的理解,GD函数是基于成本函数的。一直迭代直到代价函数收敛。

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

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

(if(change_in_costFunction > precision_value))

重复 GD;

【讨论】:

  • 什么是精度值?
猜你喜欢
  • 2015-02-18
  • 2019-01-31
  • 1970-01-01
  • 2021-11-16
  • 2020-04-28
  • 2015-05-27
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多