MCTS树学习 MCTS,即蒙特卡罗树搜索,是一类搜索算法树的统称,可以较为有效地解决一些搜索空间巨大的问题。 如一个8*8的棋盘,第一步棋有64种着法,那么第二步则有63种,依次类推,假如我们把第一步棋作为根节点,那么其子节点就有63个,再往下的子节点就有62个…… 如果不加干预,树结构将会繁杂,MCTS采用策略来对获胜性较小的着法不予考虑 MCTS的主要步骤分为四个: 1, 选择(Selection) 即找一个最好的值得探索的结点,通常是先选择没有探索过的结点,如果都探索过了,再选择UCB值最大的进行选择(UCB是由一系列算法计算得到的值 image 其中v’表示当前树节点,v表示父节点,Q表示这个树节点的累计quality值,N表示这个树节点的visit次数,C是一个 常量参数,通常值设为1/√2 接下来再讨论怎么使用Python实现MCTS def MCTS(node): computation_budget = 3 for i in range(computation_budget): # 1\.
MCTS概述 在前面的学习中,我们分析了蒙特卡洛方法,本章节将为大家解开蒙特卡洛树搜索的“面纱”。 1.2 MCTS算法核心处理过程 MCTS算法不算太复杂,通常由如下几个核心阶段组成: l Selection (选择) 从根节点Root开始,按照一定的策略(参见后续的分析)来选择子节点 然后再重复以上的几个步骤,直至达到终止条件 蒙特卡洛树搜索算法的简单示意图可以参照下面的阐述: 图 ‑ MCTS算法的核心处理过程 可见MCTS算法本身并不复杂,它结合了对未知事件的探索及优化过程。 这样一来就有效降低了未知的更佳状态被雪藏的风险了 基于本小节的分析,我们不难发现MCTS的优点在于: l 具备一定的通用性 MCTS对于特定问题的信息没有很强的依赖性,这就意味着它可以在较小的修改范围内就适应其它问题领域 l 非对称性的树增长 MCTS总是带着“某种策略”来搜寻下一步状态,因而理论上它的树形会朝着更为有利的方向发展,这同时也让它与一些传统算法相比在性能和最终结果上都有更好的表现 图 ‑ MCTS的非对称性树示例
在AlphaGo出现之前,MCTS算法算是一类比较有效的算法。 基于MCTS的围棋博弈程序已经达到了业余爱好者的水平。 然而,传统的MCTS算法的局限性在于,它的估值函数或是策略函数都是一些局面特征的浅层组合,往往很难对一个棋局有一个较为精准的判断。 的MCTS相比,也已是不遑多让(而Value Network的计算效率更高)。 而把这些networks整合在一起的框架,就是MCTS算法。 与经典的MCTS算法类似,APV-MCTS(asynchronous policy and value MCTS)的每一轮模拟也包含四个步骤: Selection:APV-MCTS搜索树中的每条连边(s
本文链接:https://blog.csdn.net/Solo95/article/details/103218744 Monte Carlo Tree Search 为什么要学习MCTS 一部分原因是过去
棋类游戏MCTS搜索 在像中国象棋,围棋这样的零和问题中,一个动作只有在棋局结束才能拿到真正的奖励,因此我们对MCTS的搜索步骤和树结构上需要根据问题的不同做一些细化。 对于MCTS的树结构,如果是最简单的方法,只需要在节点上保存状态对应的历史胜负记录。在每条边上保存采样的动作。这样MCTS的搜索需要走4步,如下图(图来自维基百科): ? 以上就是MCTS搜索的整个过程。这4步一般是通用的,但是MCTS树结构上保存的内容而一般根据要解决的问题和建模的复杂度而不同。 6. MCTS小结 MCTS通过采样建立MCTS搜索树,并基于4大步骤选择,扩展,仿真和回溯来持续优化树内的策略,进而可以帮助对状态下的动作进行选择,非常适合状态数,动作数海量的强化学习问题。 比如AlphaGo和AlphaGo Zero都重度使用了MCTS搜索,我们在下一篇讨论AlphaGo Zero如何结合MCTS和神经网络来求解围棋强化学习问题。 (欢迎转载,转载请注明出处。
长将判负、长捉、三次重复和棋) 残局变化极深(例如双马士相全 vs 将) 因此,中国象棋 AI 的核心可以概括为: 评估函数 + 剪枝 + 置换表 + 启发式排序 + 搜索算法(AlphaBeta 或 MCTS 十、走向 AlphaZero:MCTS + 神经网络 当传统 AlphaBeta 到达上限,我们就进入 AlphaZero 体系: NN 输出: P:走法概率 V:局面价值 MCTS 进行搜索,取代 AlphaBeta 构建 MCTS 结构 每个节点存储: N(s,a) W(s,a) Q(s,a) P(s,a) 3. 自对弈训练 MCTS → 下棋 → 记录 (state, π, z) → 训练 → 更新模型 循环即可让模型不断增强。
MCTS 在 LLM 场景中是如何实现的? PRMs 和 MCTS 是完全独立的技术,还是相辅相成的? 转载:聊聊推理模型中的PRMs与MCTS 1. 前言:关于 MCTS 的那些事 MCTS(蒙特卡洛树搜索)是一种强大的搜索算法。这里用一个简明的例子,理解透 MCTS 在 llm 场景下的核心原理和工作流程。 4.关于 PRM 和 MCTS 的总结 PRM 和 MCTS 实际上是两种可以独立使用的技术,只不过,往往它们组合使用时往往能产生 1+1>2 的效果。 MCTS 往往要结合一个精确的 PRM 来用才能发挥最大效果,但 PRM 又有上述的问题,陷入一个死循环。 转载:聊聊推理模型中的PRMs与MCTS
MCTS 受到快速关注主要是由计算机围棋程序的成功以及其潜在的在众多难题上的应用所致。 MCTS 和 UCT Kocsis 和 Szepervari 在 2006 年首先构建了一个完备的 MCTS 算法,通过扩展 UCB 到 minimax 树搜索,并将其命名为 Upper Confidence 这其实是用在当前众多 MCTS 实现中的算法版本。 UCT 可以被描述为 MCTS 的一个特例:UCT = MCTS + UCB。 ---- 优点 MCTS 提供了比传统树搜索更好的方法。 缺点 MCTS 有很少的缺点,不过这些缺点也可能是非常关键的影响因素。 行为能力 MCTS 算法,根据其基本形式,在某些甚至不是很大的博弈游戏中在可承受的时间内也不能够找到最好的行动方式。 ---- 研究兴趣 从 MCTS 诞生后几年内,就有超过 150 篇与 MCTS 相关的研究论文发布,平均下来是每两周一篇新的文章。
在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用。 AlphaGo Zero的行棋主要是由MCTS指导完成的,但是在MCTS搜索的过程中,由于有一些不在树中的状态需要仿真,做局面评估,因此需要一个简单的策略来帮助MCTS评估改进策略,这个策略改进部分由前面提到的神经网络完成 具体AlphaGo Zero的MCTS如何搜索,神经网络如何训练,如何指导MCTS搜索我们在后面再讲。 2. 在自我对战学习阶段,每一步的落子是由MCTS搜索来完成的。在MCTS搜索的过程中,遇到不在树中的状态,则使用神经网络的结果来更新MCTS树结构上保存的内容。 AlphaGo Zero的MCTS搜索 现在我们来再看看AlphaGo Zero的MCTS搜索过程,在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)里,我们已经介绍了MCTS的基本原理
MCTS 的性能严重依赖策略/值逼近结果的质量(Gelly & Silver, 2007),同时 MCTS 在围棋领域的成功表明它改善了用于子节点鉴别的给定策略,事实上,这可以被看作是策略改进算子(Silver 主要贡献 MCTS 的这些特性推动了研究者们提出一种新方法,在训练步骤中利用 MCTS 的局部特性,来迭代地构建适应所有状态的全局策略。 MCTS 根节点观测结果更新价值函数和策略函数;(4)从第(2)步开始重复步骤。 该方法利用 MCTS 策略优于单独的子节点鉴别器策略(Silver et al., 2016),同时改进子节点鉴别器也会改善 MCTS 的质量(Gelly & Silver, 2007)。 马尔可夫决策过程的多批小型 finite-horizon 版本上迭代使用 MCTS。
MCTS 的性能严重依赖策略/值逼近结果的质量(Gelly & Silver, 2007),同时 MCTS 在围棋领域的成功表明它改善了用于子节点鉴别的给定策略,事实上,这可以被看作是策略改进算子(Silver 主要贡献 MCTS 的这些特性推动了研究者们提出一种新方法,在训练步骤中利用 MCTS 的局部特性,来迭代地构建适应所有状态的全局策略。 MCTS 根节点观测结果更新价值函数和策略函数;(4)从第(2)步开始重复步骤。 该方法利用 MCTS 策略优于单独的子节点鉴别器策略(Silver et al., 2016),同时改进子节点鉴别器也会改善 MCTS 的质量(Gelly & Silver, 2007)。 马尔可夫决策过程的多批小型 finite-horizon 版本上迭代使用 MCTS。
在利用模型的基础上,MCTS 提升器总是强于模型本身,从而为模型提升指明了方向;模型的提升又进一步增强了 MCTS 提升器的能力;这就形成了正向循环。 有了 MCTS 的结构,我们就可以继续介绍 MCTS 怎么做搜索的。当对手落了一子,AlphaGo 迅速读入当前盘面,将之当作搜索的根节点,展开搜索。 将上面的模型接入 MCTS, MCTS 就能有策略地进行搜索,搜索结果是当前盘面不同动作的概率。 由于 MCTS 经过了搜索,输出的动作概率肯定要好于模型自身输出的动作概率,因此可以将 MCTS 视作模型的提升器。 在利用模型的基础上,MCTS 提升器总是强于模型本身,从而为模型提升指明了方向;模型的提升又进一步增强了 MCTS 提升器的能力;这就形成了正向循环。
PPO-MCTS 算法通过探索与评估若干条候选序列,搜索到更优的解码策略。通过 PPO-MCTS 生成的文本能更好满足任务要求。 本文的作者提出采用一种蒙特卡洛树搜索算法(MCTS)的变体从 PPO 模型中进行解码,并将该方法命名为 PPO-MCTS。该方法依赖于一个价值模型(value model)来指导最优序列的搜索。 PPO-MCTS 提出利用这个价值模型指导 MCTS 搜索,并通过理论和实验的角度验证了其效用。作者呼吁使用 RLHF 训练模型的研究者和工程人员保存并开源他们的价值模型。 PPO-MCTS 解码算法 为生成一个 token,PPO-MCTS 会执行若干回合的模拟,并逐步构建一棵搜索树。树的节点代表已生成的文本前缀(包括原 prompt),树的边代表新生成的 token。 在评估步骤中,将新探索节点子边的 Q 值初始化为该节点的评估价值(而非原版本 MCTS 中的零初始化)。该更改解决了 PPO-MCTS 退化成完全 exploitation 的问题。 3.
蒙特卡洛树搜索(Monte Carlo Tree Search,简称MCTS)是一种用于决策制定的算法,尤其在复杂决策问题和游戏理论中表现出强大的实力。AlphaGo的核心算法之一就是MCTS。 最近蒙特卡洛树搜索(MCTS)算法在AI大模型领域再次受到关注,因为openai的o1模型通过结合MCTS和强化学习(RL)的方法,特别是在数学问题解决方面,显示出了显著的效果。 很多复现框架也都使用了MCTS,比如Marco-o1,它通过链式思考微调和MCTS技术提升了问题解决的精确度和,尤其在数学、物理和编程等领域表现出色;ReST-MCTS这样的强化自训练方法,通过树搜索MCTS 本文就介绍下MCTS的原理和在LLM中的如何使用MCTS。基础概念MCTS首先了解什么是MCTS? MCTS原理这篇文章对MCTS的原理介绍的非常详细,本文就不做过多重复。
MCTS已被用于处理许多最新的程序问题,但MCTS的一个缺点是需要评估状态值并存储其结果,这在分支树非常多的游戏场景中并不适用。 但是,MCTS构建一个显式搜索树,每个节点会存储其访问数和估计值。所以在MCTS中需要多次访问搜索树中的节点。 Hex具有中等数量的分支因子和确定性转换,这意味着MCTS在该领域中非常有效,这使作者能够直接比较PGS与MCTS的强度。 实验结果证明,在9x9和13x13 的Hex游戏中,它的性能略微弱于MCTS,但与MCTS相比具有竞争力,同时其决策时间显著性能优于MCS。 这使得模型的效果可以与MCTS直接比较,但PGS最激动人心的潜在应用是MCTS不易使用的问题,例如随机状态转换或连续动作空间的问题。
算法整体简单了很多:rollout policy取消了,policy network和value network主干网络合并,MCTS主要动作保留(细节有所改变)。 Why 提升:MCTS是个向前搜索的算法,提供给它的信息越准确,它搜索的效率越高、结果越准确。即使是基于随机策略,MCTS也可以得到有用的信息,毕竟看得见未来总是有优势。 数据:所以MCTS总能够基于原策略提供更好的self-play数据。 正反馈:神经网络基于MCTS self-play得到的更好的数据,可以使用监督学习的方法提升自身。 下一次迭代的时候就可以提供给MCTS更好的策略,头尾相接,形成正反馈。 如此循环往复,不断提升。 其中用神经网络和MCTS形成正反馈,个人认为这是Deepmind在这一系列工作中最有意义的发现。之后的AlphaZero、MuZero都可视为是对这个模式的拓展,核心架构并没有发生变化。
XOT的关键组件有: MCTS模块-使用轻量级策略和价值网络,通过模拟有效地探索任务的潜在思想结构。 LLM求解器-利用LLM的内部知识对MCTS的思想进行提炼和修正。 思想搜索:在推理过程中,预训练的MCTS模块使用策略/价值网络来有效地探索和生成LLM的思想轨迹。 思想修正:LLM审查MCTS的思想并识别任何错误。修正的想法是通过额外的MCTS模拟产生的。 下面的图表说明了XOT框架: MCTS模块针对特定任务进行预训练,使用策略和价值网络来指导搜索和学习领域知识。 思想推理:在MCTS完成搜索后,思想被提取并提供给LLM。LLM随后会对这些想法进行审查和提炼,如果需要,继续MCTS搜索过程,最终通过将这些外部想法与他们的内部知识相结合,形成最终的答案。 效率:轻量级策略/价值网络引导MCTS,最大限度地减少昂贵的LLM调用。在推理过程中只需要1-2个调用。 灵活性:MCTS可以探索不同的思维结构,如链、树、图,使创造性思维。
这篇论文提出了记忆增强的蒙特卡洛树搜索(M-MCTS)方法,M-MCTS 的核心思想是将 MCTS 结合一种记忆结构,其中每一项记录包含一个特定状态的信息。 研究人员在围棋中评估了 M-MCTS,实验结果表明 M-MCTS 的性能优于原始蒙特卡洛方法。 我们在围棋中评估了 M-MCTS。实验结果表明 M-MCTS 在相同的模拟次数下优于原始的 MCTS。 蒙特卡洛树搜索 MCTS 构建树以评估状态并进行快速模拟(Coulom 2006)。 MCTS 结合记忆 我们现在介绍记忆增强 MCTS(M-MCTS)算法。图(1)提供了简要的图示。 M-MCTS 和常规的 MCTS 的主要区别在于,M-MCTS 搜索树的每一个节点都会存储统计的一个扩展集合: ? 这里,N_M 是近似记忆值 V_M(s) hat 的估计次数。
AlphaGo Zero 算法由三种元素构成:强化学习(RL)、深度学习(DL)和蒙特卡洛树搜索(MCTS,Monte Carlo Tree Search)。 模拟一局游戏之后向上回溯,会同步更新路径上节点的统计数值并生成更好的MCTS搜索策略 。进一步来看,MCTS和神经网络互相形成了正循环。 神经网络指导了未知节点的MCTS初始搜索策略,产生自我对弈游戏结局后,通过减小 和 的 Loss ,最终又提高了神经网络对于局面的估计能力。 AlphaGo Zero MCTS 具体过程 ? AlphaGo Plays Games Against ItselfAlphaGo Zero的MCTS和传统MCTS都有相似的四个过程,但AlphaGo Zero的MCTS步骤相对更复杂。
有了 MCTS 的结构,我们就可以继续介绍 MCTS 怎么做搜索的。当对手落了一子,AlphaGo 迅速读入当前盘面,将之当作搜索的根节点,展开搜索。 将上面的模型接入 MCTS, MCTS 就能有策略地进行搜索,搜索结果是当前盘面不同动作的概率。 由于 MCTS 经过了搜索,输出的动作概率肯定要好于模型自身输出的动作概率,因此可以将 MCTS 视作模型的提升器。 “不需要人类知识” 得以实现是因为模型+ MCTS 提升器 的训练方法。 在利用模型的基础上,MCTS 提升器总是强于模型本身,从而为模型提升指明了方向;模型的提升又进一步增强了 MCTS 提升器的能力;这就形成了正向循环。