我正致力于Q-Learning
的实施,以建立一个玩Galaga的ai。
我理解Q-learning
需要状态和操作,以及表来确定状态之间的移动。
Q-Learning
在线的所有示例和教程似乎都适用于基于网格的游戏,具有易于定义的状态。但是Galaga涉及向左,向右和向上移动,敌人在整个游戏过程中随机移动。因此,我无法定义Q-Learning
算法中的状态应该是什么。我已经考虑过让这艘船的每个潜在位置都成为一个州,或者可能让各州依赖于仍然活着的敌人数量。我甚至认为每个游戏框架都有状态,但这显然太昂贵了。
如果对q-learning
有更好理解的人能够帮助我定义我的州应该是什么,我会很感激。我也理解奖励的必要性,但我并不完全确定奖励是逐帧的,因为只有当敌人被杀时游戏得分才会增加。也许是gamescore和framecount的一些功能。
感谢您的帮助!
答案 0 :(得分:0)
Galaga在特定时间步骤的“状态”必须包括您的代理的位置以及敌人的位置。如果您所知道的唯一状态是其自己的位置,您的代理将无法有效学习。否则,它将如何学习何时开火?如果敌人在每场比赛中以相同的方式产生和移动,那么帧数可以用作跟踪敌人所在位置的方式。
虽然Q-learning可以保证解决有限状态空间的问题,但是这个游戏的状态空间(你的位置加上敌人位置的所有不同的可能排列)可能太大了,无法让vanilla Q-learning在合理的时间。
使用Q学习解决大状态空间问题的一种方法是使用函数逼近。我们的想法是,您不会将每个独特的状态视为一个孤岛,而是尝试识别状态之间的相似性,以便您可以使用从看到类似状态获得的经验,在您从未体验过的状态中采取明智的行动。使用函数逼近,结合卷积神经网络,在DeepMind's famous paper中的附近大纲中进一步解释,其中他们概述了一种称为深度Q学习或DQN的算法来解决类似的Atari游戏。