Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)

   部分翻译自“Monte Carlo Tree Search and Its Applications”。

  论文链接:http://digitalcommons.morris.umn.edu/cgi/viewcontent.cgi?article=1028&context=horizons

  

  MCTS 结合了传统 MC 随机采样的方法 和 树搜索的方法。MC 方法利用重复的随机采样来得到结果。在 MCTS 中,随机采样的过程是在随机模拟的形式中,用来拓展游戏树。该游戏树紧接着别用来决定下一个 move。MCTS 随着游戏树迭代的生长。每一次迭代,game tree 就 traversed 和 expanded。一段时间之后,game tree 就会收敛。这意味着在每次迭代中都 traversed 同一个路径。这表明 MCTS 已经找到了一个 move 可以得到从当前游戏状态下的模拟赢的最多次数。因为这个过程是随机的,所以 MCTS 是一种概率的方法。MCTS 并不能永远都找到最优的 move,但是拥有合理的推理过程,能够使得选择的 move 有很大的机会赢!这就比较牛逼了!

  1. The Tree Structure

  MCTS 编码了游戏的状态 和 其潜在的moves 到这个树当中。树种每一个节点都表示一个潜在的游戏状态,根节点表示当前状态。每一个边表示合法move,使得游戏状态从一个转移到另一个。换句话说,它代表了从父节点到子节点的转移。任何一个节点都有许多孩子节点作为其合法的 move。

  例如,游戏 TicTacToe 开始的时候,根节点有9个子节点,每一个表示一个可能的移动。后面的子节点也有比上一个少一个选择的子节点,由于上一次的选择已经无法作为当前的选项了。

  图1 表示一个树的顶端, AI 做出首次移动,所以 根节点 是 第一个游戏板,每一个子节点代表从当前游戏状态所可以选择的潜在的移动。该图是一个简化的版本,此处应该有 9个子节点,而这里只是画出了 3 个。一旦 MCTS 决定选择哪个动作,选中的子节点就变成了新的根节点。扔掉其兄弟姐妹节点。

  随着游戏状态,每一个节点有一个联系的值,执行那个子树的模拟。每一个节点只执行一次模拟。所以,三个子树 就从3次模拟中得到其值。通过选择带有最大预测值的节点, MCTS 算法选择最优可能赢的路径,这意味着 MCTS 算法最大化其能够选择的赢的move 个数。这就是 MCTS 能够有效的主要原因。

  2. The  Four Steps of  MCTS

  蒙特卡罗搜索树可以分为 4 个步骤:selection  expansion  simulation  backpropagation.

  迭代的执行这4个步骤,直到 AI 做出决定。下图给出了一个示例:

  

  第一个数字:代表在这个子树上赢的次数;

  第二个数字:代表在这个子树上执行模拟的次数。

  这个比值 就提供给我们这个节点的 预测值(estimated value)。

  Selection:

  在这个过程中, MCTS 算法利用 树的策略遍历整个树。一个树策略利用一个 evaluation function 用预测的最大值来优化节点。一旦遍历到一个叶子节点,则需要转成 expansion step。

  Expansion:

  添加一个 “?”的叶子节点。这是每次迭代中唯一添加的节点。

  

  Simulation:又称 playout 或者 rollout

  选择操作,直到达到结束状态,或者满足设定的阈值,就停止该操作。然后基于模拟的结果,建立新添加节点的值。

  Backpropagation:

  既然已经决定了新添加节点的值,那么剩下的树就要进行更新。从新的节点开始,算法反向遍历回到根节点。在遍历的过程中,存在每一个节点上的模拟的次数都会增加,如果新节点的模拟导致了赢的局面,那么赢的次数也要增加。图2中仅仅 值为 0/1 的节点不给更新,由于他们不是新添加节点的祖先。这些操作步骤确保每个节点的值准确的反应了在子树中执行的模拟情况。

  3. Upper Confidence Bound

  应用在树上的 upper confidence bound 被用在 MCTS 上(UCT),在遍历树的过程中的选择步骤 作为树策略。 UCT 平衡了 exploration 和 exploitation 的思想。

  exploration approach 促使去探索尚未发现的树的其他领域。这会将倾向于探索树的广度,而不是深度。

  exploitation approach 倾向于选择拥有最大预测值的路径。这种是属于贪心算法,趋于探索树的深度。

  UCT 通过给定相对未探索的节点一个 exploration bonus,来平衡 exploration 和 exploitation:  

  当遍历树的时候,孩子节点从这个等式返回的最大值将被选中。N 代表在那个节点和其子孙节点上进行模拟的总次数。W 代表多少次这样的模拟才会得到赢的局面。C 代表一个经验得到的 exploration constant。UCT 的第一部分考虑到 该节点的估计值 占所有模拟的比例。这是 exploitation 部分。第二个部分是 exploration bonus,这个和在父节点和子孙节点执行模拟次数的总数相比。这意味着,该节点模拟次数越小,等式中这部分占得比例越大。

 

  


  另外,可以参考如下博客:

  1. https://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/

  2. 论文链接:http://digitalcommons.morris.umn.edu/cgi/viewcontent.cgi?article=1028&context=horizons

  

  

Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)的更多相关文章

  1. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

  2. Programming a Hearthstone agent using Monte Carlo Tree Search(chapter one)

    Markus Heikki AnderssonHåkon HelgesenHesselberg Master of Science in Computer Science Submission dat ...

  3. Monte Carlo tree search 学习

    https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 蒙特卡洛树搜索(MCTS)基础 http://mcts.ai/about/index.htm ...

  4. Monte Calro Tree Search (MCTS)

    https://blog.csdn.net/natsu1211/article/details/50986810, 感谢分享! Intro最近阿法狗和李师师的人机大战着实火了一把,还顺带捧红了柯杰,古 ...

  5. Introduction To Monte Carlo Methods

    Introduction To Monte Carlo Methods I’m going to keep this tutorial light on math, because the goal ...

  6. 论文笔记:Mastering the game of Go with deep neural networks and tree search

    Mastering the game of Go with deep neural networks and tree search Nature 2015  这是本人论文笔记系列第二篇 Nature ...

  7. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  8. 蒙特卡罗(Monte Carlo)方法简介

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法. 二 解决问题的基本思路 Monte Carlo方法的基本思想很早以前就被人们所发 ...

  9. Monte Carlo方法简介(转载)

    Monte Carlo方法简介(转载)       今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...

随机推荐

  1. 转:gartner 2014-07 ETL工具象限排名

    ref:  http://www.gartner.com/technology/reprints.do?id=1-1YAXV15&ct=140728&st=sb

  2. ImageLoder配置以及使用(个人阅读使用)

    http://blog.csdn.net/vipzjyno1/article/details/23206387 在gradle添加: compile 'com.nostra13.universalim ...

  3. Java---NullPoint经验解析

    tv_yue = (TextView) findViewById(R.id.tv_yue); if(!Constant.cf_balance.isEmpty()){ tv_yue.setText(Co ...

  4. (转)tomcat与地址栏图标之研究(多浏览器)

    原文:http://hi.baidu.com/hebo_thu/item/fc8c81bb164f5cee4fc7fd90 tomcat与地址栏图标之研究(多浏览器) 最近在做一个java网络应用程序 ...

  5. 2016- 1- 16 NSThread 的学习

    一:NSThread的概念: 二:NSThread的使用: 1.创建一个Thread 1.1第一种方法: - (void)test1{ NSString *str = @"zhengli&q ...

  6. 技术分享:逆向海盗船k95机械键盘

    引文 在几年前我买了一个海盗船 K95 Vengeance机械键盘,键盘有上有背光功能,于是我在考虑是不是可以修改一下.但作者表示购买来的键盘上面没有很多的资料可供利用,需要注意的是,新版的K95与旧 ...

  7. Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)

    题目描述: 求 1+2+...+n, 要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). 分析: 首先想到的是写递归函数,但是遇 ...

  8. iOS数据持久化

    在iOS中,实现数据持久化一般分为4大种: 1.属性列表 2.对象归档 3.SQLite 4.Core Data 一.属性列表 NSUserDefaults类的使用和NSKeyedArchiver有很 ...

  9. Terrible Sets_单调栈

    Description Let N be the set of all natural numbers {0 , 1 , 2 , . . . }, and R be the set of all re ...

  10. turn.js实现翻书效果

    JS插件网 http://www.ijquery.cn/?p=173 描述:Turn.js 是一个轻量级的 (15kb) jQuery/html5 插件用来创建类似书本和杂志翻页效果,支持触摸屏设备. ...