我制作了一个简单的Curve Fever版本,也被称为“Achtung Die Kurve”。我希望机器能够找到最佳游戏方式。我复制并稍微修改了一些使用谷歌的Tensorflow制作的Atari游戏示例中的现有DQN。
我想找出合适的奖励函数。目前,我使用此奖励设置:
这是正确的做法吗?我需要调整值吗?或者我需要一种完全不同的方法吗?
答案 0 :(得分:1)
-500的奖励可以摧毁你的网络。您应该将奖励缩放到介于1和-1之间的值。 (也可以在-1和1或0和1之间缩放输入图像)。
一旦敌人崩溃,只需给你的网络奖励-1为崩溃和+1奖励。如果没有敌人,那么崩溃的奖励应该足够了。在某些情况下(例如,当网络必须在两个不可避免的崩溃之间做出决定,其中一个将比另一个更快发生时),有一个小的恒定积极生活奖励可能是有益的,但它也将使Q功能的学习更复杂。您可以尝试使用和不使用恒定奖励,看看效果最佳。
不可避免的崩溃的例子也说明了为什么你不应该使用小的负面生活奖励。在这种情况下,网络将选择最快速崩溃的路径,同时尽可能延迟崩溃将是更好的策略。
答案 1 :(得分:0)
当奖励功能完全编码您希望代理人追求的目标时,这是最好的。在 Curve Fever 中,目标是成为最后一个活着的玩家。如果你使用奖励功能只是为了留在游戏中给予奖励,最好的政策是无限期地将游戏画出来。你可能希望代理人尽快获胜,所以你实际上应该每一次给予一个小的负面奖励和一些积极的奖励来赢得一轮。这是快点并赢得奖励功能。