实现最速上升法优化概率

我想重新实现一个涉及概率优化的方法。我得到的笔记中包括了关于那个参数的梯度计算,并且笔记中提到“在[0,1]区间内,导数有一个静止点,我们使用最速上升法”。

我搜索了关于实现它的提示,发现了这个维基百科上的爬山法条目。(但两者都没有给出非常具体的建议。)

我认为将它与二分查找结合起来是个好主意,计划以以下方式实现(伪代码):

steepest_ascent(param, min_itvl, max_itvl):  if (max_itvl - min_itvl < 0.01):    return param  d = gradient(param)  if (d == 0):    return param  if (d > 0):    return steepest_ascent((param + max_itvl) / 2, param, max_itvl)  if (d < 0):    return steepest_ascent((min_itvl + param) / 2, min_itvl, param)

整个过程是一个迭代程序的一部分,因此调用方式如下(因为是概率,所以区间是[0,1]):

 param_new = steepest_ascent(param_old, 0, 1)

这里有什么明显可以改进的地方吗?


回答:

你实现的是二分法,这与梯度上升法不同。(我猜你的函数是凹函数?)要进行梯度上升法,重复更新param = param + alpha * gradient(param),其中alpha是一个适当选择的正值(太小会导致计算时间过长,太大会导致永远无法收敛),直到满足某种收敛标准为止。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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