具有长期奖励和固定状态和动作的强化学习

人工智能 强化学习 奖励
2021-11-03 05:37:44

我已经阅读了很多关于 RL 算法的内容,这些算法在每一步都使用当前获得的奖励来更新动作值函数。这里的要求是,在每一步之后获得奖励。

我有一个案例,我有三个步骤,必须按特定顺序传递。在每一步,代理都必须在一系列动作之间做出选择。每个步骤的操作都是特定的。

举一个我的问题的例子:我希望算法渲染三个单词的句子。对于第一个词,代理可以从中选择一个词['I', 'Trees'],第二个词可能是['am', 'are'],最后一个词可以从中选择['nice', 'high']智能体做出选择后,整个句子获得一次奖励。

有谁知道在这类问题中使用哪些算法?


为了更详细地说明我已经尝试过的内容:

我认为使用值迭代将是一种合理的测试方法。我的问题是我不知道如何为所选操作分配折扣奖励。

例如,在最后一次选择之后,我得到 0.9 的奖励。但是如何更新第一个操作的值(在我的示例中选择 I 和 Trees)?

2个回答

您不需要在每个时间步上都有奖励,最后的奖励就足够了。强化学习可以处理时间学分分配问题,所有算法都设计用于处理它。它足以在最后定义一个奖励,例如,如果句子令人满意,则奖励 1,如果不满意,则奖励 -1。常规的表格 Q 学习可以轻松解决您作为示例给出的玩具问题。

您正在描述一个简单的马尔可夫决策过程,几乎可以通过任何强化学习算法来解决。

我已经阅读了很多关于 RL 算法的内容,这些算法在每一步都使用当前获得的奖励来更新动作值函数。这里的要求是,在每一步之后获得奖励。

这是真实的。然而,奖励值可以为零,并且大多数状态和动作导致零奖励是很常见的,只有一些特定的返回非零值,这会对代理的目标产生影响。

当这更加极端时——例如每千步只有一个非零奖励——这被称为“稀疏奖励”并且可能是一个处理好的问题。您的三个步骤然后奖励情况远不及此,根本不是问题。

我认为使用值迭代将是一种合理的测试方法。我的问题是我不知道如何为所选操作分配折扣奖励。

值迭代应该适合您的测试问题,只要单词的选择数量不太高。

您分配折扣奖励的方式是使用贝尔曼方程作为更新:

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

对于确定性环境,您可以将总和简化为p(s,r|s,a)将是 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.9v('I am nice')=0.9,并且“我很高”的分数小于 0.9,那么它将设置v('I am')=0.81.

在值迭代中状态的下一个循环中,它将设置v('I')=0.727(假设“我是”击败“我是”获得最大值)