强化学习中相同状态的不同奖励
Different rewards for same state in reinforcement learning
我想为 Chrome 恐龙游戏(离线时可以玩的游戏)实现 Q-Learning。
我将我的状态定义为:到下一个障碍物的距离、速度和下一个障碍物的大小。
奖励我想用成功通过障碍物的数量,但可能同一个状态有不同的即时奖励。相同类型的障碍物可能会在游戏后期再次出现,但通过它的奖励会更高,因为已经通过了更多的障碍物。
我现在的问题是:这是一个问题还是 Q-Learning 仍然有效?如果没有,有没有更好的办法?
MDP 的定义说奖励 r(s,a,s')
被定义为在状态 s
中采取行动 a
以搜索状态 s'
。这意味着给定的 (s,a,s')
可以有一个恒定的奖励,或者只要它有一个明确定义的期望就可以有一些奖励分布。正如您定义的那样,奖励与通过的障碍数成正比。因为游戏可以永远持续下去,一些 (s,a,s')
的奖励开始看起来像自然数的总和。这个系列发散,所以它没有期望。在实践中,如果你 运行 Q-learning 你可能会看到值函数发散(NaN 值),但是学习中间的策略可能没问题,因为增长最快的值将是最好的状态动作对。
为避免这种情况,您应该选择不同的奖励函数。你可以用它死时的分数来奖励代理人(最后奖励很大,否则为零)。只要代理人别无选择,只能继续前进,您也可以给予生活奖励(每次小奖励)。只要将最高的总奖励分配给最长的运行(并且 (s,a,s')
元组的奖励期望明确定义)就很好。
我想为 Chrome 恐龙游戏(离线时可以玩的游戏)实现 Q-Learning。
我将我的状态定义为:到下一个障碍物的距离、速度和下一个障碍物的大小。
奖励我想用成功通过障碍物的数量,但可能同一个状态有不同的即时奖励。相同类型的障碍物可能会在游戏后期再次出现,但通过它的奖励会更高,因为已经通过了更多的障碍物。
我现在的问题是:这是一个问题还是 Q-Learning 仍然有效?如果没有,有没有更好的办法?
MDP 的定义说奖励 r(s,a,s')
被定义为在状态 s
中采取行动 a
以搜索状态 s'
。这意味着给定的 (s,a,s')
可以有一个恒定的奖励,或者只要它有一个明确定义的期望就可以有一些奖励分布。正如您定义的那样,奖励与通过的障碍数成正比。因为游戏可以永远持续下去,一些 (s,a,s')
的奖励开始看起来像自然数的总和。这个系列发散,所以它没有期望。在实践中,如果你 运行 Q-learning 你可能会看到值函数发散(NaN 值),但是学习中间的策略可能没问题,因为增长最快的值将是最好的状态动作对。
为避免这种情况,您应该选择不同的奖励函数。你可以用它死时的分数来奖励代理人(最后奖励很大,否则为零)。只要代理人别无选择,只能继续前进,您也可以给予生活奖励(每次小奖励)。只要将最高的总奖励分配给最长的运行(并且 (s,a,s')
元组的奖励期望明确定义)就很好。