【问题标题】:Number of simulation per node in Monte Carlo tree search蒙特卡洛树搜索中每个节点的模拟次数
【发布时间】:2017-06-17 05:49:54
【问题描述】:

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

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

然后我将 AMAF(尤其是 RAVE 转换)启发式添加到基本 MCTS。我没有注意到与 500 场比赛有太大差异,也许是因为差异已经很低。我还没有分析 1 场比赛的结果。

谁能给我任何见解?

【问题讨论】:

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


    【解决方案1】:

    通常,您会在每个选择步骤中只进行一次播放。但是,后续的选择步骤可以多次通过同一个节点。

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

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

    【讨论】:

    • 谢谢。我相信这就是我正在做的事情。让我先射击潜在的错误。而且我稍后会更新。另外,您认为在单线程中探索分支因子为 8x8 的博弈树是否合理?
    • 我会这么说。但很难确定,而且绝对不仅仅取决于分支因素。还有关于你给你的软件多少思考时间(以毫秒或 MCTS 迭代为单位),以及游戏引擎本身的实施情况(MCTS 极大地受益于快速模拟,所以如果你能生成你的移动和更新的棋盘状态非常有帮助快)。
    猜你喜欢
    • 2018-06-27
    • 2020-04-09
    • 2018-11-20
    • 1970-01-01
    • 2012-02-21
    • 2017-08-12
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多