Monte Carlo 树搜索中每个节点的模拟数

Number of simulation per node in Monte Carlo tree search

在维基百科描述的mcts算法中,它在每个节点选择中只执行一次播放(模拟)。现在,我正在一个简单的 connect-k 游戏中试验这个算法。我想知道,在实践中,我们是否会进行更多的播放以减少方差?

我用恰好一个随机播放(无偏差)尝试了原始算法。与我使用 alpha-beta 修剪的启发式搜索相比,结果很糟糕。它收敛得非常慢。相反,当我执行 500 次播出时,噪音要小得多。然而,每个节点的模拟速度太慢,算法无法在给定时间内探索树的其他部分,因此有时会错过最关键的一步。

然后我将 AMAF(特别是 RAVE 转换)启发式添加到基本 MCTS。我没有注意到 500 次播放有太大差异,这可能是因为差异已经很低了。我还没有用1个播放分析结果。

谁能给我一些见解?

通常,您会在每个选择步骤中只执行一个 play-out。然而,后续的选择步骤可以多次通过同一个节点。

例如,考虑在根节点中只有两个可用移动的情况。如果然后 运行,比方说,10,000 次完整的 MCTS 迭代(其中一次迭代 = 选择 + 扩展 + Play-out + 反向传播),根节点下方的两个节点中的每一个都将被选择大约 5,000 次(或者一个被选中 9,000 次,另一个被选中 1,000 次,如果第一个明显比第二个更好,但是,两者都被选中不止一次)。

这与您目前在实施中所做的相符吗?如果没有,请尝试提供一些您当前拥有的代码,以便我们可以查看哪里出了问题。但是如果这是你实现它的方式(它应该是这样的),那么每个选择步骤只做一个 play-out 应该没有问题