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

Ter*_*how 7 machine-learning gradient-descent

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

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

if (change_in_costfunction > precisionvalue) {
          repeat gradient_descent
} 
Run Code Online (Sandbox Code Playgroud)

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

if (change_in_coefficient_j > precisionvalue) {
          repeat gradient_descent_for_j
} 
...repeat for all coefficients
Run Code Online (Sandbox Code Playgroud)

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

jab*_*edo 10

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

在此输入图像描述

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

在此输入图像描述

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

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

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

grad(i) = 0.0001
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP
Run Code Online (Sandbox Code Playgroud)