我正在为 2 人游戏创建一个 MCTS(蒙特卡洛树搜索)程序。
为此,我从交替的角度在树中创建节点(第一个节点从玩家 1 的角度来看,任何子节点都从玩家 2 的角度来看,等等)
在确定最后一步时(在模拟了许多节点之后),我选择获胜机会最高的一步。这个获胜机会取决于更深节点的获胜机会。例如,假设我有 2 个合法动作要做。第一个(调用关联节点 C1 - Child 1)我做了 100 次模拟并赢得了 25 个,而对于第二个(C2)我做了 100 次模拟并赢得了 50 个。然后第一个节点有 25% 的获胜机会对 50 % 为第二个,所以我应该更喜欢第二个节点。
但是,这并没有考虑到我的对手将采取的“可能”行动。假设从 C2 开始有两个可能的合法移动(对于我的对手),让我们称之为 C21 和 C22。我为两者做了 50 次模拟,在 C21 中,我的对手在 50 场比赛中赢了 50 场(100% 获胜机会),而在 C22 中,他们在 50 场比赛中赢了 0 场(0% 获胜机会)。完成这些模拟后,我可以看到我的对手更有可能采取行动 C21 而不是 C22。这意味着如果我走 C2 步,那么我的 -statistic-win 机会是 50%,但我的 -expected-win 机会接近 0%。
考虑到这些信息,我会选择移动 C1 而不是 C2,即使获胜的概率较低。我可以对我的算法进行编程来做到这一点,从而提高性能。
这似乎是对 MCTS 算法的一个非常明显的改进,但我没有看到任何对它的引用,这让我怀疑我错过了一些重要的东西。
任何人都可以指出我的推理中的缺陷或指出任何涉及此问题的文章吗?