本文共 3342 字,大约阅读时间需要 11 分钟。
介绍
蒙特卡罗树搜索由RémiCoulom于2006年作为Crazy Stone的一个组成部分引入,令人印象深刻的是其出色的引擎的能力,同时也是Alpha Go / Zero的核心组件。蒙特卡罗树搜索主要目的是:给出一个状态来选择最佳的下一步。我们回顾AlphaGo / Zero,试图解释在Alpha Go中使用了哪些蒙特卡罗树搜索变体。
两人有限零和顺序游戏
在该环境下,蒙特卡罗树搜索内运行的是一个游戏,其本身是一个很抽象、很广义的术语,因此在这里我们专注于单一游戏类型:二人有限零和顺序博弈。把它分解成以下几个部分:
1.游戏意味着需要处理互动的情况,一些参与者(一个或多个)。2.“有限”一词表明,在任何时间点,参与者之间存在有限的交互方式。3.两人博弈意味着两个参与者参与了我们的游戏。4.连续的,因为参与者交替地移动他们的动作。5.最后,零和游戏意味着双方都有相反的目标,换句话说:在游戏的任何终端状态,所有玩家的收益总和等于零。围棋、象棋或井字棋都是两人有限零和顺序游戏。事实上,有两个人参与,总是有限的动作,并且两个参与者的目标是完全相反的(所有游戏的结果总和为零)。如何表示游戏?
形式上,游戏由一些基本的数学实体表示。在博弈理论书中,你可以找到以下定义:
定义1.一个广泛的表单游戏由一个元组定义:
什么是最佳的下一步?
我们的最终目标是在给定游戏状态和游戏树暗示的情况下找到最佳的下一步行动。我们假设在国际象棋中,你知道你的对手是一个业余爱好者,你可以选择简单的策略来欺骗他并迅速获胜。但是,针对强大对手的时候采用相同策略会对你产生不利影响。如果你根本不了解你的对手,那么有一个非常激进的策略叫做minimax,假设你的对手很厉害,那么这个策略可以得到最大化效果。在A和B之间的两人有限零和序贯博弈时,minimax
算法可以用下面的递归公式来描述:有没有补救办法呢?
接下来我介绍两种方法,一种方法是将我们的游戏树扩展到一定的阈值深度D。但是,我们不能保证阈值树级别D中的任何节点都是终端。因此,我们需要一个函数来评估一个非终端游戏状态。这对人类来说是很自然的:通过看国际象棋或围棋,即使游戏仍在继续,你也能预测赢家。例如:
蒙特卡罗树搜索- 基本概念
蒙特卡罗树搜索的主要概念是搜索。搜索是一组沿着游戏树的遍历,单次遍历是从根节点(当前游戏状态)到未完全展开的节点的路径。未完全展开的节点意味着至少有一个子节点未被访问,而没有被探索。遇到未完全展开的节点时,其子节点不会选择成为一个根节点。然后将模拟结果反向传播到当前游戏树节点以统计数据。一旦搜索(受时间或计算能力限制)终止,则根据收集的统计信息选择移动。
让我们试着接着上面简单描述的关键问题,以便慢慢理解所有的部分:1.什么是扩展或不完全扩展的游戏树节点?2.在搜索过程中,下一个(子)节点如何选择?3.什么是模拟?4.什么是反向传播?5.在扩展的游戏树节点中传播和更新哪些统计数据?6.最后的移动如何选择?模拟
我们首先关注模拟,因为它不会严重依赖其他术语的定义。模拟是一种单一的游戏行为,是一系列从当前节点开始,并终止于可计算游戏结果的终端节点的动作序列。模拟是通过在该节点处开始以某种方式随机游戏来计算的游戏树节点评估近似值。在模拟过程中如何选择动作?在模拟过程中,选择一个称为“转出策略”的函数:
扩展或不完全扩展的游戏树节点
给定一个根节点加上游戏规则,我们可以遍历它,而不需要将整个树存储在内存中。在最初的形式中,它根本没有扩展并且处于游戏树的根部,其余节点未被访问。一旦我们考虑到一个动作,就会想象这个动作会产生什么样的结果。
蒙特卡罗树搜索游戏树也有同样的区别。节点被视为访问或未访问,对于要访问的节点意味着如果一个节点的所有子节点都被访问,则节点被认为是完全扩展的,否则它没有完全扩展,但是可能会进一步扩展。反向传播
一旦完成了一个叶节点的模拟,其结果已准备好传播回当前的游戏树根节点,然后模拟开始的节点被标记为已访问。
游戏树遍历
在搜索的一开始,由于我们还没有开始任何模拟,所以首先选择未访问的节点。单个模拟从根节点开始遍历到叶节点,结果又反向传播到根节点,然后根节点被认为完全展开。
终止蒙特卡罗树搜索
我们现在知道成功实施蒙特卡罗树搜索所需的所有条件,但我们什么时候才能真正结束蒙特卡罗树搜索程序?答案是:它取决于上下文。如果你构建了一个游戏引擎,那么你的“思考时间”可能是有限的,再加上计算机的计算能力也有限制。一旦蒙特卡罗树搜索程序完成,最好的移动通常是访问次数N最多的移动,因为它的估计价值最高(经常被探索)。
以上为译文。
文章原标题《Monte Carlo Tree Search – beginners guide》,译者:黄小凡,审校:袁虎。
文章为简译,更为详细的内容,请查看。
转载地址:http://vbmwo.baihongyu.com/