Hey
first blog
蒙特卡洛树搜索(MCTS)
蒙特卡洛树搜索是一种经典的树搜索算法。对于大规模搜索空间的博弈问题有效,核心思想为把资源放在更值得搜索的分支上。
其分为四个步骤,选择、扩展、模拟、回溯
选择
从父节点开始,根据决策局面向下选择节点生长方向
-
所有可行动作都被拓展过,则已经形成完整搜索,使用UCB公式计算每个子节点的UCB值,选择最大的子节点继续检查,继续迭代 \(UCB1(S_i) = \bar{V_i} + c \sqrt{\frac{log N}{n_i}}\)
-
该节点有可行动作还未被拓展,则在剩下可行动作中随机选取一个动作作为子节点,执行下一步拓展
-
该节点游戏结束,则直接进行反向传播
扩展
若当前叶子结点不是终止节点,那么就创建一个或者更多的子节点,选择其中一个进行扩展。
模拟
从扩展节点开始,运行一个模拟输出,直到博弈游戏结束,通过结局给节点进行初始评分(价值函数)。
反向传播
在每个新节点的模拟结束之后,它的父节点以及路径上的所有节点都会根据本次模拟结果来修改自己累计评分。
每一次迭代都会拓展搜索树,随着迭代次数增加,树的规模也会增加。到达一定限制时,选择根节点下最好的子节点作为本次决策的结果。