`
xjnine
  • 浏览: 49575 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Alphago中的蒙特卡洛算法

阅读更多

AlphaGo使用蒙特卡洛树搜索(Monte Carlo tree search),借助值网络(value network)与策略网络(policy network)这两种深度神经网络,通过值网络来评估大量选点,并通过策略网络选择落点。

 

什么是 MCTS?

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

 

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

 


 

基本算法

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

 

搜索树的构建过程

  1. 选择 Selection:从根节点 R 开始,递归选择最优的子节点(后面会解释)直到达到叶子节点 L。

  2. 扩展 Expansion:如果 L 不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建一个或者更多的字子节点,选择其中一个 C。

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

  4. 反向传播 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:http://mcts.ai/code/index.html

 


 

缺点

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

分享到:
评论

相关推荐

    大作业python基于蒙特卡洛算法实现黑白棋MiniAlphaGo源代码,Pygame实现GUI界面

    大作业python基于蒙特卡洛算法实现黑白棋MiniAlphaGo源代码 ​ 以AlphaGo为启发,学习搜索算法在博弈中的应用。由于上面已经讲过,围棋的状态空间极大,需要用神经网络来学习搜索算法中获得的知识,模拟搜索算法的...

    google_AlphaGo深度学习算法论文

    ### Google AlphaGo深度学习算法论文解析 #### 一、引言与背景 本文介绍了一篇重要的研究论文,该论文详细阐述了如何通过深度学习技术改进计算机围棋程序,并使其能够达到甚至超越人类专业棋手的水平。这篇论文的...

    一个中国象棋程序和一个配套的基于蒙特卡洛算法及神经网络的人工智能(模仿阿尔法狗)源码.zip

    本文将深入探讨一个基于中国象棋程序的源码,该程序采用蒙特卡洛算法和神经网络技术,以模仿著名的AlphaGo。这个项目,名为"Chinese-Chess-AI-master",旨在实现一个具有高级智能水平的中国象棋AI,通过模拟和学习来...

    蒙特卡洛算法实现的井字棋

    蒙特卡洛算法是一种基于概率统计的搜索方法,广泛应用于游戏AI中,特别是像井字棋这样的有限步数且完全信息的游戏。在井字棋的MCTS实现中,算法会模拟大量随机的游戏结束情况,通过回溯每次选择的结果来估计每个可能...

    AlphaGo源码

    AlphaGo是由DeepMind公司开发的一款人工智能程序,它在2016年震惊全球,因为它是第一个在围棋比赛中击败世界冠军的AI系统。这个程序的成功标志着人工智能在复杂策略游戏中的重大突破,同时也为深度学习和强化学习的...

    深度解读AlphaGo原理

    AlphaGo的核心原理是结合了深度学习和蒙特卡洛树搜索(MCTS)算法。深度学习部分主要使用了深度神经网络,包括两个主要的网络:策略网络(Policy Network)和价值网络(Value Network)。策略网络用于选择最佳的落子...

    ( AlphaGo Zero slides.pdf )

    从给定文件中的内容可以提炼出关于AlphaGo系列算法的知识点,包括其发展历史、强化学习、蒙特卡洛树搜索(MCTS)、神经网络训练以及经验结果分析。 AlphaGo系列算法的发展可以追溯到AlphaGo Fan,它在2015年10月...

    AlphaGo MCTS.py.zip_AlphaGo MCTS_MCTS_alphago

    MCTS(Monte Carlo Tree Search,蒙特卡洛树搜索)是AlphaGo的核心算法之一,它结合了随机模拟和搜索优化,使得AI能够在复杂的决策环境中进行高效的学习和决策。下面我们将深入探讨AlphaGo MCTS的基本原理和实现细节...

    一个中国象棋程序和一个配套的基于蒙特卡洛算法及神经网络的人工智能(模仿阿尔法狗).zip

    A Chinese Chess program and a AI based on Monte Carlo Tree Search and Neural Network(like AlphaGo)一个中国象棋程序和一个配套的基于蒙特卡洛算法及神经网络的人工智能(模仿阿尔法狗)

    AlphaGo自我对弈50盘棋谱

    综上所述,AlphaGo自我对弈的50盘棋谱是人工智能与围棋结合的杰作,它们展示了深度学习、强化学习和蒙特卡洛树搜索等技术在复杂决策问题中的强大能力。这些棋谱不仅是围棋史上的珍贵资料,也是人工智能研究的重要...

    alphaGo论文

    AlphaGo通过结合蒙特卡洛树搜索和神经网络,创造了一种新的搜索算法,能够有效地在围棋的超大搜索空间中找到最佳的下棋策略。 AlphaGo的成功不仅仅是技术上的胜利,它还意味着对于复杂决策问题,人工智能具有了通过...

    AlphaGo原理解析(2)源码

    在这个解析中,我们将深入探讨AlphaGo的核心算法、技术和实现细节。 一、深度学习基础 AlphaGo的核心是深度学习,它主要使用了两种类型的神经网络:策略网络(Policy Network)和价值网络(Value Network)。策略...

    AlphaGo论文

    《AlphaGo论文》是机器学习领域的一篇里程碑式文献,它标志着人工智能在围棋这一复杂智力游戏中的重大突破。这篇论文详细介绍了DeepMind团队如何利用深度学习和强化学习技术,结合蒙特卡洛树搜索(Monte Carlo Tree ...

    AlphaGo源码(来自GitHub)

    通过对RocAlphaGo源码的研究,我们不仅可以了解到AlphaGo的工作原理,还能深入理解深度学习、强化学习和蒙特卡洛树搜索等方法在实际问题中的应用。这对于提升我们的AI编程能力,以及开发类似智能系统具有极大的启示...

    如何理解AlphaGo Zero背后涉及到的技术

    AlphaGo Zero摒弃了人类知识的输入,完全通过自我学习的方式,在没有人类数据的情况下,通过深度学习(DNN)和蒙特卡洛树搜索(MCTS)算法实现了与人类围棋高手抗衡的水平。AlphaGo Zero相较于前代AlphaGo Lee,最大...

    人工智能AlphaGo.pptx

    最后,AlphaGo结合蒙特卡洛树搜索算法,以概率模型预测每一步的最佳走法,有效地平衡了探索和利用,使得决策更为精准。 AlphaGo的成功不仅在于其技术的创新,也在于它为人工智能领域带来了深刻的启示。它的出现推动...

Global site tag (gtag.js) - Google Analytics