• 导语
  • 多臂赌博机问题
  • 马尔可夫决策过程
    • MDPs
  • 蒙特卡罗与马尔可夫决策过程
    • UniformBandit Algorithm
    • Policy Rollout Algorithm
    • Multi-Stage Rollout
    • Sparse Sampling
    • UCB1算法
    • UCT算法
  • 结语
  • 疑问
  • 参考资料

导语

2016年 AlphaGo 横空出世,在AI界和围棋界掀起了一阵腥风血雨。宝刀一出,无数围棋高手如樊麾,李世石,柯洁等人先后被斩于马下。

正所谓:十步杀一人,千里不留行。事了拂衣去,深藏功与名。

AlphaGo 使用的技术有深度神经网络树搜索,这篇文章主要介绍一下树搜索。

简单的说 Monte-Carlo Tree Search(MCTS)的意思就是讲蒙特卡罗抽样的思想用到树搜索上。在我了解到MCTS思想背后的简单和暴力之后,在棋类领域机器打败人类是必然的事情。但我认为这仅仅能说明机器的计算水平很高,这是AI领域进步的一小步,现在的AI离真正的智能还很远。

[2016, Mastering the game of Go with deep neural networks and tree search - DeepMind]
对于人工智能来说,围棋一直被视为最具挑战性的经典游戏,这是由于其巨大的搜索空间以及难于评估的棋盘盘面和走子。这里我们介绍了一个新方法:使用价值网络 (value networks )来评估棋盘盘面和使用策略网络 (policy networks )来选择走子。为了训练这些深度神经网络,我们将有监督学习(从人类职业比赛中学习)和增强学习(从自我对抗的比赛中学习)创新地结合在一起。在没有使用任何前瞻搜索的情况下,这些神经网络的水平已经相当于最先进的使用蒙特卡罗树搜索(MCTS: Monte Carlo tree search)的程序,这些程序模拟了成千上万的随机的自我对抗盘局。我们还提出了一种将蒙特卡罗仿真和价值网络以及策略网络结合起来的新搜索算法。使用该搜索算法后, AlphaGo 在和其他围棋程序的对弈中,赢了 99.8%的盘局,并且以 5 比 0 击败了欧洲围棋冠军。这是计算机程序首次在全尺寸的围棋对抗中击败职业围棋选手,这个壮举以前被认为是至少十年以后才会发生。

[知乎]Alphago打败的可不是李世石抑或全人类,而是围棋这项智力运动千百年来演变发展积攒而出的人类自信。

多臂赌博机问题

这里又要介绍一个新的概念了:Multi-Arm Bandit Problem 多臂赌博机问题。

设想我们身处在一个赌城中,面前是多台赌博机,但我们不知道每台赌博机输或者赢的概率。那我们怎么能在给定一定的次数,例如玩100次,获得最大的收益呢?

本能的最简单想法是,我们将每台机器都试w次(例如10次),统计每台机器拉动10次拉杆的最终收益,选择收益最大的拉杆一直拉。。。

那么请问这样的做法是能保证最大收益么? 实际上这是一个两难的境地(exploration-exploitation),一方面我们要尝试了解哪台机器会有最大的收益,另一方面我们要牺牲潜在的收益来多尝试。

以上就是多臂赌博机问题。

马尔可夫决策过程

我们要求解的问题是Markov Decision Processes(马尔可夫决策过程)。

什么是Markov Decision Processes呢?

MDPs

An MDP has four components: S, A, Pr, Pt :
- finite state set S
- finite action set A
- Transition distribution Pr(s’ | s, a)
Probability of going to state s’ after taking action a in state s
First-order Markov model
- Bounded reward distribution Pr(r | s, a)
Probability of receiving immediate reward r after taking action a in state s
First-order Markov model

给定一个MDP,我们希望计算出一个策略,计算这个策略可以是online或者offline的。
一个策略是状态到动作的随机映射。

π:S → A
π(s) is action to do at state s
specifies a continuously reactive controller

怎么衡量策略的好坏呢?

我们实际上是使用一个值函数,最优的策略是所有状态获得回报(reward)最大的那个策略。

MDP问题规模比较小的时候,可以使用值迭代或者策略迭代求解。

但我们对有指数级别的状态空间的MDP问题感兴趣。传统的方法对于这类问题就无能为力了。例如象棋,围棋。

蒙特卡罗与马尔可夫决策过程

蒙特卡罗思想即抽样的思想深深的影响了各个领域。那么我们可以用抽样的思想求解MDPs问题么?

是的,我们可以。

不是状态空间大么? 我们用随机模拟的思想求解MDP。

前后提出了以下算法:

UniformBandit Algorithm

UniformBandit Algorithm (NaiveBandit from [Even-Dar et. al., 2002])在2002年,提出了朴素赌博机算法。

思想:
- 拉动每个拉杆w次
- 返回平均奖励最大的拉杆

Policy Rollout Algorithm

思想:
- 对于每个动作,执行simQ w次
- 选择平均奖励最大的simQ对应的动作。

Multi-Stage Rollout

篇幅原因,不做详细介绍。

总结一下上面的算法,虽然好用,但是效率不高,也不能保证最优或者接近最优。

接下来有人提出了Sparse Sampling 算法。

Sparse Sampling

是Kearns在2002年提出的,这个算法是可以保证最优的。但是这个算法的问题是建立的搜索树是指数级增长的。

Each state generates kw new states
(w states for each of k bandits)
• Total # of states in tree (kw)^h

  • 好消息
    这个算法振奋人心的是我们可以获得近似最优,同时这个规划算法的运行时间不依赖于状态空间的大小!

  • 坏消息
    但是搜索树值指数级的。

  • 实际应用
    我们使用较小的h。降低指数级的增长。

Sparse Sampling 不太好用的原因是,它浪费掉时间探索树前景不好的部分。它把资源都评价的分配给了每一个状态。

我们能否平衡exploitation 和 exploration呢?

UCB1算法

在2002年Auer提出了 UCB1 算法解决多臂赌博机问题。

UCB1(Upper Confidence Bound)上置信区间,这是概率论中的一个概念,意思是估计未知参数的可信程度,以区间的形式给出。有时我们仅仅关心上限或者下限。这就提出了单侧置信上限或者下限的概念。

简单的说这个算法,平衡了exploitation 和 exploration。在保证一定收益的同时,又不放弃潜在的收益。

UCT算法

在2006年Kocsis & Szepesvári提出了将UCB1的思想用在解决树搜索的想法,提出了UCT(Upper Confidence with Tree-based Search)

蒙特卡洛树搜索(MCTS: Monte-Carlo tree search)利用蒙特卡洛 rollouts 来评估每个盘面在搜索树中的值。运行越多的仿真,搜索树变得越大,相对值也越准确。用于在搜索过程选择动作的策略也随着时间推移而提高,该策略是通过选择有更高值的子树实现的。逐渐地,策略收敛到最优方案,评估也收敛到最优值函数。目前最强的围棋程序是基于MCTS 的,并通过训练成能预测专业选手的走子来得以加强 。这些策略用于将搜索收窄到一束最有可能的动作,并在下棋时采样动作。该方法达到了很高的业余选手的水平。但是,这些以前的工作局限于肤浅的策略,或值函数是基于输入特征的线性组合 。

UCT建立的搜索树如下:

结语

近年来围棋领域最大的突破是MCTS思想的引入。

对于人工智能来说,围棋在许多方面都是经典的难题:富有挑战的决策任务,棘手的搜索空间等等。

在2016年的Mastering the game of Go with deep neural networks and tree search - DeepMind一文中,提出了策略或值函数直接进行近似估值似乎不可行,提出了策略网络以及价值网络结合的思想。

基于这个思想AlphaGo 最终达到了围棋的职业水准,这也给其他看起来不可触及的人工智能领域达到人类的水平带来了希望。

疑问

留下的疑问对于此类问题,我们能否实现基于深度学习和MCTS的通用模拟器?

参考资料

[1] 概率论与数理统计

[2] L. Kocsis and C. Szepesvári, “Bandit based monte-carlo planning,” Proc. ECML, pp. 282–203, 2006.

[3] C. B. Browne et al., “A Survey of Monte Carlo Tree Search Methods,” Comput. Intell. AI Games, IEEE Trans., vol. 4, no. 1, pp. 1–43, 2012

[4] CS188: Artificial Intelligence https://edge.edx.org/courses/course-v1:Berkeley+CS188+SP17/info

[5] Monte-Carlo Planning: Basic Principles and Recent Progress http://videolectures.net/icaps2010_fern_mcpbprp/

[6] S. Sanner, “Relational dynamic influence diagram language (rddl): Language description,” Unpubl. ms. Aust. Natl. Univ., 2010.

[7] S. J. Russell and N. Peter, Artificial Intelligence A Modern Approach.pdf.

[8] D. Silver et al., “2016 - Mastering the game of Go with deep neural networks and tree search - DeepMind nature16961,” Nature, vol. 529, no. 7587, pp. 484–489, 2016.

AlphaGo与蒙特卡罗树搜索相关推荐

  1. AlphaGo背后的搜索算法:蒙特卡罗树搜索 alphago 代码

    代码: https://github.com/Rochester-NRT/AlphaGo AlphaGo背后的搜索算法:蒙特卡罗树搜索 本文首发于微信公众号号"编程派".微信搜索& ...

  2. 系统学习深度学习(四十)--基于模拟的搜索与蒙特卡罗树搜索(MCTS)

    转自:https://www.cnblogs.com/pinard/p/10470571.html 1. 基于模拟的搜索概述 什么是基于模拟的搜索呢?当然主要是两个点:一个是模拟,一个是搜索.模拟我们 ...

  3. 蒙特卡罗树搜索之初学者指南

    摘要: 一直以来,学术界普遍认为在围棋游戏中机器是远不能和人类相比的,它被认为是未来十年内人工智能需要实现的目标之一.令人惊讶的是,在2016年3月由谷歌发明的Alpha Go以4-1击败了韩国的世界 ...

  4. 强化学习基础 | (18) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)

    原文地址 在基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基于模型的 ...

  5. 基于蒙特卡罗树搜索的智能行程规划系统设计(二)一个简单的DEMO

    @基于蒙特卡罗树搜索的智能行程规划系统设计 基于蒙特卡罗树搜索的智能行程规划系统设计DEMO0.1 github链接.https://github.com/blue-sky-sea/MCTS-TRAV ...

  6. 蒙特卡罗树搜索(MCTS)

    蒙特卡罗树搜索(MCTS) 一种基于树结构的,在搜索空间巨大时仍有效的方法(区别于极大极小搜索和Alpha-Beta搜索) 1.思想: 将搜索树集中在更值得搜索的分枝上,如果某个着法不错,蒙特卡罗树会 ...

  7. 基于蒙特卡罗树搜索的智能行程规划系统设计(一)最初的启发

    引言 如今旅游越来越受到人们的欢迎,旅游规划成为了必不可少的事情.然而,对于大多数旅游新手来说,制作一份完美的旅游规划是非常困难的事情.如果寻求专业的旅游规划师的帮助,或许能获得很好的旅游行程规划,但 ...

  8. 蒙特卡罗树搜索的笔记

    一.树搜索 树搜索算法:1.盲目搜索→深度优先.广度优先:2.贪心算法→A*:3.博弈树算法→极小化极大算法(minmax)假设对手每一步都是最优的策略,即对手永远能让我方收益最小化,这样得到的策略是 ...

  9. 蒙特卡洛树搜索 棋_蒙特卡罗树搜索赢得黑白棋

    蒙特卡洛树搜索 棋 With the COVID-19 pandemic still wreaking havoc around the world, many of us have been stu ...

最新文章

  1. jenkins获取远程服务器文件,Jenkins用SSH传输文件到远程服务器
  2. Linux中autoduck批量对接,科学网—用AutoDock进行分子对接教程——半柔性对接 - 杜文义的博文...
  3. 洛谷 - P4001 [ICPC-Beijing 2006]狼抓兔子(网格图最大流转换为对偶图最短路)
  4. exchange 管理员只有创建新用户无删除的权限设定方法
  5. 阿里云 cGPU 容器技术白皮书
  6. java 进制转换工具_Java实现的进制转换工具类完整示例
  7. Asp.net页面跳转的方法
  8. 英特尔AI大会:新版AI芯片
  9. hbase snappy 安装_Hadoop HBase 配置 安装 Snappy 终极教程
  10. springboot 入门详细教程 源码
  11. 路由器交换机:静态路由
  12. React 模拟点击事件
  13. 关于HtmlCxx对,C++ 解析,编辑,重新生成HTML的
  14. DataRow对象的RowState和DataRowVersion属性特点
  15. 与门、或门、非门、与非门、或非门、异或门、同或门
  16. 小Demo:自动提款机
  17. H5图片预览及上传(WEB前端)
  18. Python中Pyinstaller使用方法
  19. js获取id后添加html代码,js获取Id的方法getElementById与$的由来和用Id判断元素是否存在及批量动态获取 Id...
  20. 温老师的论坛,欢迎大家踊跃发言!

热门文章

  1. 登录服务器显示需要输入密码,远程服务器每次都需要输入账号密码
  2. Vimeo高级API:使用SCRIBE在JAVA中搜索公共视频
  3. 计算机图形学名词解释
  4. 国产芯片替代-推动ARM服务器芯片-瑞星微3588
  5. 王菲离婚后首发微博谈及与李亚鹏离婚原因
  6. 浅谈 C/S 和 B/S 架构
  7. Android样式之view animation
  8. 更换手表电池后,如何关闭压合式手表后盖--工具:两枚硬币,钳子,布或纸巾,木板
  9. absolute和fixed的区别
  10. 博世自动驾驶的“改革开放”