如何计算循环效用的最优策略?

考试答案

我在学习马尔可夫决策过程,对于考试的第6题(见上方附件链接),我理解了当采取某个动作后得到相同状态时的效用计算方法(问题6的a部分)。

J*(cool) = 4 + 0.9 * J*(cool)

但我不明白其他状态和动作的计算方法(问题6的b部分)。我假设方程会是这样的:

在“cool”状态下采取“fast”动作:

J*(cool) = 10 + 0.9 * (0.25 * J*(cool) + 0.75 * J*(warm))

在“warm”状态下采取“slow”动作:

J*(warm) = 4 + 0.9 * (0.5 * J*(cool) + 0.5 * J*(warm))

在“warm”状态下采取“fast”动作:

J*(warm) = 10 + 0.9 * (0.875 * J*(warm) + 0.125 * J*(off))

但这些方程中没有单一变量,我们也没有这些状态的效用值?我们如何得到与每个动作相关的预期效用值?


回答:

你的方程思路是正确的。你只需要依次考虑四种可能的策略:(slow, slow), (fast, slow), (slow, fast), (fast, fast)。

考虑(slow, fast)

从a)部分你已经知道J*(cool) = 40。

J*(warm) = 10 + 0.9 * (0.875 * J*(warm) + 0.125 * J*(off))J*(warm) = 10 + 0.9 * (0.875 * J*(warm) + 0.125 * 0)J*(warm) = 47.06

对于(slow, slow)

J*(cool)不受在warm状态下采取的动作影响,所以J*(cool) = 40。

J*(warm) = 4 + 0.9 * (0.5 * J*(cool) + 0.5 * J*(warm))J*(warm) = 4 + 0.9 * (0.5 * 40 + 0.5 * J*(warm))J*(warm) = 40

对于(fast, fast)

这次在warm状态下的值不受cool动作的影响,是J*(warm) = 47.06,如上所述。

J*(cool) = 10 + 0.9 * (0.25 * J*(cool) + 0.75 * J*(warm))J*(cool) = 10 + 0.9 * (0.25 * J*(cool) + 0.75 * 47.06)J*(cool) = 53.89

最后是(fast, slow)

这是最难的情况,但我们有两个方程和两个未知数,所以可以使用联立方程求解。

J*(cool) = 10 + 0.9 * (0.25 * J*(cool) + 0.75 * J*(warm))J*(warm) = 4 + 0.9 * (0.5 * J*(cool) + 0.5 * J*(warm))J*(warm) = (4 + 0.45 * J*(cool))/0.55J*(cool) = 10 + 0.9 * (0.25 * J*(cool) + 0.75 * (4 + 0.45 * J*(cool))/0.55)J*(cool) = 66.94J*(warm) = 62.04

我们可以看到,如果从warm状态开始,可以获得的最高值是62.04。从cool状态开始的最高值是66.94。这两种情况都发生在我们的策略是(fast, slow)时,即在cool状态下采取fast动作,在warm状态下采取slow动作,因此这是最优策略。

事实证明,不可能存在一种策略,在状态A开始时是最优的,但在状态B开始时不是最优的。还值得注意的是,对于这类无限时间范围的马尔可夫决策过程,可以证明最优策略总是静态的,即如果在时间1在cool状态下采取slow动作是最优的,那么在所有时间都采取slow动作都是最优的。

最后,在实际操作中,状态和动作的数量远大于本题中的情况,通常需要使用更高级的技术,如值迭代、策略迭代或动态规划。

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

发表回复

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