您的问题与您如何表示您的奖励有关,与 MDP 无关。
你选择使用一个矩阵来表示你的奖励函数,它映射(s,s′)到r. 如果有一些过渡s→s′没有发生,那么你放在那里的奖励价值根本不重要(s,s′). 只是因为您决定为此使用矩阵,您甚至需要考虑它。
一个完整的奖励函数将映射s,a,s′到一个标量值,也可以包括一个随机因子。您不需要使用所有因素 - MDP 可以使用其中任何一个或所有因素,并且所有 MDP 理论仍然是正确的。在您的情况下,它看起来像到达“目标状态”s′=C是触发+1奖励的原因。因此,您可以定义一个函数,而不是矩阵:
r(s,a,s′)=⎧⎩⎨−1,1,0,if s′=Aif s′=Cotherwise
这在 MDP 中与您的矩阵一样有效,并且避免了存储有关不可能转换的数据的问题。
我认为转换函数会处理这个问题,因为我将在那里定义什么是可能的,什么是不可能的。
是的,应该是这样。如果您的转换函数不允许某些状态更改,则无需在奖励函数中以任何特定方式处理它们。
但无论如何,据说对于一个视野,给出了直接的奖励,甚至没有考虑转换函数
我不确定您在哪里读过这篇文章,但它与您的表示问题或解决“不可能的”状态转换无关。
如果您使用的是基于模型的方法,例如策略迭代或价值迭代,那么您确实会使用转移函数和奖励函数——或多或少直接以贝尔曼方程的形式。在这种情况下,转换函数将为不可能的转换分配 0 的权重,因此奖励值无关紧要(在这种情况下,高效的代码甚至可能会跳过查找或计算奖励)。
如果您使用的是无模型方法,例如 Q 学习,那么代理不会直接使用转移函数或奖励函数。它们是它正在学习的环境的一部分。但是,模拟环境的任何代码都必须实现您世界的物理特性,其中包括使用转换函数来解决代理采取行动时发生的情况。在这种情况下,环境的模拟模型将防止智能体经历不可能的转换,因此永远不需要为它们计算奖励或允许它们作为奖励函数中的边缘情况(您可能仍然选择检查有效性和/或返回一些东西作为奖励函数的防御性编程,但 MDP 和强化学习不需要它)。