蒙特卡洛树搜索入门教程( 三 )


在Alpha Zero里面只有一个网络,它不仅是值网络还是策略网络 。It is trained entirely via self-play starting from random initialization. There is a number of networks trained in parallel and the best one is chosen for training data generation every checkpoint after evaluation against best current neural network.
2.7 终止MCTS我们应该什么时候结束MCTS过程?如果你开始玩,那么你的“思考时间”可能是有限的(“thinking time” is probably limited),计算能力也是有限的(computational capacity has its boundaries, too) 。因此最保险的做法是在你资源允许的情况下尽可能全展开遍历搜索 。
当MSCT程序结束时,最佳的移动通常是访问次数最多的那个节点 。因为在多次访问的情况下,评估它的 值必须很高 。

蒙特卡洛树搜索入门教程

文章插图
 
当你使用蒙特卡洛树搜索选择了一个动作,在对手眼里,你的这个选择将会变成状态的一部分 。反过来对你也是一样的,当对手选择了一个状态之后,你的蒙特卡洛树搜索就可以开始工作了 。利用之前的统计信息直接搜索就可以得出结果了 。
3 MCTS总结def monte_carlo_tree_search(root):while resources_left(time, computational power):leaf = traverse(root) # leaf = unvisited nodesimulation_result = rollout(leaf)backpropagate(leaf, simulation_result)return best_child(root)def traverse(node):while fully_expanded(node):node = best_uct(node)return pick_univisted(node.children) or node # in case no children are present / node is terminal def rollout(node):while non_terminal(node):node = rollout_policy(node)return result(node) def rollout_policy(node):return pick_random(node.children)def backpropagate(node, result):if is_root(node) returnnode.stats = update_stats(node, result)backpropagate(node.parent)def best_child(node):pick child with highest number of visits



推荐阅读