2013-06-25 84 views
5

我通过在线资源学习了梯度下降(即coursera上的机器学习)。然而,所提供的信息只表示重复梯度下降,直到收敛。渐变下降收敛如何确定收敛?

它们的收敛定义是使用成本函数相对于迭代次数的图形,并在图形变平时观察。因此,我认为我会做到以下几点:

if (change_in_costfunction > precisionvalue) { 
      repeat gradient_descent 
} 

另外,我在想,如果另一种方式来确定收敛观看系数法是真正的价值:

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

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

+2

趋同总是在你优化变量“没有变化”(或过小的变化),这在大多数情况下应该直接反映到您的成本上。 –

回答

5

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

enter image description here

如果我们继续拍照大理石使得没有明显的动作,你应该缩放图像:

enter image description here

我们还可以让拍照和动作将更加irrelevants。因此,达到GD使得目标函数发生非常小的变化的一个点称为收敛,这并不意味着它达到了最优结果(但它实际上相当接近,如果不是这样的话)。

精度值可以选择为您GD连续重复几乎相同的门槛:

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

我接受你的答案,但你没有说清楚,如果GD是成本函数或系数。托马斯Jungblut评论说,这是系数的收敛将反映在成本函数,所以这听起来像我'这并不重要'...感谢您的详细答案,但! –

+0

GD是用于在凸函数中查找最小值的一般算法。该功能可以是ML问题或任何其他功能的成本函数。 – jabaldonedo

+0

我对此也有一些疑惑,但仍然找不到明确的答案,因为此步骤(检查收敛性)在我发现的所有文章中都未找到明确答案。我们可以在每个步骤中计算成本函数,以查看它是否一步一步改变。但计算成本函数也可能很昂贵。有随机梯度下降算法,我们可以使用部分数据来计算下降本身,但我们仍然需要所有数据来计算成本函数?我还不清楚。 – Vadim