一、目标

一种启发式的搜索算法,在搜索空间巨大的场景下比较有效

算法完成后得到一棵树,这棵树可以实现:给定一个游戏状态,直接选择最佳的下一步

二、算法四阶段

1、选择(Selection)

父节点选择UCB值最大的子节点作为当前节点
U C B = V i ‾ + c 2 l n N n i UCB=\overline{V_{i}} +c\sqrt{\frac{2lnN}{n_{i}}} UCB=Vi​​+cni​2lnN​ ​
其中,c通常取2。

n i n_{i} ni​代表 i i i 节点被选择的次数, N N N代表其父节点被选择的次数。

V i ‾ \overline{V_{i}} Vi​​ 代表 i i i 节点的平均价值大小(例如 i i i 节点 V i = v , n i = 3 V_{i}=v,n_{i}=3 Vi​=v,ni​=3,则 V i ‾ = v / 3 \overline{V_{i}}=v/3 Vi​​=v/3)。

2、扩展(Expansion)

为当前节点创建一个或多个子节点(子节点代表当前节点下可采取的动作)

3、仿真(Simulation/Rollout)

在某一节点用随机策略进行模拟(rollout)

def Rollout(S_i): # S_i = 当前状态While True: # S_i达到终止条件/状态(下棋中某方获胜或平局)if S_i a terimal state: # 返回结果valuereturn value(S_i)   # 还未终止,则# 随机选择一个当前状态下的可用动作A_i = random(available_action(S_i)) # 在当前状态下采取动作,得到新的状态S_i = simulate(A_i, S_i)

4、反向传播(Backpropagation)

得到模拟结果后不断反向更新父节点

三、运行过程

n代表当前节点被探索的次数。

则运行过程如下:

1、选择节点

  • 当前节点是叶节点,则选择该节点
  • 当前节点有孩子,孩子中UCB值最大的作为选择的节点

2、节点扩展 + 模拟

  • 若选择的节点未模拟过(n=0),则进行模拟,得到结果后更新该节点 n=1 , value=结果数值。
  • 若选择的节点模拟过(n≠0),则扩展节点。添加在该节点下所有可采取的动作,作为孩子
    • 选择第一个孩子作为当前节点,进行模拟
def Rollout(S_i): # S_i = 当前状态While True: # S_i达到终止条件/状态(下棋中某方获胜或平局)if S_i a terimal state: # 返回结果valuereturn value(S_i)   # 还未终止,则# 随机选择一个当前状态下的可用动作A_i = random(available_action(S_i)) # 在当前状态下采取动作,得到新的状态S_i = simulate(A_i, S_i)

3、反向传播

  • 当孩子得到 V c = v , n c + = 1 V_{c}=v,n_{c}+=1 Vc​=v,nc​+=1,反向传播到父节点,父节点 V p + = v , n p + = 1 V_{p}+=v,n_{p}+=1 Vp​+=v,np​+=1,直至传播到根节点。

三、实例

具体样例可参考博客蒙特卡洛树搜索(MCTS)详解、蒙特卡洛树搜索 MCTS 入门或b站视频AI如何下棋?直观了解蒙特卡洛树搜索MCTS!!!

蒙特卡洛树搜索(MTCS)相关推荐

  1. 围棋AI,蒙特卡洛树搜索

    目录 1 蒙特卡罗方法(Monte Carlo method) 2. 蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS) 3 Upper Confidence Bounds(U ...

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

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

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

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

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

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

  5. 蒙特卡洛树搜索_Query 理解和语义召回在知乎搜索中的应用

    分享嘉宾:方宽 知乎 算法工程师 文章整理:艺饭饭 内容来源:DataFunTalk 出品平台:DataFun 注:欢迎转载,转载请留言. 导读:随着用户规模和产品的发展, 知乎搜索面临着越来越大的 ...

  6. 蒙特卡洛树搜索_蒙特卡洛树搜索与Model-free DRL

    我们这里所说的MCTS(蒙特卡洛树搜索),是指通过蒙特卡洛评估和树搜索,对强化学习环境π(•|s)建模的方法. 何为蒙特卡洛? Monte Carlo method,也就是先从某个分布采样,再基于采样 ...

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

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

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

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

  9. 蒙特卡洛树搜索(The monte carlo search tree)

    蒙特卡洛树搜索又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在上世纪四十年代中期为了适应当时原子能事业的发展而发展起来的.传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特 ...

最新文章

  1. 安装yarn 心得分享
  2. 写缓冲器 + 无效队列,优化MESI协议的性能
  3. Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
  4. web页面 验证码 生成
  5. web.xml、JSP原理、指令
  6. 数学--线性代数--奇异值分解(SVD)
  7. php实现单个用户禁止重复登录,防止同一用户同时登陆
  8. 大话javascript 2期:执行上下文与执行上下文栈
  9. 汉堡菜单_汉堡菜单-可访问性和用户体验设计原则的挑战?
  10. vector C++ 详细用法
  11. (31)SystemVerilog语言编写D触发器
  12. android UI进阶之android中隐藏的layout 抽屉的运用
  13. 【TextView】实现QQ一键加群功能
  14. 人与人,人与自然。文/江湖一剑客
  15. 怎么查看内网ip?如何分辨IP是公网IP还是内网IP?
  16. Mount is denied because the NTFS volume is already exclusively opened.
  17. vim-plug插件安装
  18. 使用FFmpeg将一张图片和一段音频转换成视频
  19. 月薪 800 到 2w 加
  20. 查看Oracle数据库实例启动状态

热门文章

  1. 字节跳动否认完成支付牌照收购,但金融野心一直有
  2. 学习Python处理Excel 难度0级别 多表合并、多条件筛选、找出重复项、去重
  3. 企业邮箱登录地址设置公司域名
  4. 情感日记:2009年12月24日平安夜—“马头琴”
  5. 英语好不好,不影响做外贸
  6. puppy linux u盘 分区,让安装在U盘上的Puppy Linux像安装在硬盘上一样工作
  7. lol8月7号服务器维护,LOL8月7日更新了什么内容 8.15新版本更新维护公告
  8. JS实战应用之做LOL领图标任务~
  9. CountDownLatch,CyclicBarrier,Semaphore的使用方法以及它们之间的区别
  10. itan:ServletContext简介