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

在维基百科描述的MCTS算法中,每次节点选择时只进行一次模拟(playout)。现在,我正在一个简单的connect-k游戏中实验这个算法。我想知道,在实际操作中,我们是否会进行更多的模拟来减少方差?

我尝试了原始算法,每次只进行一次随机模拟(无偏见)。与我的启发式搜索结合alpha-beta剪枝相比,结果很差。它的收敛速度非常慢。当我改为进行500次模拟时,噪声大大减少。然而,每个节点的模拟速度太慢,算法在给定时间内无法探索树的其他部分,有时会错过最关键的移动。

然后,我在基本的MCTS中加入了AMAF(特别是RAVE过渡)启发式方法。使用500次模拟时,我没有注意到太大的差异,可能是因为方差已经很低了。我还没有分析使用1次模拟的结果。

能否有人给我一些见解?


回答:

通常,每次选择步骤只进行一次模拟。然而,后续的选择步骤可以通过同一个节点多次。

例如,考虑一个只有两种可用移动的根节点的情况。如果你运行了10,000次完整的MCTS迭代(其中一次迭代 = 选择 + 扩展 + 模拟 + 回溯),根节点下方的每个节点大约会被选择5,000次(或者如果第一个明显比第二个更好,可能是第一个被选择9,000次,第二个被选择1,000次,但无论如何,两个节点都会被选择多次)。

这是否与你当前实现的方式相符?如果不符,请提供你当前的代码,以便我们可以看到问题出在哪里。但如果你按照这种方式实现了(这是应该的方式),那么每次选择步骤只进行一次模拟应该没有问题。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注