我应该如何定义像万智牌这样的纸牌游戏的动作空间?

人工智能 强化学习 人工智能设计 行动空间
2021-11-04 13:03:07

我正在尝试学习强化学习技术。我在大学里几乎没有机器学习方面的背景,但我只是在 MNIST 数据库上使用 CNN。

我的第一个项目是在井字游戏上使用强化学习,结果很顺利。

在这个过程中,我考虑过创建一个可以玩《万智牌》、 《游戏王》等纸牌游戏的 AI 。但是,我需要想办法定义一个动作空间。不仅在一个牌组中可能有数千种牌组合,而且我们还必须担心机器正在玩和对抗的各种类型的牌组。

虽然我知道这对于初学者来说可能太高级了,但我发现尝试这样的项目,具有挑战性和刺激性。因此,我研究了几种不同的方法来定义动作空间。但我不认为这个例子属于一个连续的动作空间,或者当它们不相关时我可以删除它们。

我在这个堆栈交换上发现了这篇文章,似乎在问同样的问题。但是,我找到的答案似乎并没有解决我的任何问题。

将动作空间定义为另一个级别的游戏状态不会掩盖完全相同的问题吗?

我的主要问题归结为:

有没有一种简单/首选的方法可以为像万智牌这样复杂的游戏制作动作空间?或者,我还没有看到在此处更好地使用另一种技术(RL 除外)?

1个回答

有几种不同的方法可以在这种顺序(广泛形式)环境/游戏中对状态和动作空间进行建模。对于动作空间较小的环境或通常介绍给刚开始学习 RL 的学生的环境,状态空间和动作空间沿智能体的轨迹保持不变(当有多个智能体时称为范式游戏)。在可以用树来说明的顺序游戏中,“状态”类似于“信息集”,它被定义为自游戏情节开始以来的动作和观察的序列(元组)。终端状态(叶节点)存在,动作空间一个[X]在信息集X可以定义为可以对每个终端状态采取的动作序列的联合,不包括从当前信息集中无法到达的终端状态。

在上面的示例中,我讨论了游戏,例如您所说的多个代理可以与环境交互的示例,但这是对 RL 的概括,可以应用于只有一个代理最大化其奖励的情况。