【论文】A Survey of Monte Carlo Tree Search Methods阅读笔记

news2024/9/25 19:25:32

本文主要是将有关蒙特卡洛树搜索的文献(2011年之前)进行归纳,概述了核心算法的推导,给出了已经提出的许多变化和改进的一些结构,并总结了MCTS方法已经应用于的博弈和其他领域的结果。

蒙特卡洛树搜索是一种通过在决策空间中随机抽样,并根据结果建立搜索树,在给定域内寻找最优决策的方法,它平衡了探索(exploration)和利用(exploitation)。

一、背景

二、蒙特卡洛树搜索

蒙特卡洛树搜索基于两个基本概念:一个动作的真实值可以使用随机模拟来近似;这些值可以有效地调整策略为最佳优先策略。

基本算法包括迭代地构建一个搜索树,直到达到一些预定义的计算预算——通常是时间、内存或迭代约束——此时搜索停止,并返回性能最好的根操作。搜索树中的每个节点表示域的一个状态,指向子节点的定向链接表示导致后续状态的操作。

每次搜索迭代都将应用四个步骤:

  • 选择(selection):从根节点开始,递归地应用子选择策略通过树向下移动,直到到达最紧急的可扩展节点。如果节点表示非终端状态并且有未访问(即未扩展)子节点,则节点是可扩展的。
  • 扩展(expansion):根据可用的操作,添加一个(或多个)子节点以展开树。
  • 模拟(simulation):根据默认策略,从新节点开始运行模拟,以产生结果。
  • 反向传播(backpropagated):模拟结果通过选定的节点进行“备份”(即反向传播),以更新其统计信息。

这些步骤可以分为两种不同的策略:

  • 树策略(tree policy):从已包含在搜索树中的节点中选择或创建一个叶节点(选择和扩展)
  • 默认策略(default policy):从给定的非终端状态发挥域,已产生值估计(模拟)

Upper Confidence Bounds for Trees (UCT) 

UCB1是解决MCTS中的探索-利用困境的一个很有前途的候选对象:每当在现有的树中选择一个节点(动作)时,该选择都可以被建模为一个独立的多武装强盗问题(multiarmed bandit problem),一个子节点 j 被选择去最大化:

方程第一项是利用项,第二项是探索项,两项间有一个基本的平衡。当每个节点被访问时,探索项的分母增加,从而减少其贡献。另一方面,如果访问了父节点的另一个子节点,那么分子就会增加,因此未访问的兄弟节点的探索值也会增加。探索项确保每个子节点都有一个非零的选择概率,这是必要的随机性质。这也赋予了算法一个固有的重启属性,因为即使是低奖励的子节点最终也能保证被选择(如果给定足够的时间),从而探索了不同的游戏路线。

参数可以进行调整以降低或增加探索的概率。一般取,因为这个值能以范围为[0,1]的奖励满足Hoeffding ineqality。其他范围的奖励则需要不同的

算法3展示了一种更有效的双人零和博弈交替移动的备份方法。

 三、特点

1)启发式:MCTS最重要的好处之一就是缺乏对特定领域的知识的需求,这使得它很容易适用于任何可以使用树建模的领域 。

2)任何时间:MCTS立即反向传播每个游戏的结果,确保在算法的每次迭代后所有值都是最新的,这允许算法在任何时候从根目录返回一个操作。

3)不对称:树的选择允许算法偏爱更有前途的节点(但不允许其他节点的选择概率收敛到零),导致随着时间的推移出现不对称的树,也就是说,部分树的构建倾向于更有前途,即更重要的区域。

四、变化

传统的游戏AI研究集中于有两个玩家的零和游戏、交替回合、离散动作空间、确定性状态转换和完美信息。虽然MCTS已经广泛应用于此类游戏,但它也被应用于其他领域类型,如单人游戏和规划问题、多人游戏、实时游戏以及具有不确定性或同时移动的游戏。本节描述了MCTS适应这些领域的方法,以及那些采用来自MCTS的想法而不严格遵守其大纲的算法。

(我只选择部分可能与课题相关的算法进行学习)

1.Learning in MCTS

MCTS可以被看作是一种强化学习算法,因此考虑它与时间差异学习(典型的RL算法)之间的关系。

时间差异学习(TDL):时间差异学习(TDL)和MCTS都是学习基于状态或状态 - 行动对的值来采取行动的。在某些情况下,算法甚至可能是等价的,但TDL算法通常不构建树,只有当所有状态值都可以直接存储在表中时,这种等价才成立。MCTS估计临时状态值,以决定下一步行动,而TDL学习每个状态的长期值,然后指导未来的行为。

时间差异与蒙特卡洛(TDMC):“一种新的方法使用获胜概率代替非终端位置的奖励”

Bandit-Based Active Learner (BAAL):用来解决在数据稀疏的应用程序中的小训练集的问题。

2.多人 MCTS

极大极小搜索的中心假设是搜索玩家寻求最大化他们的奖励,而对手则寻求最小化奖励。在双人零和游戏中,这相当于说每个玩家都寻求最大化自己的奖励;然而,在两个以上玩家的游戏中,这种等价性并不一定成立。

将MCTS应用于多人游戏的最简单的方法是采用这样的想法:每个节点存储一个奖励向量,并且选择过程寻求最大化使用奖励向量的适当成分计算出的UCB值。

 3.多代理MCTS

考虑拥有多个代理(即多个模拟策略)的影响,在这种情况下,不同的代理是通过给程序中使用的启发式分配不同的优先级来获得的。然而寻找具有正确属性的代理集(即那些增加游戏强度的代理)是需要计算的。

集成UCT:在该方法中,多个UCT实例独立运行,并将他们的根统计量组合起来得到最终结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 石头剪刀布小游戏

一、任务 编写一个剪刀石头布游戏的程序。程序启动后会随机生成1~3的随机数,分别代表剪刀、石头和布,玩家通过键盘输入剪刀、石头和布与电脑进行5轮的游戏,赢的次数多的一方为赢家。若五局皆为平局,则最终结果判为平局。 二、实…

深入理解与应用工厂方法模式

文章目录 一、模式概述**二、适用场景****三、模式原理与实现****四、采用工厂方法模式的原因****五、优缺点分析****六、与抽象工厂模式的比较**总结 一、模式概述 ​ 工厂方法模式是一种经典的设计模式,它遵循面向对象的设计原则,特别是“开闭原则”&…

一文扫盲:室内导航系统的应用场景和技术实现(入门级)

hello,我是贝格前端工场,之间搞过一些室内导航项目,有2D也有3D的,算是有些经验,这里给大家分享一下室内导航的基本尝试,欢迎老铁们点赞、关注,如有需求可以私信我们。 一、室内导航是什么 室内…

vs报错1168链接错误——关于:LNK1168 无法打开 E:\VS\文件名\x64\Debug\文件名. 进行写入问题的解决方法

关于这个问题我在网上找了一些方法。 有些方法解决了这个问题, 但是有点麻烦, 有些方法可能不能解决问题。 这里我先把我在网上找到的方法写出来: 第一种方法是可能开着一个程序,就是这个终端。有的时候报错1168是因为你没有关这…

Vue中如何实现动态路由?

在前端开发中,Vue.js 是一个极为流行的 JavaScript 框架,提供了灵活性和易用性,使得开发者可以快速构建单页面应用(SPA)。在 Vue 中,我们经常需要处理动态路由的情况,比如根据用户的操作或者权限…

设计模式 (四) -简单工厂模式

请直接看原文:设计模式(四)简单工厂模式 | BATcoder - 刘望舒 (liuwangshu.cn) --------------------------------------------------------------------------------------------------------------------------- 1.简单工厂模式简介 定义 简单工厂…

chrome选项页面options page配置

options 页面用以定制Chrome浏览器扩展程序的运行参数。 通过Chrome 浏览器的“工具 ->更多工具->扩展程序”,打开chrome://extensions页面,可以看到有的Google Chrome扩展程序有“选项Options”链接,如下图所示。单击“选项Options”…

Go-知识struct

Go-知识struct 1. struct 的定义1.1 定义字段1.2 定义方法 2. struct的复用3. 方法受体4. 字段标签4.1 Tag是Struct的一部分4.2 Tag 的约定4.3 Tag 的获取 githupio地址:https://a18792721831.github.io/ 1. struct 的定义 Go 语言的struct与Java中的class类似&am…

简单的input框输入竟然异常卡顿,一个日常性能问题的排查思路

我们公司产品主要提供企业项目管理服务,那么自然有配套的desk工单管理系统,用于搜集客户bug以及相关问题反馈。有一天我在测试功能时碰巧发现了一个bug,所以就想着提一个工单记录下方便日后修复。但就在创建工单填写标题时我发现标题输入卡爆…

2. vue 工程创建

1. 基于 vite创建 官方文档: https://v3.cn.vuejs.org/guide/installation.html#vite vite官网: https://vitejs.cn 使用vite创建的优势: 开发环境中,无需打包操作,可快速的冷启动。轻量快速的热重载(HMR)。真正的按需编译,不再…

深度学习-Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 损失函数 图片分类数据集 1 softmax2 损失函数1均方L1LossHuber Loss 3 图像分类数据集4 softmax回归的从零开始实现 1 softmax Softmax是一个常用于机器学习和深度学习中的激活函数。它通常用于多分类问题,将一个实数向量转换为概率分布。Softmax函…

如何提取图片中某个位置颜色的RGB值,RGB十进制值与十六进制的转换

打开本地的画图工具,把图片复制或截图粘进去,用颜色提取器点对应的位置就可以提取了。 获取到的 RGB 值为 (66,133,244) 转化后的值为 #4285F4。 【内容拓展一】:RGB 十进制值与十六进制的转换 当我们从 RGB 十进制值转换为十六进制值时&a…

YOLOv应用开发与实现

一、背景与简介 YOLO(You Only Look Once)是一种流行的实时目标检测系统,其核心思想是将目标检测视为回归问题,从而可以在单个网络中进行端到端的训练。YOLOv作为该系列的最新版本,带来了更高的检测精度和更快的处理速…

LeetCode 刷题 [C++] 第215题.数组中的第K个最大元素

题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 题目分析 根据题意分析&…

巧【二叉搜索树的最近公共祖先】【二叉搜索树的性质】Leetcode 235. 二叉搜索树的最近公共祖先

【二叉搜索树的最近公共祖先】【二叉搜索树性质】Leetcode 235. 二叉搜索树的最近公共祖先 【巧】解法1 利用二叉搜索树有序的性质解法2 采用二叉树求最近公共祖先的方法——后序遍历 ---------------🎈🎈235. 二叉搜索树的最近公共祖先 题目链接&#x…

论文阅读-高效构建检查点

论文标题:On Efficient Constructions of Checkpoints 摘要 高效构建检查点/快照是训练和诊断深度学习模型的关键工具。在本文中,我们提出了一种适用于检查点构建的有损压缩方案(称为LC-Checkpoint)。LC-Checkpoint同时最大化了…

vue中scss样式污染引发的思考

新做了一个项目,就是在登录后,就会产生左侧菜单的按钮颜色不一样。 然后发现样式是从这里传过来的 发现是登录页面的css给污染了 就是加了scope就把这个问题解决了 然后想总结一下这个思路:就是如何排查污染样式: 如果出现了…

微信小程序开启横屏调试

我们先打开小程序项目 开启真机运行 目前是一个竖屏的 然后打开全局配置文件 app.json 给下面的 window 对象 下面加一个 pageOrientation 属性 值为 landscape 运行结果如下 然后 我们开启真机运行 此时 就变成了个横屏的效果

[vue error] TypeError: AutoImportis not a function

问题详情 问题描述: element plus按需导入后,启动项目报错: 问题解决 将unplugin-auto-import 回退到0.16.1 npm install unplugin-auto-import0.16.1 安装完后再次运行就好了

牛客周赛 Round 35 解题报告 | 珂学家 | 构造 + 组合数学

牛客周赛 Round 35 解题报告 | 珂学家 | 构造 组合数学 前言 整体评价 F/G是数学题,E是一道有趣的构造题, 需要一点点空间想象力,其他几题也不错。不过整场被python的库函数,折磨得崩溃,T_T. A. 小红的字符串切割 题型: 签到 …