蒙特卡洛树搜索(MCTS)详解

这篇具有很好参考价值的文章主要介绍了蒙特卡洛树搜索(MCTS)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

蒙特卡洛树搜索(MCTS)详解

蒙特卡洛树搜索是一种经典的树搜索算法,名镇一时的 AlphaGo 的技术背景就是结合蒙特卡洛树搜索和深度策略价值网络,因此击败了当时的围棋世界冠军。它对于求解这种大规模搜索空间的博弈问题极其有效,因为它的核心思想是 把资源放在更值得搜索的分枝上,即 算力集中在更有价值的地方

MCTS算法的基本过程

MCTS的算法主要分为四个步骤,分别为 选择、扩展、模拟、回溯

mcts,简简单单强化学习,人工智能方法杂谈,算法

STEP 1:选择(Selection)

从根节点开始,递归选择最优的子节点,最终到达一个叶子结点。

根据什么去判断节点的优劣呢?Upper Confidence Bounds(UCB)
U C B 1 ( S i ) = V i ‾ + c log ⁡ N n i , c = 2 U C B 1\left(S_{i}\right)=\overline{V_{i}}+c \sqrt{\frac{\log N}{n_{i}}}, c=2 UCB1(Si)=Vi+cnilogN ,c=2
其中, V i ‾ \overline{V_{i}} Vi 为该节点的平均价值大小; c c c 为常数,通常取2; N N N 为总探索次数; n i n_i ni 为当前节点的探索次数。

有了上面的 UCB 公式,就可以计算所有子节点的 UCB 值,并选择 UCB 值最大的子节点进行迭代。

STEP 2:扩展(Expansion)

如果当前叶子结点不是终止节点,那么就创建一个或者更多的子节点,选择其中一个进行扩展。

STEP 3:模拟(Simulation)

从扩展节点开始,运行一个模拟的输出,直到博弈游戏结束。比如,从该扩展节点出发,模拟了十次,最终胜利九次,那么该扩展节点的得分就会比较高,反之则比较低。这里也给出一个模拟过程的伪代码:

def Rollout(S_i): 
  ## S_i:当前状态
	loop forever: 
    ## 无限循环
		if S_i a terimal state: 
      ## 如果当前状态是博弈的终止状态
      ## 则返回对 S_i 这个状态的价值,跳出循环
			return value(S_i)   
		
		## 如果还没到终止状态
    ## 随机选取当前状态下能够采取的一个动作
		A_i = random(available_action(S_i)) 
    ## 通过当前状态 S_i 与随机选取的动作 A_i 来计算出下一步的状态并赋值给 S_i
		S_i = transform(A_i, S_i)

STEP 4:回溯(Backpropagation)

使用第三步模拟的结果,反响传播以更新当前动作序列。

举个例子

这个博文里面的例子已经很形象了!这里自己再写一次,加深印象。

https://blog.csdn.net/qq_41033011/article/details/109034887

初始化:最初有一个根节点 S 0 S_0 S0,树中每个节点都有两个值,节点的价值 T T T 和 该节点的访问次数 N N N

mcts,简简单单强化学习,人工智能方法杂谈,算法

第 1 次迭代:节点 S 0 S_0 S0 为根节点也是叶节点,并且不是终止节点,因此对其进行扩展。假设 S 0 S_0 S0 后有两个策略,转移后分别为 S 1 S_1 S1 S 2 S_2 S2

mcts,简简单单强化学习,人工智能方法杂谈,算法

随后,可以使用 UCB 公式来选择对 S 1 S_1 S1 扩展还是对 S 2 S_2 S2 扩展。这里 N 1 N_1 N1 N 2 N_2 N2 均为 0,因此两个节点的 UCB 值都是无穷大,因此选哪个节点都可以,这里选择 S 1 S_1 S1 进行模拟。模拟后,发现最终值为 20,于是回溯更新。 T 1 = 20 T_1 = 20 T1=20 N 1 = 1 N_1=1 N1=1 T 0 = 20 T_0 = 20 T0=20 N 0 = 1 N_0=1 N0=1

mcts,简简单单强化学习,人工智能方法杂谈,算法

第 2 次迭代:从 S 0 S_0 S0 出发进行选择,此时 S 1 S_1 S1 的 UCB 值已经不是无穷大了,而 S 2 S_2 S2 的 UCB 值仍是无穷大,因此选择 S 2 S_2 S2 进行扩展。到了 S 2 S_2 S2 后,发现 S 2 S_2 S2 为叶子结点,并且没有被探索过,因此对其进行模拟。模拟的结果假设为 10,那么进行回溯。 T 2 = 10 T_2=10 T2=10 N 2 = 1 N_2 = 1 N2=1 T 0 = 30 T_0=30 T0=30 N 0 = 2 N_0 = 2 N0=2

mcts,简简单单强化学习,人工智能方法杂谈,算法

第 3 次迭代:从 S 0 S_0 S0 出发,计算 S 1 S_1 S1 S 2 S_2 S2 的 UCB 值,选择较大的进行扩展。
U C B ( S 1 ) = 20 + 2 ∗ ln ⁡ 2 1 = 21.67 U C B ( S 2 ) = 10 + 2 ∗ ln ⁡ 2 1 = 11.67 \begin{aligned} &\mathrm{UCB}\left(\mathrm{S_1} \right)=20+2 * \sqrt{\frac{\ln 2}{1}}=21.67 \\ &\mathrm{UCB}\left(\mathrm{S_2}\right)=10+2 * \sqrt{\frac{\ln 2}{1}}=11.67 \end{aligned} UCB(S1)=20+21ln2 =21.67UCB(S2)=10+21ln2 =11.67
因此,选择 S 1 S_1 S1 进行扩展。到了 S 1 S_1 S1 后,发现它是叶节点,并且已经被探索过,那么就枚举出当前节点的所有可能的动作,并添加到树中。

mcts,简简单单强化学习,人工智能方法杂谈,算法

然后就可以像之前一样,随机选择 S 3 S_3 S3 或者 S 4 S_4 S4 进行扩展,以此类推。

Reference

蒙特卡洛树搜索 MCTS 入门:https://blog.csdn.net/qq_41033011/article/details/109034887文章来源地址https://www.toymoban.com/news/detail-801725.html

到了这里,关于蒙特卡洛树搜索(MCTS)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模-蒙特卡洛模拟

    2024年02月15日
    浏览(41)
  • 强化学习:蒙特卡洛方法(MC)

       以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 X X X ,如果正面朝上则 X = + 1 X=+1 X = + 1 ,如果反面朝上,则 X = − 1 X=-1 X = − 1 ,现在要计算 E [ X ] E[X] E [ X ] 。    我们通常很容易想到直接用定义来计算,因为我们知道正面朝上和反面朝上的概率都是

    2024年02月08日
    浏览(33)
  • 【机器学习】强化学习(三)蒙特卡洛算法

    策略迭代算法和价值迭代算法为什么可以得到理论上的最优解,在实际问题中使用价值有限? 无模型算法 三、蒙特卡洛算法 蒙特卡洛(Monte Carlo)方法是一种基于样本的强化学习算法,它通过执行和学习代理(也就是我们编程的AI)环境交互的样本路径来学习。它不需要初始知

    2024年01月19日
    浏览(42)
  • 蒙特卡洛方法的数学基础-1

    蒙特卡洛方法的数学基础-1 Bayes 公式 常用分布 Binominal Distribution Poisson Distribution Gaussian Distribution  Exponential Distribution Uniform Distribution 大数定理 均匀概率分布随机地取 N 个数 x i , 函数值之和的算术平均收敛于函数的期望值 算术平均收敛于真值 中心极限定理 n个相互独立分布

    2024年02月07日
    浏览(38)
  • 蒙特卡洛方法的收敛性和误差

    目录 1.收敛性 2.误差 3.减少方差的各种技巧 4.效率 5.优缺点 蒙特卡罗方法作为一种计算方法,其收敛性与误差是普遍关心的一个重要问题。由此可以总结出蒙特卡洛方法的优缺点。

    2024年02月06日
    浏览(28)
  • 多数问题求解之蒙特卡洛与分治法

    多数问题(Majority Problem)是一个有多种求解方法的经典问题,其问题定义如下: 给定一个大小为 n n n 的数组,找出其中出现次数超过 n / 2 n/2 n /2 的元素 例如:当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] [5, 3, 5, 2, 3, 5, 5] [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] ,则 5 5 5 是多数(majority)。 本文将

    2024年03月14日
    浏览(35)
  • 16. 蒙特卡洛强化学习基本概念与算法框架

    蒙特卡洛强化学习(简称MC强化学习)是一种 无模型 强化学习算法,该算法无需知道马尔科夫决策环境模型,即不需要提前获得立即回报期望矩阵R(维度为(nS,nA))、状态转移概率数组P(维度为(nA,nS,nS)),而是通过与环境的反复交互,使用统计学方法,利用交互数据直接进行

    2024年01月21日
    浏览(36)
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中。要计算总的反射光,每个入射方向的贡献,必须将他们在半球上相加: 为入射光线  与法线  的夹角,为方便计算可以使用法线向量和入射向量(单位化)的乘积表示。  对于基于图像的光照,入射

    2024年02月03日
    浏览(54)
  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(26)
  • 【Python数学建模常用算法代码——蒙特卡洛模型】

    蒙特卡洛方法的理论支撑其实是概率论或统计学中的大数定律。基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。下面我们以三个经典的小实验来学习下蒙特卡洛算法思想。 实验原理 在正方形内部有一

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包