蒙特卡洛树搜索:

  MCTS使用蒙特卡洛模拟来估计每个节点的价值. 其默认策略为贪婪算法, 即每次选择价值最高的节点进行模拟, 在每次模拟得到结果后, 将结果反馈回每个上级节点, 更新节点价值. 通常来讲, 每个访问到的节点都会加入到树中, 实际上为了节省内存每次只加入一个子节点, 可以通过对旧节点剪枝或多次模拟后再加入新节点来进一步节省内存.

贪婪算法的缺点在于对于一个节点, 如果产生了一次或几次不利的结果后, 搜索树就会避开访问这个节点, 这意味着搜索树的广度会降低, 可能会忽略更好的选择. 这时应该选择UCB1算法(Upper Confidence Bound), 对应节点产生的价值为:

其中C为搜索规模常数, 当C取值越大, 树越偏向广度搜索, 越小就越偏向深度搜索.

AMAF(all moves as first) 算法的核心思想是每一步落子有一个恒定的价值, 不管是什么时候落下的.

当给定状态s, 模拟出期望结果z, 选取a作为后续落子, AMAF value计算为:

当第i次模拟时, 动作a被执行, 得到状态s时返回1, 否则则返回0

RAVE(rapid action value estimation) RAVE算法融合了蒙特卡洛树搜索和AMAF算法, 它不计算蒙特卡洛价值, 而是计算AMAF价值. 其核心思想是归纳整个子树, 即动作a的价值在状态s下, 或者在子树中其他状态下都一样, 即a的价值是在所有情况下估计得到而不是执行动作时候得到.

如图, 当使用蒙特卡洛价值估计时, 在s状态下, 如果走a, 会导致两次失败, 价值为0/2, 如果走b, 会有两次成功一次失败, 价值为2/3, 则会选择走b. 当使用AMAF算法价值估计时, 在s状态下, 如果走a, 会有三次成功和两次失败包含动作a, 价值为3/5, 如果走b, 会有两次成功和三次失败包含动作b, 价值为2/5.

RAVE和AMAF算法得到价值会有一定误差但是运行速度较快.

蒙特卡洛树,AMAF,Rave浅析的更多相关文章

  1. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

  2. 基于蒙特卡洛树搜索(MCTS)的多维可加性指标的异常根因定位

    摘要:本文是我在从事AIOps研发工作中做的基于MCTS的多维可加性指标的异常根因定位方案,方案基于清华大学AIOPs实验室提出的Hotspot算法,在此基础上做了适当的修改. 1        概述 ...

  3. 【Todo】蒙特卡洛(蒙特卡罗)树 & 卷积网络

    https://www.zhihu.com/question/41176911/answer/90066752 这里面有关于Deep Learning和蒙特卡洛树的一些内容 https://www.z ...

  4. 蒙特卡罗树搜索(MCTS)【转】

    简介 最近AlphaGo Zero又火了一把,paper和各种分析文章都有了,有人看到了说不就是普通的Reinforcement learning吗,有人还没理解估值网络.快速下子网络的作用就放弃了. ...

  5. AlphaGo原理浅析

    一.PolicyNetwork(走棋网络) 首先来讲一下走棋网络.我们都知道,围棋的棋盘上有19条纵横交错的线总共构成361个交叉点,状态空间非常大,是不可能用暴力穷举的方式来模拟下棋的.但是我们可以 ...

  6. AlphaGo论文的译文,用深度神经网络和树搜索征服围棋:Mastering the game of Go with deep neural networks and tree search

    转载请声明 http://blog.csdn.net/u013390476/article/details/50925347 前言: 围棋的英文是 the game of Go,标题翻译为:<用 ...

  7. Monte Carlo tree search 学习

    https://en.wikipedia.org/wiki/Monte_Carlo_tree_search 蒙特卡洛树搜索(MCTS)基础 http://mcts.ai/about/index.htm ...

  8. 简单二维元胞自动机 MATLAB实现

    20世纪50年代,乌尔姆和冯·诺依曼(对此人真是崇拜的五体投地)为了研究机器人自我复制的可能性,提出了一种叫做元胞自动机(Cellular Automaton,CA)的算法.该算法采用局相互作用规则, ...

  9. 【Todo】【读书笔记】机器学习-周志华

    书籍位置: /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/<机器学习_周志华.pdf> 一共442页.能不能这个周末先囫囵吞枣看完呢.哈哈 ...

随机推荐

  1. Eclipse上传新项目到GitLab

    E&T: Eclipse; GitLab; GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(https://github.com/gitlabhq/gitlabhq  ...

  2. SQL盲注学习

    如果数据库运行返回结果时只反馈对错不会返回数据库当中的信息 此时可以采用逻辑判断是否正确的盲注来获取信息 盲注是不能通过直接显示的途径来获取数据库数据的方法 1.布尔盲注 2.时间盲注 3.报错型盲注 ...

  3. Go Example--json

    package main import ( "encoding/json" "fmt" "os" ) type Response1 stru ...

  4. java数据结构之HashSet和HashMap(java核心卷Ⅰ读书笔记)

    增加 删除 remove方法,可以删除指定的一个元素. 查找 ********************* **************************** HashSet既不可以用 0 1 2 ...

  5. Java 内部类的作用

    1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口 ...

  6. day02代码

    1.while.....else.....语句,break,continue,if,while,用户交互,输出,运算符 # 用户有三次登录机会 _username = 'tom' _password ...

  7. day02 python数据类型

    python里面常见的数据类型 目录 一.int 整形只有一个方法bit_length() 可以显示二进制长度 a = 10b = a.bit_length()print(b)1010 二.bool ...

  8. MySQL:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'. 原因是:mysql数据库的user表里,存 ...

  9. C/C++常见错误

    1.段错误 段错误:指的是访问了不可访问的内容,内存要么是不存在的,要么是受到系统保护的. 如:1.释放了不存在的内存(堆内存) ; free a; 2.代码被重复定义了 往往是由于头文件被重复定义了 ...

  10. jupyter notebook快捷键使用指南

    Jupyter Notebook 是一个交互式笔记本程序, 其有丰富的快捷键来便捷的完成工作.Notebook 有两种键盘输入模式.即命令模式和编辑模式,这与 Vim 有些类似.在编辑模式下,可以往单 ...