添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱看球的蟠桃  ·  cv2 imread函数 ...·  3 月前    · 
活泼的番茄  ·  python tkinter ...·  11 月前    · 
面冷心慈的大象  ·  如何去掉sql ...·  1 年前    · 

蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)的原理是基于蒙特卡洛方法和树搜索的结合,用于在庞大的搜索空间中寻找最优解。它特别适用于那些状态空间巨大且难以完全遍历的问题,如复杂的博弈游戏。

MCTS 的原理可以概括为以下几个步骤:

  1. 选择(Selection)
    从根节点开始,根据某种策略(如UCT策略)递归地选择子节点,直到达到一个尚未完全展开的节点或叶子节点。选择过程中,算法会平衡 探索(访问较少但可能具有潜力的节点) 利用(已知表现较好的节点) 之间的权衡。

  2. 扩展(Expansion)
    如果达到的节点是一个未完全展开的节点,即该节点存在未被访问过的子节点,则选择一个或多个子节点加入到搜索树中。这通常涉及评估可能的下一步行动,并将它们作为新的子节点添加到当前节点下。

  3. 模拟(Simulation)
    从扩展步骤中选择的一个新节点开始, 进行一系列随机模拟(或称为rollout),直到达到一个终止状态(如游戏结束) 。在模拟过程中,通常使用默认策略(如随机策略或基于启发式的策略)来选择行动。

  4. 反向传播(Backpropagation)
    模拟结束后,将得到的结果(如得分或胜负)反向传播回搜索树的根节点,并 更新路径上每个节点的统计数据 。这些统计数据通常包括 访问次数、胜利次数和总得分等 ,用于 评估节点的价值

通过重复上述步骤,MCTS 能够在有限的计算资源和时间内构建一个搜索树,并逐步聚焦于最有希望的分支。这种方法结合了树搜索的精确性和蒙特卡洛模拟的广泛性,能够在大型状态空间中有效地找到近似最优解。

—————————————————————举栗————————————————————

下面用一个简单的井字棋游戏来说明蒙特卡洛树搜索(MCTS)中的节点、策略、扩展、模拟和反向传播。

两个玩家,一个打 (◯),一个打 (✗),轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。

节点(Nodes)

在MCTS中,节点代表游戏的一个状态。对于井字棋,每个节点代表 棋盘上的一种特定配置 。根节点代表游戏的初始状态,即空棋盘。随着游戏的进行,每个新的棋盘配置都成为树中的一个新节点。

策略(Policy)

策略用于在选择阶段决定从哪个节点向下搜索。最常用的策略是UCT(Upper Confidence Bound for Trees),它平衡了探索和利用。

  • w_i 是节点 i 的胜利次数。
  • n_i 是节点 i 的访问次数。
  • t 是父节点的访问次数。
  • c 是探索常数,用于控制探索的程度。

在选择阶段,算法会选择UCT值最高的子节点。

扩展(Expansion)

当算法到达一个 未完全展开的节点 时,扩展步骤会发生。对于井字棋,这 意味着当前玩家有一些合法的移动尚未被考虑 算法会选择其中一个未考虑的移动,并创建一个新的子节点来代表这个移动后的游戏状态

模拟(Simulation)

在扩展之后,算法进入模拟阶段。从新创建的节点开始,算法会使用一个快速但可能不完美的策略(通常是随机策略或基于简单启发式的策略)来 完成游戏 。这个阶段的目的是 快速评估当前节点的潜在价值

反向传播(Backpropagation)

模拟结束后,算法会知道这次模拟的结果(例如,哪一方赢了游戏)。然后,它会将这个结果 反向传播回搜索树的根节点,更新路径上每个节点的统计数据 。对于赢了的节点,其胜利次数会增加;对于路径上的其他节点,它们的访问次数会增加。

通过重复这些步骤(选择、扩展、模拟、反向传播),MCTS能够逐步构建出一个反映可能游戏结果和最优策略的搜索树。在决策时,算法可以选择根节点下统计数据最好的子节点作为下一步行动。

*注意: MCTS 是一种启发式搜索算法,它并不保证找到全局最优解,但在许多实际应用中已被证明是非常有效的。

1. 背景介绍 蒙特卡罗 搜索 (Monte Carlo Tree Search,MCTS)是一种基于 蒙特卡罗 方法的 搜索 算法 ,最初被应用于围棋等棋类游戏中。它通过模拟大量的随机游戏来评估每个可能的行动,并选择最优的行动。随着人工智能技术的发展,MCTS已经被广泛应用于其他领域,如自然语言处理、机器人控制、网络安全等。 作者:禅与计算机程序设计艺术 1. 背景介绍 蒙特卡罗 搜索 (Monte Carlo Tree Search, MCTS)是一种在人工智能和 机器学习 领域广泛应用的强大 算法 。它最初被应用于围棋游戏,但其通用性使其在许多复杂的决策问题中都能发挥重要作用, MCTS能够非常聪明的去探索胜率较高的路径,和dfs这类暴力穷举 算法 比起来,可以花费较少的运算资源,就能达到不错的效果,尤其对于围棋这类每步棋都有200种左右选择的游戏,使用MCTS的效果非常显著。但与此同时也要指出,MCTS并不能保证一定找到最佳路径和着法。AlphaGo和李世石比赛就输了一盘,说明不一定能百分百找到最优解。不过论整体胜率,AlphaGo和AlphaGoZero已远远超过了人类。既然围棋的变化(10的360次方)比宇宙中的原子还多,比起dfs或minimax等 算法 ,使用MCTS还是非常有 阿尔法狗下棋的时候,做决策的不是策略网络和价值网络,而是 蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS)。 本文讲解阿尔法狗2016版本和零狗中的MCTS。 我的微信公众号名称:AI研究订阅号 微信公众号ID:MultiAgent1024 公众号介绍:主要研究强化学习、计算机视觉、深度学习、 机器学习 等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!   本文是对Monte Carlo Tree Search – beginners guide这篇文章的文章翻译,以及对其代码的解释: 蒙特卡洛树搜索 在200... 蒙特卡洛树搜索 ,通常简称为MCTS,是一种用于决策制定的 算法 。它在众多领域中都有广泛应用,包括人工智能、博弈论和自动规划等。MCTS的主要优势之一是它可以在没有先验知识的情况下,有效地 搜索 大规模的决策空间,因此被广泛应用于复杂的游戏和规划问题中。MCTS的核心思想是通过随机模拟来估计每个可选行动的价值,从而帮助我们选择下一步的最佳行动。它通过建立一颗 搜索 来组织这些模拟,并使用统计信息来引导 搜索 过程,以便更有可能找到最佳的决策。 最近学习过程中接触到 蒙特卡洛树搜索 这个 算法 ,在此记录一下学习过程中参考的资料以及代码。下面这几篇文章算是对MCTS讲解的比较详细的。第一篇有比较详细的例子说明,第二篇对于理论以及背景讲解的比较详细,第三篇提到了更加general的基于模拟的 搜索 。在此附上自己的一个初步理解。最简单的决策是前向 搜索 ,这种方法对当前的决策 进行遍历,这其实是一个mdp问题,但是当问题的规模稍微大一点的时候,遍历所有状态...