11

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

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

if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
} 

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

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

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

4

2 回答 2

15

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

在此处输入图像描述

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

在此处输入图像描述

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

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

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

grad(i) = 0.0001
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP
于 2013-06-25T11:16:46.157 回答
0

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

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

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

(if(change_in_costFunction >precision_value))

重复GD;

于 2018-03-17T21:01:08.973 回答