我正在尝试使用 UCT 为棋盘游戏实施 MCTS,但我有点卡住了。状态空间非常大(3e15),我想在不到 2 秒的时间内计算出一个好的移动。我已经从这里用 Java 实现了 MCTS ,我注意到在模拟阶段实际到达终端节点需要很长时间。
那么,是否有可能模拟游戏直到特定深度?
我可以返回棋盘的评估(棋盘游戏很简单,可以编写评估函数),然后返回传播,而不是在运行到最大深度后返回游戏的获胜者。
我遇到的问题是处理反向传播。我不太确定在这里做什么。任何帮助/资源/指导表示赞赏!
我正在尝试使用 UCT 为棋盘游戏实施 MCTS,但我有点卡住了。状态空间非常大(3e15),我想在不到 2 秒的时间内计算出一个好的移动。我已经从这里用 Java 实现了 MCTS ,我注意到在模拟阶段实际到达终端节点需要很长时间。
那么,是否有可能模拟游戏直到特定深度?
我可以返回棋盘的评估(棋盘游戏很简单,可以编写评估函数),然后返回传播,而不是在运行到最大深度后返回游戏的获胜者。
我遇到的问题是处理反向传播。我不太确定在这里做什么。任何帮助/资源/指导表示赞赏!
著名的例子是AlphaZero。它不展开,而是咨询价值网络以进行叶节点评估。该论文详细介绍了之后如何执行更新:
叶子位置仅由网络扩展和评估一次,以生成先验概率和评估,. 每条边在模拟中遍历被更新以增加其访问计数,并将其动作值更新为这些模拟的平均评估, , 在哪里表示在从位置 s 移动 a 之后模拟最终到达 s'。