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)