MDP 中终端状态的值迭代

机器算法验证 强化学习
2022-04-16 10:12:14

我对值迭代算法有点困惑。当我遍历状态时,我应该访问终端状态(如果有的话)吗?

在 Sutton 的书第 83 页中,它说我们不需要访问终端状态(循环遍历每个状态 S,而不是 S+),但所有其他参考都没有区分终端状态和非终端状态。

萨顿的书: https ://drive.google.com/file/d/1opPSz5AZ_kVa1uWOdOiveNiBFiEOHjkG/view

1个回答

在值迭代中访问状态的目的是为了更新它的值,使用更新:

v(s)maxa[r,sp(s,r|s,a)(r+γv(s))]

首先要注意的是终端状态的状态值sTv(sT)=0,总是,因为根据定义,没有未来的奖励可以积累。在最终状态之后找到可能的奖励或不同的下一个状态并将值更新为非零,这绝对不是一个有效的计算。

您可以定义一些东西,以便运行更新有效。如果您将终端状态实现为“吸收状态”,那么这意味着p(sT,0|sT,)=1,并且任何其他状态的概率,奖励对为零,因此如上所述运行更新会导致更新00.

一般来说,更新终端状态的价值函数是没有意义的,尽管正确定义了转换和奖励函数并没有什么坏处,只是浪费了计算。