如何为以探索地图为目标的智能体设计奖励和惩罚

人工智能 强化学习 奖励 奖励设计
2021-11-09 10:29:26

我正在尝试训练代理探索未知的二维地图,同时避开圆形障碍物(半径不同)。代理可以控制其转向角和速度。转向角和速度归一化[1,1]范围,其中符号编码方向(即速度1表示它以最大单位/秒向后退)。

我熟悉代理必须导航到航路点的类似问题,在这种情况下,奖励是成功到达目标位置。但是,就我而言,我不能真正为此奖励代理,因为没有直接的“目标”。

我试过的

代理遇到障碍物时会受到惩罚;但是,我不确定如何激励代理移动。最初,我想让代理始终向前移动,这意味着它只能控制转向角。但是,我希望代理能够控制其速度并能够倒车(因为我正在尝试为汽车建模)。

我尝试的是奖励移动的代理并惩罚它保持静止。在每个时间步,代理都会得到奖励1/tmax如果速度的绝对值高于某个 epsilon,否则惩罚相同的量。但是,正如预期的那样,这不起作用。它不会激励智能体移动,而是让它来回抖动。这是有道理的,因为如果您想避开障碍物,“技术上”的最佳策略是保持静止。如果代理无法做到这一点,那么下一个最好的办法就是对位置进行小幅调整。

所以我的问题是:我怎样才能给我的代理人增加探索激励?我正在使用近端策略优化 (PPO)。

1个回答

尽可能直接地衡量你想要实现的目标,并给予奖励。稍后您可以为运动类型等添加更复杂的激励措施,但良好奖励信号的关键在于它在高水平上衡量解决方案的质量,而不指定如何实现该解决方案。

如果您想让您的模拟汽车进行探索,您需要根据它遇到新的未探索区域来给它一个奖励信号。这里有很多合理的选择。我怀疑一个好的将取决于您可以为汽车合理编码哪些传感器,以及您认为什么是探索——例如,它是对一个区域的彻底搜索,远离原始位置,体验不同的“视图”吗?

您需要提供给您的代理并合并到状态表示中的一个可能组件是内存。为了了解代理是否正在探索,需要知道代理之前是否经历过某事以及经历了多少。一种非常简单的记忆方式是将计数器添加到网格地图中,并让代理知道它在地图上的每个位置花费了多少时间步长。当代理进入地图上它最近没有进入的点时,奖励信号可能会更高。如果您想要一次非偶发或重复的探索之旅,您可能会随着时间的推移而衰减这些值,以便长时间未访问过的区域与未访问过的区域相同。

你可以借鉴的一个相关概念是好奇心。已经有一些有趣的尝试来鼓励代理通过修改动作选择来寻找新的/有趣的状态。通过自我监督预测进行好奇心驱动的探索就是这样一种尝试,您可能会感兴趣。在这种情况下,作者使用了一种内在的好奇心模型,即使根本没有外部奖励信号,它也可以解决某些环境!

或者,如果您不想参与技术解决方案,您可以通过设置随机目标位置为您的车辆创建一个可能可接受的行为,然后在每次汽车到达时给予奖励并将其移动到新的随机位置.