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

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

if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
}

另外,我想知道确定收敛性的另一种方法是否是观察系数方法的真实值(value):
if (change_in_coefficient_j > precisionvalue) {
          repeat gradient_descent_for_j
}
...repeat for all coefficients

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

最佳答案

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

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

我们可以继续拍照,而 Action 将变得无关紧要。

因此,达到GD在目标函数中进行很小变化的地步称为收敛,这并不意味着它已经达到了最佳结果(但是,即使没有实现,它实际上也相当接近)。

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

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

关于machine-learning - 梯度下降收敛如何确定收敛?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17289082/

10-12 16:39