您正在描述一个简单的马尔可夫决策过程,几乎可以通过任何强化学习算法来解决。
我已经阅读了很多关于 RL 算法的内容,这些算法在每一步都使用当前获得的奖励来更新动作值函数。这里的要求是,在每一步之后获得奖励。
这是真实的。然而,奖励值可以为零,并且大多数状态和动作导致零奖励是很常见的,只有一些特定的返回非零值,这会对代理的目标产生影响。
当这更加极端时——例如每千步只有一个非零奖励——这被称为“稀疏奖励”并且可能是一个处理好的问题。您的三个步骤然后奖励情况远不及此,根本不是问题。
我认为使用值迭代将是一种合理的测试方法。我的问题是我不知道如何为所选操作分配折扣奖励。
值迭代应该适合您的测试问题,只要单词的选择数量不太高。
您分配折扣奖励的方式是使用贝尔曼方程作为更新:
v ( s ) ←最大限度一个[∑s', rp (s', r | s , a ) ( r + γv (s') ) ]
对于确定性环境,您可以将总和简化为p (s', r | ,一) _将是 1 的特定组合s′,r
没关系r=0前两个步骤。贝尔曼方程链接时间步,通过连接v(s)和v(s′). 因此,在价值迭代的主循环的多次重复中,剧集结束奖励被复制 - 并应用了折扣 - 到它们的前身状态。在您的情况下,您很快就会得到起始状态的值。
例如,在最后一次选择之后,我得到 0.9 的奖励。但是如何更新第一个操作的值(在我的示例中选择 I 和 Trees)?
您不会直接一步完成。发生的情况是重复值迭代循环将最佳值复制到它们的先前状态,一次一个可能的时间步长。
在所有状态的第一个循环中,您将运行类似以下的更新:
v('I')←0+γv('I am')
和v('I am')=0最初,所以它不会在第一个循环中学到任何有用的东西。但是,它也会在同一个循环中学习:
v('I am')←0+γv('I am nice')
所以假设γ=0.9和v('I am nice')=0.9,并且“我很高”的分数小于 0.9,那么它将设置v('I am')=0.81.
在值迭代中状态的下一个循环中,它将设置v('I')=0.727(假设“我是”击败“我是”获得最大值)