在 MCTS 中,如果我不想模拟到游戏结束怎么办?

人工智能 蒙特卡罗树搜索 蒙特卡罗方法 置信上限
2021-10-24 06:17:04

我正在尝试使用 UCT 为棋盘游戏实施 MCTS,但我有点卡住了。状态空间非常大(3e15),我想在不到 2 秒的时间内计算出一个好的移动。我已经从这里用 Java 实现了 MCTS ,我注意到在模拟阶段实际到达终端节点需要很长时间。

那么,是否有可能模拟游戏直到特定深度?

我可以返回棋盘的评估(棋盘游戏很简单,可以编写评估函数),然后返回传播,而不是在运行到最大深度后返回游戏的获胜者。

我遇到的问题是处理反向传播。我不太确定在这里做什么。任何帮助/资源/指导表示赞赏!

1个回答

著名的例子是AlphaZero它不展开,而是咨询价值网络以进行叶节点评估。该论文详细介绍了之后如何执行更新:

叶子s位置仅由网络扩展和评估一次,以生成先验概率和评估,(P(s,),V(s))=fθ(s). 每条边(s,a)在模拟中遍历被更新以增加其访问计数N(s,a),并将其动作值更新为这些模拟的平均评估,Q(s,a)=1N(s,a)s,asV(s) , 在哪里s,as表示在从位置 s 移动 a 之后模拟最终到达 s'。