目录

1 蒙特卡罗方法(Monte Carlo method)

2. 蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)

3 Upper Confidence Bounds(UCB)

正文

1 蒙特卡罗方法(Monte Carlo method)

像圆周率计算实验一样,用通过概率实验所求的概率估计估计一个未知量,这样的方法统称为蒙特卡罗方法(Monte Carlo method)

在现实世界中,大量存在一些复杂性过程,由于这类模型含有不确定的随机因素,我们很难直接用一个确定性模型来分析和描述。面对这种情况.数据科学家难以作定量分析,得不到解析的结果,或者是虽有解析结果,但计算代价太大以至不能使用。在这种情况下,可以考虑采用 Monte Carlo 方法 [1]。

2. 蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)算法

蒙特卡洛树搜索是一种基于树结构的蒙特卡洛方法,所谓的蒙特卡洛树搜索就是基于蒙特卡洛方法在整个2N(N等于决策次数,即树深度)空间中进行启发式搜索,基于一定的反馈寻找出最优的树结构路径(可行解)。概括来说就是,MCTS是一种确定规则驱动的启发式随机搜索算法 [1]。

以MCTS的围棋AI算法为例,MCTS应用了Minimax作为启发方法,Alpha-beta剪枝降低运算量, network作为估算方法。

看下图,假设现在轮到黑棋,黑棋有b1和b2两手可选,白棋对于b1有w1和w2两手可选,白棋对于b2有w3 w4 w5三手可选:

然后假设走完w1/w2/w3/w4/w5后,经过局面评估,黑棋的未来胜率分别是50%/48%/62%/45%/58%(等一下,这些胜率是怎么评估出来的?我们后文会说这个问题)。

如果白棋够聪明,会在黑棋走b1的时候回应以w2(尽量降低黑棋的胜率),在黑棋走b2的时候回应以w4(尽量降低黑棋的胜率)。

所以走b1后黑棋的真实胜率是48%,走b2后黑棋的真实胜率是45%。黑棋的正解是b1。这就是 Minimax 搜索的核心思想:在搜索树中,每次轮到黑棋走时,走对黑棋最有利的;轮到白棋走时,走对黑棋最不利的。由于围棋是零和游戏,这就可以达到最优解。这是一个由底往上的过程:先把搜索树画到我们可以承受的深度,然后逐层往上取最大值或最小值回溯,就可以看到双方的正解(如果胜率评估是准确的)[2] 。

如果想把 Minimax 搜索运用到围棋上,立刻会遇到两个大问题:

  1. 搜索树太广。棋盘太大了,每一方在每一步都有很多着法可选。
  2. 很难评估胜率。除非把搜索树走到终局,这意味着要走够三百多步(因为对于电脑来说,甚至很难判断何时才是双方都同意的终局,所以只能傻傻地填子,一直到双方都真的没地方可以走为止)。简单地说,搜索树也需要特别深。

蒙特卡洛树搜索的意义在于部分解决了上述两个问题:

  1. 它可以给出一个局面评估,虽然不准,但比没有强。这就部分解决了第二个问题。评估算法在AlphaGo中采用深度学习网络 value network。这个算法简而言之就是为当前棋盘局面计算出一个信服的分数。如果不使用深度学习,可以通过计算棋子数量,棋子占用的棋盘面积,棋子块目前有多少口气来计算分数。
  2. 根据它的设计,搜索树会较好地自动集中到“更值得搜索的变化”(注意,也不一定准)。如果发现一个不错的着法,蒙特卡洛树搜索会较快地把它看到很深,可以说它结合了广度优先搜索和深度优先搜索,类似于启发式搜索。这就部分解决了第一个问题 [2]。

接这篇博客给出了关于搜索树如何进行启发式搜索的例子:28 天自制你的 AlphaGo (6) : 蒙特卡洛树搜索(MCTS)基础 - 知乎

在每层位置上筛选“最优价值的子节点”时,传统alpha-beta方法会选择价值最突出的子节点。即每次都只选择“最有利的/最不利的”,但是这会意味着搜索树的广度不够,容易忽略实际更好的选择。 蒙特卡洛搜索MTCS会选择采用UCB公式来更好的关注深度和广度问题。

3 Upper Confidence Bounds(UCB)

Exploration and Exploitation,

Exploitation:

  • Exploit our current knowledge
  • Choose high-valued actions for which we already know the value
  • Low risk, Low Reward (possibly)
  • We know what we will get
  • Always choosing actions we are familiar with gives us little new information

Exploration

  • Try actions we haven’t before
  • Helps us learn their values
  • Possible that new actions have higher rewards than previously selected
  • Once we have explored sufficiently, then we can exploit the best actions and know that they are the best

探索也好,利用也罢,怎么去确定他们的分配比例呢?这就是难题所在了,我们可以设置一个概率参数p,以p的概率探索,以1-p的概率利用。下面要介绍的UCB也是其中的一种 [3]。

UCB公式如下:

其中 v_i 是节点估计的值(比如胜率),n_i 是节点被访问的次数,而 N 则是其父节点已经被访问的总次数。C 是可调整参数。

前者代表我们的经验,而后者代表我们的勇气。我们重点看一下我们的“勇气”。后面的值越大,代表着相对父节点的访问,我们访问当前这个子节点的次数偏少,因此我们要多多关注它,反之,则正好相反 [3]。

引用

[1] https://www.cnblogs.com/LittleHann/p/11608182.html#_label1

[2] 28 天自制你的 AlphaGo (6) : 蒙特卡洛树搜索(MCTS)基础 - 知乎

[3] 面向初学者的蒙特卡洛树搜索MCTS详解及其实现_彩虹糖的博客-CSDN博客

围棋AI,蒙特卡洛树搜索相关推荐

  1. 五子棋AI - 蒙特卡洛树搜索

    动机 自高中时代做了一个带简单AI的五子棋游戏后,一直以来实现一个更加厉害的五子棋AI算是我的小目标.之前也尝试过使用 MinMax 算法,最终结果不甚理想.当然并不是算法问题,而是搭配这个算法需要许 ...

  2. 【人工智能】基于蒙特卡洛树搜索和策略价值网络的AI五子棋算法设计

    基于蒙特卡洛树搜索和策略价值网络的AI五子棋算法设计 摘要 蒙特卡洛树搜索算法 五子棋博弈的状态价值函数 附1:详细论文说明下载: 附2:实现代码下载(2022.10更新后代码): 摘要 随着人工智能 ...

  3. AI强度相关的研究:MCTS 蒙特卡洛树搜索 Monte Carlo Tree Search

    提供具有挑战性的人工智能对手是使视频游戏令人愉悦和身临其境的重要方面. 太简单或反之太难的游戏可能会让玩家感到沮丧或无聊. 动态难度调整是一种方法,旨在通过为对手提供量身定制的挑战来改进传统的难度选择 ...

  4. AlphaGo的制胜秘诀:蒙特卡洛树搜索初学者指南

    编译 | reason_W 出品 |  AI科技大本营(公众号ID:rgznai100) 长久以来,计算机在围棋领域不可能达到人类专家的水平一直是学术界的主流观点.围棋,被认为是人工智能的" ...

  5. AlphaGo制胜绝招:蒙特卡洛树搜索入门指南

    作者 | int8.io 编译 | 张健欣 编辑 | Emily Chen AI 前线导读:本文是一篇关于蒙特卡洛树搜索的入门指南,介绍什么是蒙特卡洛树搜索及其各个细节的基本概念,然后通过一个简单的例 ...

  6. AlphaGo背后的力量:蒙特卡洛树搜索入门指南

    我们都知道 DeepMind 的围棋程序 AlphaGo,以及它超越人类的强大能力,也经常会听到「蒙特卡洛树搜索」这个概念.事实上,蒙特卡洛树搜索是在完美信息博弈场景中进行决策的一种通用技术,除游戏之 ...

  7. 蒙特卡洛搜索树python_蒙特卡洛树搜索最通俗入门指南

    关于蒙特卡洛树搜索,国内真的很难找到特别好的入门资料,很多还是错的,本文是前段时间为了实现自己的一个 AI,在阅读了几十篇国内外文章之后根据自己的理解整合写的,主要参照 INT8 的一篇英语博文 Mo ...

  8. MindSpore Reinforcement新特性:分布式训练和蒙特卡洛树搜索

    MindSpore Reinforcement MindSpore Reinforcement v0.5 版本提供了基于Dataflow Fragment的分布式训练能力,通过扩展新的Fragment ...

  9. 一种简单的蒙特卡洛树搜索并行化方法

    监控未观察样本: 一种简单的蒙特卡洛树搜索并行化方法 Watch the Unobserved: a Sample Approach to Parallelizing Monte Carlo Tree ...

最新文章

  1. Ubuntu 14.04 台式机锐捷使用:
  2. 语音保存 ,与下载,
  3. goland 实用键
  4. 轻松搭建一个Windows SVN服务器
  5. 迪普交换机清空配置_交换机环路详解
  6. 所有的service报红但不报错_从一个应用报错来看centos系统的/tmp目录自动清理规则...
  7. freemarker自动生成html页面,利用Freemarker生成html静态页面_html/css_WEB-ITnose
  8. MySQL Password Expired
  9. Unity 使用LitJson 解析Json数据
  10. kodi没有中文设置_超详细带你解决KODI找不到中文的问题(XB0X ONE/安卓通用)
  11. Node.js 包管理器 ied
  12. Nutanix的进化
  13. 802.11 NDP Sounding
  14. 吴恩达机器学习ex2 Logistic Regression (python)
  15. 43套高质量PPT模板—创意风格主题
  16. java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw
  17. 仰天大笑出门去 我辈岂是蓬蒿人
  18. 基于CC2530的zIgbee传感器无线数据采集系统开发(部分关键源码)
  19. 通达信精确逃顶主图指标
  20. macOS 与 iOS 中的 Tagged Pointer

热门文章

  1. 阿里云服务器配置教程,超超详细~!
  2. 15个高并发系统设计锦囊,建立并发思维!
  3. assets在前端开发项目中的含义是什么
  4. Linux各个系统版本及区别的最全总结
  5. python 架构师课程_想做架构师应该怎么学习?
  6. android文件系统挂载分析(1)---正常开机挂载
  7. 中国电信上海公司正式发布“天翼云”产品
  8. Maven打包报错:[WARNING] The POM for xxx is missing, no dependency inform
  9. 耦合性:软件系统结构中各模块间相互联系紧密程度的一种度量
  10. 滤波学习理解----EKF(一)