有人可以帮我验证我的 MDP 吗?

人工智能 强化学习 奖励 政策 马尔可夫决策过程
2021-11-16 12:19:00

问题陈述: 我有一个具有四种状态的系统 - S1 到 S4,其中 S1 是开始状态,S4 是结束/终止状态。下一个状态总是比前一个状态好,即如果代理处于 S2,它处于比 S1 稍微更理想的状态,依此类推,S4 是最理想的,即最终状态。我们有两种不同的操作,可以不受限制地对这些状态中的任何一个执行。我们的目标是使代理以最优方式从 S1 到达状态 S4,即具有最大奖励(或最小成本)的路线。我拥有的模型是一个非常不确定的模型,所以我猜测代理必须首先获得大量经验才能理解环境。我设计的 MDP 如下图所示:

MDP配方: 解决问题的 MDP

MDP 可能看起来有点混乱和复杂,但它基本上只是表明可以在任何状态(终端状态 S4 除外)下执行任何操作(A1 或 A2)。下面给出了从一种状态到另一种状态的转换概率以及相关的奖励。

状态:状态 S1 到 S4。S4 是终端状态,S1 是开始状态。S2 是比 S1 更好的状态,S3 是比 S1 或 S2 更好的状态,S4 是我们期望代理最终进入的最终状态。

动作:可用的动作是 A1 和 A2,可以在任何状态下执行(当然除了终端状态 S4)。

状态转移概率矩阵:在特定状态 S 采取的一个动作可以导致任何其他可用状态。例如。在 S1 上采取行动 A1 可以将代理引导到 S1 本身或 S2 或 S3 甚至直接 S4。A2也一样。所以我假设状态转换概率为 25% 或 0.25。动作 A1 和 A2 的状态转移概率矩阵相同。我刚刚提到了一个动作,但另一个动作也是如此。下面是我创建的矩阵 - 两个动作的状态转移概率矩阵

奖励矩阵:我考虑的奖励函数是动作、当前状态和未来状态的函数 - R(A,S,S')。所需的路线必须从 S1 到 S4。对于将智能体从 S1 带到 S2 或 S1 到 S3 或 S1 到 S4 的操作,我已经获得了积极的奖励,对于状态 S2 和 S3 也是如此。当代理移动超过一个步骤,即 S1 到 S3 或 S1 到 S4 时,将给予更大的奖励。不希望的是当代理因为某个动作而回到之前的状态时。因此,当状态恢复到以前的状态时,我获得了负奖励。目前,两个动作的奖励矩阵相同(意味着 A1 和 A2 具有相同的重要性,但如果 A1/A2 优先于另一个,则可以更改)。以下是我创建的奖励矩阵(两个动作的矩阵相同) -

两个动作的奖励矩阵 R(A,S,S')

政策、价值函数和前进: 现在我已经定义了我的状态、行动、奖励、转移概率,我想我需要采取的下一步是找到最佳政策。我没有最优价值函数或策略。从我做的很多谷歌搜索中,我猜我应该从一个随机策略开始,即两个动作在任何给定状态下都具有相同的概率->计算每个状态的值函数->迭代计算值函数直到它们收敛- > 然后从最优值函数中找到最优策略。

我对 RL 完全陌生,以上所有知识都来自我在网上收集到的所有内容。如果我走对了路,有人可以验证我的解决方案和 MDP 吗?如果我创建的 MDP 可以工作?为这么大的文章道歉,但我只是想清楚地描述我的问题陈述和解决方案。如果 MDP 没问题,那么有人还可以帮助我解决价值函数如何迭代收敛到最优值吗?我见过很多确定性的例子,但没有像我这样的随机/随机过程。

对此的任何帮助/指针将不胜感激。先感谢您

1个回答

好消息是:

  • 您的 MDP 看起来是有效的,具有明确定义的状态和操作。它具有状态转换和奖励功能(您已将其实现为矩阵)。没有其他要添加的,它是一个完整的 MDP。

  • 您可以使用此 MDP 来评估策略,使用适用于有限离散 MDPS 的各种强化学习 (RL) 方法。例如,可以使用动态规划、蒙特卡洛或 SARSA。

  • 您可以使用此 MDP 为其所代表的环境找到最佳策略,同样使用各种 RL 方法,例如 Value Iteration、Monte Carlo Control、SARSA 或 Q-Learning。

坏消息是:

  • 定义的 MDP 中的所有策略都是最优的,预期回报(总奖励总和直到剧集结束)为v(S1)=55,v(S2)=33.75,v(S3)=21.25- 如果您想知道,请使用动态编程解决。

  • MDP 是退化的,因为动作选择对状态转换或奖励都没有影响。它实际上是一个马尔可夫奖励过程(MRP),因为代理策略已变得无关紧要。

  • 不打折,最好的结果不是直接从 S1-S4 开始,就像你想要的那样,而是重复循环 S1-S3-S2-S1-S3-S2...(目前这被隐藏的动作选择不相关)。

    • 有几种方法可以解决这个问题,但也许最简单的方法是让奖励更直接(例如 S1-S1、S1-S2 的 +0、+10、+20、+30...、-10、0、 +10,S2-S1,S2-S2 的 +20...)并添加折扣系数,通常标记为γ, 计算值时。折扣因素使即时奖励对代理具有更高的价值,因此它更愿意一次获得更大的奖励并结束这一集,而不是在完成之前循环。

不过,这整个“坏消息”部分不应该让你太担心。相反,它指向了一个不同的问题。关键点在这里:

我拥有的模型是一个非常不确定的模型,所以我猜测代理必须首先获得大量经验才能理解环境。

看起来您已经假设您需要显式地构建您的环境的 MDP 模型才能解决您的问题。因此,您提供了一个不准确的模型,并期望 RL 能够与之配合,并将其作为搜索最优策略的一部分进行改进。

您可以采用几种不同的方法来学习模型。在这种情况下,由于您的状态和操作数量非常少,您可以这样做:

  • 创建一个 2D 张量(即只是一个矩阵)来计算每个状态、动作对被访问、初始化为全零并使用 S、A 进行索引的次数

  • 创建一个 3D 张量以计算观察到每个状态转换的次数,再次用全零初始化,使用 S、A、S' 进行索引。

  • 在真实环境中运行大量迭代,随机选择动作,并为第一个张量中的每个访问过的 S、A 对添加 +1,并为第二个张量中的每个 S、A、S' 三元组添加 +1。

  • 你现在有了一个基于真实经验的近似转换函数,不需要初始猜测,或者任何特别聪明的东西,你只是在一个表格中取平均值。将 S、A、S' 的每个计数除以 S、A 的总计数得到条件转移概率p(s|s,a). 这并不是一个真正成熟的、命名为 RL 的方法,但可以。

但是,如果您的 MDP 构建只是运行某些 RL 策略优化方法的第 1 步,那么这些都不是真正必要的。相反,您可以使用无模型方法(例如表格 Q 学习)从与环境的交互中直接在线学习。这可能比首先学习模型或与策略优化一起学习更有效。您根本不需要显式 MDP 模型,并且添加一个会使事情变得更复杂 - 在您的情况下没有真正的收益。

您可能仍然需要在您的案例中定义一个奖励函数,因为系统中没有固有的奖励。您希望代理尽快达到状态 S4,因此您需要监控观察到的状态并添加适合此目标的奖励信号。如上所述,我建议您将计划的奖励结构修改为简单/线性,并添加折扣以尽可能快地满足“增加”状态的要求(这里我假设处于 S2 中仍然比处于 S1 中更好 -如果不是这样,并且达到 S4 是唯一真正的目标,那么您可以进一步简化)。那'

除了这个看起来非常简单的环境之外,还有一些系统用例可以学习转换模型和最优策略。是否使用它们将取决于您环境的其他品质,例如获得环境的真实体验的成本/速度有多快。使用学习模型可以帮助使用相同的原始数据进行更多优化,使用它在采取实际行动之间进行模拟和计划。但是,如果真实环境数据很容易收集,那可能就没有意义了。