打印
[牛人杂谈]

蒙特卡洛树搜索 MCTS--带你装逼带你飞

[复制链接]
3521|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玛尼玛尼哄|  楼主 | 2016-3-10 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么是 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 的适应性说明它(最终)可以找到那些更加优化的行动,并将搜索的工作聚焦在这些部分。

任何时间

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

简洁

算法实现非常方便(参见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


沙发
玛尼玛尼哄|  楼主 | 2016-3-10 17:25 | 只看该作者
这几天的人机大战,其实用的有这个算法,算不算牛X。就是那个人和谷歌的人工智能程序下围棋。

使用特权

评论回复
板凳
玛尼玛尼哄|  楼主 | 2016-3-10 17:27 | 只看该作者
AlphaGo和李世石,谁火了谁?

之前欧洲冠军樊麾被AlphaGo碾压的时候,小火了一把,那个时候AlphaGo也算是养在深闺人不识,而是通过樊麾一役后一战成名,热度持续延续了一小段时间。而对战李世石则完全把AlphaGo的热度给炒了起来,现在大街小巷,无人不知谷歌出了一个昵称是“阿尔法狗”的机器人。而李世石呢,原本非围棋界人士对他的认知也一般,但因为这一战,也算是有了颇为可观的大众知名度。

这其中有信息流相互影响叠加后不断放大的因素。当信息流都往一块儿汇聚,当一个事件反复被提起,我们就会在内心默认这件事情很重要。

使用特权

评论回复
地板
玛尼玛尼哄|  楼主 | 2016-3-10 17:28 | 只看该作者
那些曾经不把AlphaGo放在眼里的围棋选手们,有没有哭晕在厕所?毕竟如果搭上这条热点的大船,知名度可是会大大提升哦。
围棋跟风,刷了一把公共话题
顺道火了一把的,是围棋。
围棋毕竟是起源于咱们中国的古老游戏,一直以来都拥有广泛的群众基础。中韩之间的围棋交锋之胶着,不亚于乒乓球。李世石面对AI的**,也关系着中国棋手未来的**,自然牵动着广大网友的心。

使用特权

评论回复
5
玛尼玛尼哄|  楼主 | 2016-3-10 17:29 | 只看该作者
为什么围棋背后的逻辑会这么引起公众关注呢?这里面也和AlphaGo的运算机制有关系。

过去人们认为人工智能下棋下不赢人类,是因为当时的技术采用的是穷举法。穷举可以帮助机器在五子棋、象棋上战胜人类,因为可得的结果就那么多。但围棋呢?计算量太大了,一盘围棋可以出现的可能性,是全宇宙目前观测到的原子数的平方再乘上一百亿。因此,人们觉得会下围棋的人工智能是不会出现的。
但是,当AlphaGo摒弃了原先“穷举”的办法,学习人类的思路,情况就另当别论了。人类为什么可以下围棋?因为人类不用穷举,而是每下一步就对全盘进行价值评估,人类拥有想象力,还能从对对手的分析中随时调整自己的走法。

而谷歌所谓的“深度学习”技术,就是在学习这一点。人工智能下赢人类的可能性,就这样被大大提高了。

事实上,科学界早有共识,随着深度学习+强化学习+蒙特卡洛树搜索技术的不断发展,AlphaGo是有可能战胜人类的,只是人们没有想到会这么快而已。

除了围棋,人们还关注这些AI已掌握的技能

除了围棋,人类现在对人工智能可以干的许多事情都特别关注——这毕竟是关系人类未来**的大事。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

3088

帖子

2

粉丝