我应该如何设计赛车游戏的奖励功能(目标是在对手之前到达终点线)?

人工智能 强化学习 游戏-ai 奖励 奖励设计 奖励塑造
2021-11-13 19:30:35

我正在为赛车游戏建立代理。在这个游戏中,有一张随机地图,其中有玩家可以拾取的速度提升和阻碍玩家减速的障碍物。比赛的目标是在对手之前到达终点线。

在解决这个问题时,我意识到我们几乎可以忘记对手的存在,只专注于让代理尽快到达终点线。

我从一个简单的开始

  • 1每个时间步的奖励
  • +100获胜的奖励,以及
  • 100因为输了。

当我对此进行试验时,我觉得奖励可能太少了因为我的代理正在收敛到相当差的平均回报。我迭代到速度和距离的函数(连同+100奖励),但是,经过一些实验,我开始觉得代理可能能够获得高回报,而不必以最快的速度到达终点线。

我在想我回到第一种方法,并可能会因为首先获得一些奖励(作为对手在代理后面的距离的函数)。

我还能尝试什么?我是否应该尝试将积极的奖励更多地分配给良好的行为?我应该为可能遇到障碍和使用提升创造额外的奖励/惩罚,还是我可以期望代理学习相关性?

1个回答

Sutton 和 Barto表示,“奖励信号是您与机器人 [agent] 交流您希望它实现什么的方式,而不是您希望它如何实现的方式。” 既然你说目标是先到达终点线,那么奖励1为了获胜,0因为输了,和0在所有其他时间步骤似乎都符合这种叙述。如果平局与输球相同,则应提供奖励0; 否则,奖励0.5似乎有道理。这些奖励提供了模型可解释性:预期回报p(用状态值或动作值估计)在当前策略下的某个状态将表示p获胜的机会。此外,将奖励的绝对值保持在最多 1 可以帮助提高训练速度并防止发散,但对于深度强化学习问题,这通常不是必需的。您当然可以根据实现目标的部分进展添加其他奖励,但您似乎发现,它们可能会导致错误的结果。

话虽如此,我会专注于训练过程,而不是微调的奖励信号由于赛车游戏中有一个已知的目标状态(终点线),我建议通过在每集开始时首先初始化距离目标状态仅几步之遥的所有赛车代理来训练 RL 代理。这些情节更短,因此应该提供更密集的奖励信号。当您的 RL 智能体已经学习了一个获胜策略(例如,获胜的概率更高),然后在每集开始时稍微远离目标状态初始化这些智能体。此外,继续使用和训练相同的神经网络. 由于神经网络可能知道目标状态附近状态的获胜策略,因此通过仅初始化更远的几个状态的代理,RL 代理将获得一个热启动,并且只需要学习更多状态的策略。由神经网络编码的策略本质上包含针对接近目标状态的状态的精细奖励信号,因为它基于获胜策略;这有助于防止仅在剧集完成时提供奖励而导致的稀疏问题。一旦 RL 智能体学习了获胜策略,同时继续使用和训练相同的神经网络,您可以通过稍微远离目标状态初始化智能体来重复此过程。

根据您对环境内部的访问权限,您可能需要其他类似的方法。例如,您可以在原始起始线(即不在地图中途)初始化代理,然后查看是哪个代理完成的n单位在地图上首先确定获胜者。一旦 RL 代理学习到获胜策略,然后逐渐增加n直到n匹配从起点线到终点线的距离。由于您似乎拥有distance traveled并且distance to the opponent作为功​​能,如果您无法在地图上的任何位置初始化代理,而只能在起跑线上初始化它们,则可以尝试此方法。

整体方法的一个显着好处是,您可以在更简单的环境(即情节长度较短的环境)上更快地调试您的算法,以确信学习过程是正确的,并将您的精力集中在其他地方(例如训练过程,包括奖励信号)。