梯度下降的收敛性 如何判断收敛?

我通过在线资源(特别是Coursera上的机器学习课程)学习了梯度下降。然而,提供的信息只提到要重复进行梯度下降直到它收敛。

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

if (change_in_costfunction > precisionvalue) {          repeat gradient_descent} 

另外,我在想是否有另一种确定收敛的方法,即观察系数接近其真实值的情况:

if (change_in_coefficient_j > precisionvalue) {          repeat gradient_descent_for_j} ...对所有系数重复此操作

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


回答:

你可以想象梯度下降(GD)是如何工作的,想象你把一个弹珠扔进碗里,然后开始拍照。弹珠会在摩擦力的作用下在碗底停止振荡。现在想象你在一个摩擦力非常小的环境中,弹珠需要很长时间才能完全停止,所以我们可以假设当振荡足够小时,弹珠已经到达了碗底(尽管它可能会继续振荡)。在下面的图片中,你可以看到GD的前八个步骤(弹珠的照片)。

enter image description here

如果我们继续拍照,弹珠的移动将变得不明显,你应该放大图片来看:

enter image description here

我们可以继续拍照,弹珠的移动将变得更加无关紧要。

因此,达到GD在目标函数上做出非常小的变化的点被称为收敛,这并不意味着它已经达到了最优结果(但它确实非常非常接近,如果不是正好在最优点上)。

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

grad(i) = 0.0001grad(i+1) = 0.000099989 <-- grad的变化小于0.01% => STOP

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注