问题:
我已经训练了一个代理人在网格世界中执行一项简单的任务(在没有碰到障碍物的情况下进入网格顶部),但似乎总是会出现以下情况.它发现自己处于状态空间的一个简单部分(没有障碍物),因此不断获得强烈的正强化信号.然后当它确实发现自己是状态空间的困难部分(楔入两个障碍物旁边)时,它只是选择与之前相同的动作,没有效果(它上升并击中障碍物).最终,此值的Q值与负值奖励匹配,但此时其他操作的Q值甚至更低,在状态空间的简单部分中无用,因此错误信号降至零,并且错误操作仍然始终为选择.
我怎样才能防止这种情况发生?我想到了一些解决方案,但似乎都不可行:
>使用总是探索沉重的政策.由于障碍需要5个左右的动作,所以偶尔出现一个随机动作似乎无效.
>制作奖励功能,以便在重复时不良行为更糟.这使得奖励功能打破了马尔可夫属性.也许这不是一件坏事,但我根本就没有线索.
>只奖励代理人完成任务.该任务需要完成一千多个动作,因此训练信号太弱了.
关于任务的一些背景:
所以我为尝试RL算法做了一个小测试 – 就像Sutton书中描述的更复杂的网格世界版本.世界是一个大的二进制网格(300乘1000),在0的背景下以1的随机大小的矩形形式填充. 1个乐队围绕着世界的边缘.
一个代理占据了这个世界中的一个空间,并且只有一个固定的窗口围绕它(41到41窗口,代理在中心).代理人的行动包括在四个基本方向中的任何一个方向上移动1个空格.代理只能通过标记为0的空格移动,1是无法通行的.
在这种环境中执行的当前任务是从底部的随机位置开始到达网格世界的顶部.成功向上移动可获得1的奖励.任何会碰到障碍或世界边缘的行动都会给出-1的奖励.所有其他州获得0的奖励.
代理使用基本SARSA算法和神经网络值函数近似(如Sutton书中所讨论的).对于政策决定,我尝试过e-greedy和softmax.
最佳答案 教授此类任务的典型方法是在每一步给予代理人一个负面的奖励,然后在完成时给予一大笔支付.您可以通过使用资格跟踪并将代理最初放置在靠近目标的位置来补偿长时间延迟,然后靠近它探索的区域.