MCTS算法是⼀种决策算法,每次模拟(simulation)分为4步:
1. Tree traversal(树的遍历):
其中,表⽰状态的平均value(下⾯会进⼀步解释)
2. Node expansion(拓展节点)
3. Rollout (random simulation)(模拟)
贡菊茶
4. Backpropagation(⽅向传播)
蒙特卡洛计算过程
UCB(Upper Confidence Bounds置信上限)其实就是UCT(UCB for Tree)中需要计算的值,⽽UCT是根据UCB值来迭代的算法
第⼀、⼆步的流程(遍历、拓展节点):
1.从状态S0开始,要在下⾯两个动作中进⾏选择(假设只有两个动作可选),选择的标准就是值,选择最⼤化 UCT 的节点作为下⼀个节点。初始情况两个,按顺序选择S1
2.判断⽬前的结点S1(current node)是不是叶节点,这⾥叶节点是指其没有被展开(expansion)过。
3.接下来,按照流程图,需要判断结点S1被访问的系数是否为0。是0,则要进⾏Rollout。(Rollout其实就是在接下来的步骤中每⼀步都随机采取动作,直到停⽌点(围棋中的对局结束),得到⼀个最终的value。)==>假设Rollout最终值为20.教学一点通
4.Backpropagation,即利⽤Rollout最终得到的value来更新路径上每个结点的T,N值。(之后把Rollout的结果删除:MCTS的想法就是要从出S0发不断的进⾏迭代,不断更新结点值,直到达到⼀定的迭代次数或者时间。)
黄一片5.如果没有达到⼀定的迭代次数或者时间,继续从根节点进⾏1-4
参数c是exploitation和exploration之间的折中系数。
MCTS的终⽌
终⽌条件(or):
达到⼀定的迭代次数
达到规定的搜索时间
上学的意义当MSCT程序结束时,最佳的移动通常是访问次数最多的那个节点,也是UCT最⼤的点。参考:
敬亭山图片深度学习⼊门:AlphaGo Zero蒙特卡洛树搜索
蒙特卡洛树搜索(MCTS)算法-计算过程
会计个人简历模板【MCTS】Youtube上迄今为⽌最好的蒙特卡罗树搜索讲解
实现:
python实现的基于蒙特卡洛树搜索(MCTS)与UCB的五⼦棋游戏
mctspy:蒙特卡洛树搜索算法的python实现如何实现人生价值
功败垂成什么意思