1、简介
- 蒙特卡罗树搜索是一类树搜索算法的统称,简称MCTS。它是一种用于某些决策过程的启发式搜索算法,且在搜索空间巨大的游戏中会比较有效。
- 从全局来看,蒙特卡洛树搜索的主要目标是:给定一个游戏状态来选择最佳的下一步。
- 等常见应用包括Alpha Go、象棋、围棋AI程序等。
- 算法过程
- 选择 (Selection)
- 选择能够最大化UCB值的结点。
- 扩展 (Node Expansion)
- 创建一个或多个子结点。
- 仿真 (Rollout)
- 在某一结点用随机策略进行游戏,又称为playout或者rollout。
- 反向传播 (Backpropagation)
- 使用随机搜索的结果来更新整个搜索树。
- 选择 (Selection)
- 流程图
2、选择
- 选择子结点中UCB值最大的结点。
- 下面为UCB的计算公式:
- 平均value = value / 探索次数。
3、扩展
- 将选择结点所有可能的动作添加到树中。
4、仿真
- 对没有被探索过的结点进行仿真。
- 选择好结点后进行随机决策,得到仿真的价值。
- 伪代码:
5、反向传播
- 计算出value后,需要反向传播该值。
6、终止条件
- 终止条件:
- 给定的限制时间
- 给定的固定迭代次数
- 迭代完成后,选择value更大的结点即可完成决策。