如何在 POMDPs 中定义奖励函数?

人工智能 强化学习 奖励设计 奖励函数 pomdp
2021-11-16 13:02:49

如何为我的 POMDP 模型定义奖励函数?

在文献中,通常使用一个简单的数字作为奖励,但我不确定这是否真的是您定义函数的方式。因为这样你必须为每一个可能的动作状态组合定义一个奖励。我认为文献中的例子在现实中可能并不实用,而只是为了解释。

2个回答

POMDP 和 MDP 之间没有重大区别。在设置奖励值时,您通常会尝试向代理提供最少的信息,即当奖励总和最大化时,它可以解决您提出的问题。

在文学作品中,通常使用一个简单的数字作为奖励,但我不确定这是否真的是您定义函数的方式。因为通过这种方式,您确实为每个可能的 Action-State 组合定义了一个奖励。

在环境中采取所有状态、动作对之后,必须返回一些定义的奖励值。该值可能是0当然。

奖励可以取决于当前状态、动作、下一个状态和随机因素,或者是其函数。在 POMDP 中,它也可能来自环境中任何未观察到的因素(您可能在模拟中知道这一点,因为您已经创建了环境并且选择不与代理共享数据)。

在实践中,奖励通常不必取决于所有可能的因素。此外,因素和可能的奖励之间的关系可以非常简单或稀疏。

您可以在文献中找到的经典示例包括:

  • 游戏中的奖励可以很简单+1为了获胜,或1因为失败,最后被授予。所有其他奖励都是0

  • 如果您的目标是在最短的时间内达到某个状态,例如从迷宫中退出,那么固定奖励1每个时间步足以表达最小化总步数的需要。

  • 为了保持稳定性并避免例如CartPole中的失败,那么在没有失败的情况下,每个时间步 +1 的奖励就足够了。

所有这些示例都将奖励函数表示为一个简单的条件加上一个或两个数字。关键是它们允许您在每个时间步计算合适的奖励。它们都是严格的奖励函数——如果你愿意,一般情况下可以涵盖非常复杂的函数,这完全取决于你想让代理学习/解决的目标。

在 POMDP 中,您可以最小化以下成本函数

Jπ0:N1()=E(gN(xN)+k=0N1gk(xk,πk())),
在哪里gN是终端成本和gk是步骤成本。

请注意,这只是正式的问题定义。如果您谈论的是实际系统,您可能很难认识到这与您的奖励有关。您观察到的形式是函数 J 的值,实际上是一个简单的浮点数

更多德语细节在我的博客上:https ://martin-thoma.com/probabilistische-planung/#mdp-vs-pomdp-vs-rl_1