实现最速上升法优化概率

我想重新实现一个涉及概率优化的方法。我得到的笔记中包括了关于那个参数的梯度计算,并且笔记中提到“在[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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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