我应该如何在深度 Q 学习中对国际象棋游戏的所有可用动作进行建模?

人工智能 神经网络 强化学习 q学习 dqn 深度学习
2021-10-28 05:42:07

我刚读到深度 Q 学习,它使用神经网络作为价值函数而不是表格。

我在这里看到了这个例子:Using Keras and Deep Q-Network to Play FlappyBird,他使用 CNN 来获得 Q 值。

我的困惑在于他神经网络的最后一层。输出层中的每个神经元都代表一个动作(拍打或不拍打)。我还看到其他项目的输出层也代表所有可用的操作(左移、停止等)

您将如何表示国际象棋游戏的所有可用动作?每个棋子都有一个独特且可用的动作。我们还需要选择它将移动多远(车可以移动超过一格)。我读过Giraffe 国际象棋引擎的论文,但找不到他是如何表示输出层的(我会再读一遍)。

我希望这里有人可以很好地解释如何在 Q-learning 中设计 NN 架构,我是强化学习的新手。

1个回答

要将国际象棋建模为马尔可夫决策问题 (MDP),您可以参考 AlphaZero 论文(使用通用强化学习算法通过 Self-Play 掌握国际象棋和将棋)。从第 13 页底部开始可以找到确切的详细信息。

简而言之,一个动作是通过选择一个棋子然后选择一个动作来描述的。棋盘的大小为 8 x 8,因此可以有 8x8 的可能性来挑选一块。然后我们可以选择线性运动(8 个方向),然后选择该方向的步数(最多 7 步),或者我们可以进行骑士运动(最多 8 个可能性)。到目前为止,这是 8x7 + 8。此外,我们还需要考虑促销不足(将棋子提升为非皇后棋子)。在这种情况下,我们可以有 3 种类型的棋子移动(向前、左对角线或右对角线捕获)和 3 种类型的提升(车、马、象),所以它是 9。所以动作空间的总维度是 8x8x( 8x7+8+9),这将是您需要使用的神经元输出的数量。

请注意,这个动作空间表示涵盖了所有可能的场景,例如在游戏开始时,选择 E4 牌并将其提升为主教的动作是没有意义的(在牌局 E4 的开头没有棋子)游戏)。或者,如果我们在有车的地方选择一块瓷砖,我们就不能用它进行骑士移动。因此,您还需要实现一个函数,该函数可以返回给定状态下的一组可能动作,并忽略该集合中未包含的所有神经网络输出。

显然,这个动作表示并不是一成不变的,所以如果你能想出更好或更紧凑的东西,你也可以使用它。您还可以限制您的游戏,例如不允许促销不足。