我制作了 Curve Fever 的简单版本,也称为“Achtung Die Kurve”。我希望机器能够弄清楚如何以最佳方式玩游戏。我从一些使用 Google 的 Tensorflow 制作的 Atari 游戏示例中复制并稍微修改了现有的 DQN。
我正在努力找出合适的奖励函数。目前,我使用此奖励设置:
- 每帧 0.1 不会崩溃
- 每次崩溃-500
这是正确的方法吗?我需要调整这些值吗?或者我需要一种完全不同的方法吗?
最佳答案
-500 的奖励可能会破坏你的网络。您应该将奖励调整为 1 到 -1 之间的值。 (还将输入图像缩放到 -1 和 1 或 0 和 1 之间)。
只要给你的网络崩溃奖励 -1 ,一旦敌人崩溃奖励 +1 。如果没有敌人,崩溃奖励 -1 就足够了。在某些情况下,拥有小的、恒定的正生活奖励可能是有益的(例如,当网络必须在两次不可避免的崩溃之间做出决定,其中一次发生的速度比另一次更快时),但它也会使 Q 函数的学习变得更加复杂。您可以尝试有或没有持续奖励,看看哪种效果最好。
不可避免的崩溃的例子也说明了为什么你不应该使用小的负生活奖励。在这种情况下,网络会选择最快崩溃的路径,而尽可能延迟崩溃将是这种情况下更好的策略。
关于machine-learning - 学习使用 DQN 玩 Curve Fever 游戏的奖励功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804248/