什么是验证 MCTS 的简单游戏?

人工智能 蒙特卡罗树搜索
2021-11-07 06:00:43

什么是简单的回合制游戏,可用于验证蒙特卡洛树搜索代码及其参数?

在将它应用于我无法验证其移动的正确性的问题之前,我想实现一个测试用例,以确保它的行为符合预期,特别是当不同的实现和论文之间存在一些歧义时。

我构建了一个四人连接游戏,其中 MCTS-AI 互相对抗,以及迭代的囚徒困境实现,其中 MCTS-AI 对抗常见的策略,如以牙还牙,但我仍然不确定是否有如果 MCTS-AI 找到了最佳策略,那将是一个非常好的解释。

另一种选择是井字游戏,但 MCTS 将在很小的步骤内耗尽整个搜索空间,因此很难判断该实现将如何处理其他问题。

此外,扩展完整的游戏树并不能告诉您完整扩展之前的任何状态是否遵循最佳 MCTS 策略。


示例: 您可以在玩家 1 的树的展开步骤中为玩家 1优化为玩家 2 优化之间交替进行,假设玩家 2 不会为玩家 1 下最佳着法,而是为自己做出最佳着法。不这样做会导致一个乐观的博弈树,这在某些情况下可能有效,但可能不是许多游戏的最佳选择,但它对合作游戏很有用。

当博弈树完全展开时,即使展开步骤的顺序不是最优的,您也可以找到最佳着法,因此使用可以完全展开的游戏并不是验证中间步骤的好方法。


是否有一个易于实现的游戏,可用于验证,如果 AI 确实找到了预期的动作,您可以在其中可靠地检查每个动作?

2个回答

一个不错的选择可能是小型围棋游戏,例如 9x9 棋盘。这是 MCTS 最初设计的应用领域,Brugmann 于 1993 年发表的原始论文详细介绍了这些参数,这些参数应该会导致代理能够在今天的计算时间中以极少的计算时间在缩小的 9x9 中发挥高于初学者的水平网格。

Go 是一个很好的基准选择,因为大多数学习算法都非常失败。MCTS 在这里工作的事实在当时是一个重大突破,并有助于巩固它作为一种游戏技术。如果你的算法不能正常工作,那么它就不太可能按照 Brugmann 的论文中描述的水平学习下围棋。

我现在使用:

我目前有,但可能会删除:

  • 迭代囚徒困境(难以解释,我不确定 MCTS 是否真的是正确的选择)

我可能会在某个时候补充:

  • 井字游戏作为非常简单的验证
  • 点和框(看起来这可能是一个有趣的规划问题)

其他好主意:

我没有尝试所有想法,因为我只想验证我的框架,应该用于其他问题(更难验证)。您仍然可以继续添加带有好想法的答案,这对于想要测试其实现的其他人来说可能是一个很好的参考。