5

问题:

我已经训练了一个代理在网格世界中执行一项简单的任务(在不撞到障碍物的情况下到达网格顶部),但似乎总是会出现以下情况。它发现自己处于状态空间的一个容易的部分(没有障碍物),因此不断地得到一个强大的正强化信号。然后当它确实发现自己是状态空间的困难部分(楔入两个障碍物旁边)时,它只是选择与以前相同的动作,没有效果(它上升并撞到障碍物)。最终,该值的 Q 值与负奖励匹配,但此时其他动作的 Q 值更低,因为在状态空间的简单部分无用,因此错误信号降至零,并且错误动作仍然始终存在选择。

我怎样才能防止这种情况发生?我想到了一些解决方案,但似乎没有一个可行:

  • 使用始终需要大量探索的策略。由于障碍物需要大约 5 个动作才能绕过,因此时不时地进行一个随机动作似乎是无效的。
  • 使奖励函数在重复时使不良行为变得更糟。这使得奖励函数破坏了马尔可夫属性。也许这不是一件坏事,但我根本不知道。
  • 只奖励完成任务的代理。该任务需要完成一千多个动作,因此训练信号太弱了。

关于任务的一些背景:

因此,我制作了一个小测试平台来尝试 RL 算法——类似于 Sutton 书中描述的更复杂的网格世界版本。世界是一个大的二进制网格(300 x 1000),由 1 在 0 的背景上以随机大小的矩形形式填充。一个 1 的带环绕着世界的边缘。

一个代理在这个世界中占据一个空间,周围只有一个固定的窗口(41 x 41 窗口,代理位于中心)。代理的动作包括在四个基本方向中的任何一个上移动 1 个空间。代理只能通过标记为 0 的空间,1 是不可通过的。

当前要在此环境中执行的任务是从底部的随机位置开始使其到达网格世界的顶部。成功向上移动可获得+1的奖励。任何会撞到障碍物或世界边缘的动作都会获得 -1 的奖励。所有其他状态都获得 0 的奖励。

该代理使用带有神经网络值函数逼近器的基本 SARSA 算法(如 Sutton 书中所讨论的)。对于政策决策,我尝试了 e-greedy 和 softmax。

4

1 回答 1

4

教授此类任务的典型方法是每一步都给代理一个负奖励,然后在完成时给予大笔奖励。您可以通过使用资格跟踪并将代理放置在靠近目标的位置,然后靠近它已探索的区域来补偿长时间的延迟。

于 2012-07-28T07:11:29.653 回答