蒙特卡罗树搜索中每个节点的模拟次数

时间:2017-01-31 17:14:48

标签: artificial-intelligence chess monte-carlo-tree-search

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

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

然后我将AMAF(特别是RAVE过渡)启发式添加到基本MCTS。我没有注意到500场比赛的差异,因为差异已经很小了。我还没有用1个播放分析结果。

有人能给我任何见解吗?

1 个答案:

答案 0 :(得分:3)

通常,您每个选择步骤都会完成一次播出。但是,后续选择步骤可以多次通过同一节点。

例如,考虑根节点中只有两个可用移动的情况。如果你然后运行,让我们说,MCTS的10,000次完整迭代(其中一次迭代=选择+扩展+播出+反向传播),根节点下面的两个节点中的每一个将被选择大约5,000次(或者也许一个被选中9,000次而另外1000次被选中,如果第一次显然是比seocnd更好的选择,但是,两者都被选中不止一次)。

这是否与您目前在实施中所做的相匹配?如果没有,请尝试提供您当前拥有的一些代码,以便我们可以看到它出错的地方。但如果这是你实现它的方式(它应该如何),那么每个选择步骤只进行一次播出应该没有问题