强化学习——价值函数的公式是什么

数据挖掘 强化学习
2022-02-20 04:39:17

我正在尝试实现一个值迭代算法来解决网格世界问题(我是该领域的新手)。我遇到的关于价值函数 V(s) 的常用公式是:

V(s)=R(s)+maxaAsST(s,a,s)V(s)
在哪里S是状态集,A一组动作,T过渡模型

T(s,a,s)=P(st+1=s|st=s,at=a)
R奖励函数。

由于我正在研究基于模型的问题,TR应该知道;问题是我不知道如何定义(或计算知道问题的细节)R. 如果我在一个状态s并采取行动a这将使代理到达网格世界的边界,即新状态s将会s,并且问题定义的奖励是-5。

另一方面,如果我到达了州s通过另一个状态,奖励将是-1。所以基本上,R(s)取决于先前的状态和先前的动作。我如何在V(s)公式?

1个回答

您引用的公式有点笨拙,正是因为定义的 R 函数需要“展望”所有可能的结果及其概率,但没有明确包括如何做到这一点。

实际上,贝尔曼方程有一些变体表达了或多或少的细节。Sutton & Barto (2nd Edition) 是一个真正通用版本的好起点:

v*(s)=最大限度一种一种[r,s'p(r,s'|s,一种)(r+v*(s')]

在哪里r,s'是所有可能的奖励和下一个状态对。

上面的等式将只处理下一个状态的转换函数更改为处理后继状态和奖励的类似函数:

p(r,s'|s,一种)=r{R+1=r,小号+1=s'|小号=s,一种=一种}

通常这不会增加总和的项目数量,也不会增加太多复杂性,因为奖励通常与转换相关联。

好处是这种方法消除了对与预期奖励一起使用的奖励函数的需要,并且只与特定奖励一起使用。其他变体也是可能的,例如基于(s,一种)或者(s,一种,s')- 差异只是表达式的一点点杂耍,因此考虑到定义的细微差异,它实际上保持不变r.