什么是 MCTS?

全称 Monte Carlo Tree Search,是一种人工智能问题中做出最优决策的方法,一般是在组合博弈中的行动(move)规划形式。它结合了随机模拟的一般性和树搜索的准确性。

MCTS 受到快速关注主要是由计算机围棋程序的成功以及其潜在的在众多难题上的应用所致。超越博弈游戏本身,MCTS 理论上可以被用在以 {状态 state,行动 action} 对定义和用模拟进行预测输出结果的任何领域。

基本算法

基本的 MCTS 算法非常简单:根据模拟的输出结果,按照节点构造搜索树。其过程可以分为下面的若干步:

搜索树的构建过程

选择 Selection:从根节点 R 开始,递归选择最优的子节点(后面会解释)直到达到叶子节点 L。扩展 Expansion:如果 L 不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建一个或者更多的字子节点,选择其中一个 C。

模拟 Simulation:从 C 开始运行一个模拟的输出,直到博弈游戏结束。

反向传播 Backpropagation:用模拟的结果输出更新当前行动序列。

参看Tutorial了解关于这个过程更多的信息。

每个节点并需包含两个重要的信息:一个是根据模拟结果估计的值和该节点已经被访问的次数。

按照最为简单和最节约内存的实现,MCTS 将在每个迭代过程中增加一个子节点。不过,要注意其实根据不同的应用这里也可以在每个迭代过程中增加超过一个子节点。

节点选择

Bandits 和 UCB

在树向下遍历时的节点选择通过选择最大化某个量来实现,这其实类似于 Multiarmed bandit problem,其中的参与者必须选择一个 slot machine(bandit)来最大化每一轮的估计的收益。我们可以使用 Upper Confidence Bounds(UCB)公式常常被用来计算这个:

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

Exploitation 和 Exploration

UCB 公式对已知收益的 exploitation 和鼓励接触那些相对未曾访问的节点的 exploration 进行平衡。收益估计基于随机模拟,所以节点必须被访问若干次来缺包估计变得更加可信;MCTS 估计会在搜索的开始不大可靠,而最终会在给定充分的时间后收敛到更加可靠的估计上,在无限时间下能够达到最优估计。

MCTS 和 UCT

Kocsis 和 Szepervari 在 2006 年首先构建了一个完备的 MCTS 算法,通过扩展 UCB 到 minimax 树搜索,并将其命名为 Upper Confidence Bounds for Trees(UCT)方法。这其实是用在当前众多 MCTS 实现中的算法版本。

UCT 可以被描述为 MCTS 的一个特例:UCT = MCTS + UCB。

优点

MCTS 提供了比传统树搜索更好的方法。

Aheuristic

MCTS 不要求任何关于给定的领域策略或者具体实践知识来做出合理的决策。这个算法可以在没有任何关于博弈游戏除基本规则外的知识的情况下进行有效工作;这意味着一个简单的 MCTS 实现可以重用在很多的博弈游戏中,只需要进行微小的调整,所以这也使得 MCTS 是对于一般的博弈游戏的很好的方法。

Asymmetric

MCTS 执行一种非对称的树的适应搜索空间拓扑结构的增长。这个算法会更频繁地访问更加有趣的节点,并聚焦其搜索时间在更加相关的树的部分。

非对称的增长

这使得 MCTS 更加适合那些有着更大的分支因子的博弈游戏,比如说 19X19 的围棋。这么大的组合空间会给标准的基于深度或者宽度的搜索方法带来问题,所以 MCTS 的适应性说明它(最终)可以找到那些更加优化的行动,并将搜索的工作聚焦在这些部分。

任何时间

算法可以在任何时间终止,并返回当前最有的估计。当前构造出来的搜索树可以被丢弃或者供后续重用。

简洁

算法实现非常方便(参见 Code)

缺点

MCTS 有很少的缺点,不过这些缺点也可能是非常关键的影响因素。

行为能力

MCTS 算法,根据其基本形式,在某些甚至不是很大的博弈游戏中在可承受的时间内也不能够找到最好的行动方式。这基本上是由于组合步的空间的全部大小所致,关键节点并不能够访问足够多的次数来给出合理的估计。

速度

MCTS 搜索可能需要足够多的迭代才能收敛到一个很好的解上,这也是更加一般的难以优化的应用上的问题。例如,最佳的围棋程序可能需要百万次的交战和领域最佳和强化才能得到专家级的行动方案,而最有的 GGP 实现对更加复杂的博弈游戏可能也就只要每秒钟数十次(领域无关的)交战。对可承受的行动时间,这样的 GGP 可能很少有时间访问到每个合理的行动,所以这样的情形也不大可能出现表现非常好的搜索。

幸运的是,算法的性能可以通过一些技术显著提升。

提升

很多种 MCTS 强化的技术已经出现了。这些基本上可以归纳为领域知识或者领域独立两大类。

领域知识

特定博弈游戏的领域知识可以用在树上来过滤掉不合理的行动或者在模拟过程中产生重要的对局(更接近人类对手的表现)。这意味着交战结果将会更加的现实而不是随机的模拟,所以节点只需要少量的迭代就能给出一个现实的收益值。

领域知识可以产生巨大的性能提升,但在速度和一般性上也会有一定的损失。

领域独立

领域独立强化能够应用到所有的问题领域中。这些一般用在树种(如 AMAF),还有一些用在模拟(如 在交战时倾向于胜利的行动)。领域独立强化并不和特定的领域绑定,具有一般性,这也是当前研究的重心所在。

背景和历史

1928:John von Neumann 的 minimax 定理给出了关于对手树搜索的方法,这形成了计算机科学和人工智能的从诞生至今的决策制定基础。

1940s:Monte Carlo 方法形成,作为一种通过随机采样解决不太适合树搜索解决的弱良定义问题的方法。

2006:Rémi Coulomb 和其他研究者组合了上面两种想法给出了一个新的围棋程序中行动规划的观点——MCTS。Kocsis 和 Szepesvári 将此观点形式化进 UCT 算法。

研究兴趣

从 MCTS 诞生后几年内,就有超过 150 篇与 MCTS 相关的研究论文发布,平均下来是每两周一篇新的文章。这些文章中包含了大概 50 个推荐的变体、强化和优化,这和传统树搜索自其 1928 年诞生开始的加强的数量也差不太多。

这个新的研究领域当前是 AI 中非常热的研究话题,有很多的开放的研究问题有待发掘和解决。

MCTS: 最新成果

Imperial College London held the first international MCTS workshop in August 2010 on the theme of MCTS: State of the Art. Speakers included:

O. Teytaud, "State of the Art: What is MCTS, where is it now, and where is it going?” 2010 [Online]. Available:http://www.aigamesnetwork.org/_media/main:events:london2010.pdf

M. Müller, “Challenges in Monte Carlo Tree Search,” 2010 [Online]. Available: http://www.aigamesnetwork.org/_media/main:events:london2010-mcts-challenges.pdf

R. Hayward, “MoHex: Computer Hex world champion,” 2010 [Online]. Available: http://www.aigamesnetwork.org/_media/main:events:mohextalk.pdf

H. Finnsson and Y. Björnsson, “CadiaPlayer: MCTS in General Game Playing,” 2010 [Online]. Available:http://www.aigamesnetwork.org/_media/main:events:cadiaplayer_lic_slides_print.pdf

A. Rimmel, “Havannah, Monte Carlo Enhancements and Linear Transforms,” 2010 [Online]. Available:http://www.aigamesnetwork.org/_media/main:events:presmctsworkshop_rimmel.pdf

蒙特卡洛树搜索的主要流程有哪些_蒙特卡洛树搜索简介相关推荐

  1. 蒙特卡洛树搜索的主要流程有哪些_蒙特卡洛树搜索简介与实现

    1.概述 本文将探讨蒙特卡洛树搜索(MCTS)算法及其应用. 我们将通过在Java中实现井字棋来详细分析. 我们将设计一个通用解决方案,只需很少的更改可用于许多其他实际应用中. 2. 介绍 简而言之, ...

  2. 蒙特卡洛树搜索的主要流程有哪些_笔记:蒙特卡洛树搜索

    Model-free: 类似monte carlo control, sarsa, q-learning, ac算法都是model-free算法.样本完全从经验中获得.从来不利用对于下一个状态,下一个 ...

  3. 智慧树考试复制粘贴会检测吗_智慧树考试可以分屏吗?切屏会被发现吗

    智慧树可以在线考试,有不少朋友想知道智慧树考试切屏有记录吗?智慧树考试分屏会被发现吗?下面小编就为大家带来相关介绍,感兴趣的朋友们快来一起了解下吧! -->>智慧树下载< 智慧树考试 ...

  4. 手机桌面百度搜索框不显示热词_移动端搜索和PC端搜索的区别

    随着智能手机的普及,移动端搜索量是越来越大了,在去年从未有人通过移动搜索我的博客,而到了今年,从通过统计工具的数据分析来看,已经有越来越多的用户通过手机搜索到我的博客. 有一段时间移动搜索来路很大的时 ...

  5. 蒙特卡洛树搜索的主要流程有哪些_「详细原理」蒙特卡洛树搜索入门教程

    本文是对 Monte Carlo Tree Search – beginners guide 这篇文章的文章大体翻译,以及对其代码的解释. 1 引言 蒙特卡洛树搜索在2006年被Rémi Coulom ...

  6. 蒙特卡洛树搜索的主要流程有哪些_海运拼箱操作流程主要有哪些

    海运拼箱操作流程与海运出口流程差别不大,只是多了一个拼装入箱的步骤罢了.下面我们来看一张图(海运出口操作流程). 首先,无论是出口方还是进口方,他们都需要通过信息流.商流和物流来了解行情,选择并决定某 ...

  7. 智慧树怎么导入教务系统的课_智慧树——后疫情时代异地直播课堂解决方案

    0 1 后疫情时代教学 随着各行各业的陆续复工,高校也迎来了全面恢复新学期的教学运行工作.来自五湖四海的学生即将回归校园,开始新学期的学习和生活. 为降低疫情风险,保障学生学习安全,基于高校异地同步教 ...

  8. 二叉搜索树中第k大元素_二叉搜索树中第K个最小元素

    二叉搜索树中第k大元素 Problem statement: 问题陈述: Find the k-th smallest element in a given binary search tree (B ...

  9. 智慧树期末考试可以切换页面吗_智慧树考试可以切换界面吗?中途可以退出吗...

    智慧树是一个在线教育平台,也是可以用来在线考试的,不少朋友想知道智慧树考试可以切换界面吗?智慧树考试中途退出有记录吗?下面小编就为大家带来相关介绍,感兴趣的朋友们快来一起了解下吧! -->> ...

最新文章

  1. 在ECSHOP分类列表页中调用商品货号
  2. 微信小程序中的渐变色
  3. MySQL高可靠_MySQL高可用与高可靠架构
  4. 计算机小键盘价格,带小键盘的笔记本电脑是多少寸
  5. matlab+text+extent,MATLAB字体及特殊符号标示方法
  6. Spring Boot学习总结(10)——SpringBoot打包成Docker镜像
  7. 创业公司研发团队面临的项目管理难题探讨
  8. 使用jxbrowser在Swing中嵌入网页Web页面
  9. sealos4.1部署Kubernetes单机
  10. imp遇到重复数据_oracle的imp导入时覆盖目标数据库
  11. Git重置登录密码问题,Git-remote Incorrect username or password ( access token )
  12. 现代操作系统学习笔记三、死锁
  13. 蓝牙模块芯片型号有哪些?国产还是进口?核心指标有哪些
  14. 429. N 叉树的层序遍历 c++ 队列
  15. 【测验1 编程题】: Python基本语法元素 (第1周)
  16. IDEA最强美化插件:Material Theme UI和Atom Material Icons
  17. DHT:分布式哈希表
  18. DNS域名解析成IP地址------设置主从域名服务器
  19. 离散数学 课时一 命题逻辑的基本概念
  20. 1024 程序员节城市嘉年华,共话技术生涯的一万种可能!

热门文章

  1. Java Stream流封装速度竟然如此给力!
  2. 苹果幻灯片没有音乐_如何将音乐添加到Google幻灯片
  3. WPS表格取消自动超链接的3种方法分享。
  4. 果真这么难学?谁再说mysql难学,我一张思维导图就扔过去!
  5. python order函数_Python进阶内容(一)--- 高阶函数 High order function
  6. openssh 低版本升级到OpenSSH 8.5p1版本的方法
  7. 案例01-tlias智能学习辅助系统01-增删改查+参数传递
  8. Java学习路线图(2022最新/附教程/书籍推荐)
  9. 基于stm32的所有嵌入式项目代码
  10. 公众号菜单栏设置历史文章按钮