本文是对 Monte Carlo Tree Search – beginners guide 这篇文章的文章大体翻译,以及对其代码的解释。
1 引言
蒙特卡洛树搜索在2006年被Rémi Coulom第一次提出,应用于Crazy Stone的围棋游戏。Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search
蒙特卡洛树搜索大概的思想就是给定一个游戏状态,去选择一个最佳的策略/动作。
1.1 有限双人零和序贯博弈
蒙特卡洛树搜索实际上是一个应用非常广泛的博弈框架,这里我们将其应用于 有限双人序贯零和博弈 问题中。像围棋、象棋、Tic-Tac-Toe都是有限双人序贯零和博弈游戏。
1.2 怎样去表示一个游戏?
我们采用 博弈树 (Game Tree)来表示一个游戏:每个结点都代表一个 状态 (state),从一个 结点 (node)移动一步,将会到达它的 子节点 (children node)。子节点的个数叫作 分支因子 (branching factor)。 根节点 (Root node)表示初始状态(initial state)。 终止节点 (terminal nodes)没有子节点了。
在 tic-tac-toe 游戏中表示如下图所示:
每次都是从 初始状态 、树的 根结点 开始。在 tic-tac-toe 游戏里面初始状态就是一张空的棋盘。
从一个节点转移到另一个节点叫作一个 move 。
分支因子 (branching factor), tic-tac-toe 中树越深,分支因子也越少,也就是 children node 的数量越少。
游戏结束表示 终止节点 。
从根节点到终止节点一次表示一个单个游戏 playout 。
你不需要关系你是怎么来到这个 node ,只需要做好之后的事情就好了。
1.3 最佳策略是什么?minimax和alpha-beta剪枝
我们希望找到的就是 最佳策略 ( the most promising next move )。如果你知道对手的策略那你可以争对这个策略求解,但是大多数情况下是不知道对手的策略的,所以我们需要用 minimax 的方法,假设你的对手是非常机智的,每次他都会采取最佳策略。
假设A与B博弈,A期望最大化自己的收益,因为是零和博弈,所以B期望A的收益最小,Minimax算法可描述为如下形式:和 是玩家 和 的效益函数。
move 表示从当前状态 和采取的动作 转移到下一个状态。
eval 评估最终的游戏分数。
是最终的游戏状态。</