梯度下降收敛如何决定收敛?

时间:2013-06-25 04:16:07

标签: machine-learning gradient-descent

我通过在线资源(即在课程中学习机器学习)学习了梯度下降。然而,所提供的信息仅表示重复梯度下降直到收敛为止。

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

if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
} 

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

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

基于成本函数或系数的收敛也是如此?我们如何确定精度值?它应该是系数或总成本函数的百分比吗?

2 个答案:

答案 0 :(得分:8)

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

enter image description here

如果我们继续拍照,大理石会产生不明显的动作,你应该放大图像:

enter image description here

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

因此,达到GD在目标函数中进行非常小的变化的点称为收敛,这并不意味着它已经达到了最佳结果(但它实际上非常接近,如果没有的话)。

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

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

答案 1 :(得分:0)

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

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

所以,我想你的第一个方法是你需要的:

(if(change_in_costFunction&gt; precision_value))

重复GD;