如何处理巨大的诉讼空间,每一步都有可变数量的法律诉讼?

人工智能 强化学习 dqn 游戏-ai 行动空间 棋盘游戏
2021-11-12 20:43:10

我正在为某个棋盘游戏创建基于 RL 的 AI。就像对游戏的一般概述,以便您了解它的全部内容:这是一款独立的回合制游戏,具有棋盘大小n×n(n视玩家人数而定)。每个玩家获得一个m棋子的数量,玩家必须放在棋盘上。最后,棋子数最少的一方获胜。当然,关于如何放置棋子有一些规则,因此并非所有放置在每一步都是合法的。

我让游戏在 OpenAI 的健身房环境中运行(即按step功能控制),将棋盘表示作为观察,并定义了奖励函数。

我现在正在努力的事情是有意义地代表动作空间。

我研究了 AlphaZero 如何处理国际象棋。那里的行动空间8873=4672:对于板上的每个可能的瓷砖,有 73 种与运动相关的模式。因此,对于每一步,算法都会产生 4672 个值,非法值设置为零,非零值重新归一化。

现在,我不确定这种方法是否适用于我的用例,因为我的计算表明我的理论上限约为 30k 可能的操作(nnm) 如果使用相同的计算方式。我不确定这是否仍然有效,尤其是考虑到我手头没有 DeepMind 计算资源。

因此,我的问题是:除了从所有理论上可能的法律行为中选择法律行为之外,还有其他方法吗?

法律诉讼只是大约 30k 可能诉讼的一小部分。然而,在每一步,法律行动都会改变,因为每一个新棋子都决定了新的放置可能性(而且,已经放置的棋子不再可用,即每一步动作空间通常会变小)。

我正在考虑像星际争霸 2 这样的游戏,其中动作空间必须更大,并且它们展示了良好的结果,不仅是 DeepMind,而且还有私人爱好者(例如 DQN)。

我将不胜感激任何想法,提示或阅读!

1个回答

我能想到的一种方法是重新定义游戏中的“动作”,使它们更加碎片化,让玩家每回合有多个动作。例如,在国际象棋中,我们可以将动作定义为选择要移动的棋子,从所选棋子中选择动作,作为 2 个单独的动作。

例如,一个回合可能包含以下两个动作:

  1. 选择E4
  2. 前进2格

这样就有 64 + 73,而不是 64 * 73 可能的动作。过渡模型将表明在“瓷砖选择”动作完成后仍是同一玩家的回合。

当然,这需要增加状态空间,以便您可以确定哪个动作是合法的。因此,在没有“选择”任何内容的棋盘状态与由一名玩家选择一个牌的相同棋盘状态之间存在差异。在国际象棋示例中,这将需要另外 2 个布尔 CNN 层,每个玩家一个,指示“选择”哪个图块(如果有)。

我自己从未尝试过,我想这可能会使学习变得更慢和更困难,因为它需要 MCTS 中更深的树来执行相同的操作。