【强化学习】MCTS: 蒙特卡洛树搜索

  • Monte-Carle 树搜索是一种前向搜索(Forward Search)
    在这里插入图片描述

  • 用的是基于采样的模型
    在这里插入图片描述

在这里插入图片描述

可以先看一下下文中的一个例子,mini-max搜索是一种传统的博弈树算法,在国际象棋中获得了比较好的应用。

但是需要遍历整个游戏树,对于棋格数多许多的围棋,构建完整的游戏树代价是十分昂贵的。

28 天自制你的 AlphaGo (6) : 蒙特卡洛树搜索(MCTS)基础

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 选择 Selection:从根节点 R 开始,递归选择最优的子节点(后面会解释)直到达到叶子节点 L。
  • 扩展 Expansion:如果 L 不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建一个或者更多的字子节点,选择其中一个 C。
  • 模拟 Simulation:从 C 开始运行一个模拟的输出,直到博弈游戏结束。
  • 反向传播 Backpropagation:用模拟的结果输出更新当前行动序列。

在这里插入图片描述

在这里插入图片描述

  • 反向传播
    反向传播是从叶结点(simulation 开始的那个节点)到根结点。在这条路径上所有的节点统计信息都会被计算更新。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看蒙特卡罗树搜索 Monte Carlo Tree Search_John Levine的例子来对应上述的流程图:

第一轮迭代:
在这里插入图片描述
第二轮迭代:
在这里插入图片描述

第三轮迭代:
在这里插入图片描述

  • MCTS的终止

取决于你什么时候想让他停止,比如说你可以设定一个时间,比如五秒后停止计算。

一般来说最佳走法就是具有最高访问次数的节点,这点可能稍微有点反直觉。这样评估的原因是因为蒙特卡洛树搜索算法的核心就是,越优秀的节点,越有可能走,反过来就是,走得越多的节点,越优秀。

在这里插入图片描述

在这里插入图片描述

参考资料:
【详细原理】蒙特卡洛树搜索入门教程!
Monte Carlo Tree Search – beginners guide

蒙特卡洛树搜索最通俗入门指南
28 天自制你的 AlphaGo (6) : 蒙特卡洛树搜索(MCTS)基础
蒙特卡洛树搜索 MCTS 入门
机器学习 alphaGo — monte carlo search tree(1)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS) 算法是一种用于决策问题的启发式搜索算法。MCTS 在不完全信息和高复杂度的问题中具有很好的效果。下面将介绍 MCTS 算法的 Java 版实现。 MCTS 算法的主要流程如下: 1. 创建一个根节点,表示当前的游戏状态。 2. 重复以下步骤,直到时间或迭代次数达到上限: a. 选择最有价值的子节点。从根节点开始,递归地选择子节点,直到找到一个未完全探索的节点。 b. 扩展选择的节点。根据游戏规则,生成该节点所有的合法子节点,并将其加入到树中。 c. 随机模拟选择节点的子节点。从扩展的子节点中随机选择一个,并进行模拟。直到游戏结束,得到一个模拟结果。 d. 更新选择节点和其祖先节点的价值。根据模拟结果,更新选择节点及其祖先节点的胜利次数和访问次数。 3. 选择最优的子节点作为下一步的决策。 在 MCTS 的实现中,主要涉及以下几个关键的类和方法: 1. Node 类:表示搜索树的节点,包含节点的游戏状态、访问次数和胜利次数等信息。 2. Selection 方法:通过选择最有价值的子节点来进行节点的选择。 3. Expansion 方法:扩展选中的节点,生成其所有合法的子节点。 4. Simulation 方法:随机模拟选中节点的子节点进行游戏,得到模拟结果。 5. Backpropagation 方法:根据模拟结果,更新节点和其祖先节点的访问次数和胜利次数。 6. BestChild 方法:选择最优的子节点作为下一步的决策。 通过以上关键步骤和方法的结合,可以实现 MCTS 算法的 Java 版本。使用该版本,可以在不完全信息和高复杂度问题上进行决策。例如,在棋类游戏中,MCTS 算法可以从当前局面搜索出最有希望的下一步,并进行决策。 总结而言,基于蒙特卡洛树搜索 (MCTS) 算法的 Java 版实现,通过节点的选择、扩展、模拟和回溯等关键步骤,可以用于解决复杂的决策问题。这种算法在游戏、人工智能等领域具有广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值