【问题标题】:Writing a good Reward Function for my QLearning Agent为我的 QLearning 代理编写一个好的奖励函数
【发布时间】:2020-08-17 06:51:28
【问题描述】:

我还是 ML 新手,最近我学习了 Q-Learning 并手动编码(不使用 Keras 或 TensorFlow 之类的库),我面临的问题是知道如何编写一个好的奖励函数对于我的代理,我首先编写了以下简单的奖励函数:

从 X、Y 移动到 X1、Y1 时: 返回(距离(从 X、Y 到目标)- 距离(从 X1、Y1 到目标))

这意味着它在向目标移动时获得了正奖励,并且在空的 2D 平原上运行良好。

但是当我添加障碍物时,该功能没有帮助,代理采取最短路径到达目标,永远卡在障碍物中,我增加了停留在原地的惩罚,它再次卡在墙上,但这次走了来回,因为惩罚+奖励的总和为0,并且已经得到了正奖励,所以这是有利的路径。 然后我加了两次通过同一个方块的惩罚,但我还是觉得这可能太复杂了,必须有更简单的方法来做到这一点

起始位置(绿色为代理,红色为目标)

陷入阻塞的最短直接路径

在阅读了一点奖励之后,我意识到我对奖励的理解/做错了很多事情,从让我的奖励一次性提高到 2k,而不是在 [-1, 1] 范围内,并且没有明确区分何时使用负奖励和正奖励。

我的状态与动作的内存数组包含 n 个状态,其中 n=rows*columns 和 5 个动作(上、右、下、左、原地)。

所以,知道我的代理应该找到到目标的最短可用路径(未阻塞),我的奖励函数应该是什么样的?为什么? 同样按照我学习的算法,他们并没有真正指定 Epsilon、Gamma 和 LearningRate 的值,所以我将它们分别设置为 0.2、0.85、0.75。

如果你想在代码中发送奖励函数,我的代码是在 python 中的。

PS:我在 StackOverflow 上和下搜索了这个问题,我发现的只是参考资料和文章,所有这些都解释了奖励函数应该做什么,但没有详细说明如何做到这一点,或者将我的查询变成奖励函数。

这是我在 Github 上的代码文件(无 GUI):https://github.com/EjHam98/LearningMachineLearning/blob/master/QLearning.py

【问题讨论】:

  • 尝试使用:-1 奖励形式每一步(这迫使代理学习最短路径),一些更多的负面奖励来击中障碍和一些积极的奖励达到目标
  • 我尝试每一步都返回 -1,或者返回 -1*n,其中 n 是到目前为止的步数,两者都不起作用,我知道它不起作用,因为我需要最短可用路径,不一定是到目标的最短距离,如图中的示例所示,因此惩罚较长的路径意味着不鼓励代理使用正确的路径,因为它更长。基本上,代理必须与回溯类似地工作
  • “惩罚更长的路径意味着不鼓励机器人走正确的路径,因为它更长”我不认为这是真的。 -1 奖励阻止它重复相同的步骤并鼓励代理尽快达到目标。当您正在训练 DQN 代理时,您所考虑的 observation 也很重要,请检查一下。
  • 最好将表示环境状态的二维网格作为观察。并将其与之前的一些观察结果叠加,形成 Agent 的状态表示。并使用 CNN 作为函数逼近器。
  • 我开始认为我的代码/理解非常错误,我已经研究过 CNN,但是在学习 Qlearning 时没有提到 CNN,这是我的代码所遵循的链接:towardsdatascience.com/…。好吗?够了吗?

标签: python q-learning


【解决方案1】:

如果您的环境状态动作空间非常大。仅考虑 10 个障碍,总状态将超过 49x48x47c10 超过 10e13 这里甚至不考虑动作和其他可能的障碍数量。

所以最好使用Deep Q-learning 和满电的CNN 函数逼近器。

  • 观察 - 表示迷宫(或图像)的二维网格

  • Agent 的状态 - 当前观察的堆栈以及一些先前的帧 (2, 3)。

  • 奖励结构

    • -1 每个时间步长
    • +ve 达到目标状态的奖励
    • - 遇到障碍物获得奖励

在简单的环境中更好地使用 Q-learning(例如 OpenAI 健身房控制环境)。 Here'sgym 控制环境的 q-learning 示例实现。

【讨论】:

  • 我设置它的方式是:状态:当前位置为 0 到行*列 - 1 之间的单个整数(在这种情况下,49 个状态动作是 5 个可能的动作(上、下、右, left, stay) 所以我的状态动作表只有 49*5 但它可能是错误的,因为老实说我怀疑我对这个话题的了解,而且我认为这是一个简单的环境,它只是带有墙壁的 2D 和一个单一目标.. 你能否为我提供关于 Q-Learning 和 DQN 的良好学习资源?我更喜欢解释算法及其细节以及详细工作原理的资源
  • 只存储位置是行不通的,因为代理需要在采取行动之前考虑周围环境。例如:在第一集中,有一个障碍物位于(3, 3) 的位置,但在下一集中,障碍物可能位于3, 3 的右侧。代理的位置无助于编码这种情况。请参考 this David Silver 的精彩讲座。
  • 感谢您的帮助,不胜感激!我该好好学习了
猜你喜欢
  • 1970-01-01
  • 2022-07-14
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多