蒙特卡洛树搜索(MCTS)在AlphaGo Zero中

news2024/11/20 18:22:40

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中

一、说明

        蒙特卡洛树(Monte Carlo Tree)是一种搜索算法,主要用于解决决策问题。它的核心思想是通过模拟游戏过程,评估各个节点的胜率,从而选择最优策略。

        具体来讲,蒙特卡洛树搜索算法包括以下步骤:

  1. 构建一棵树,根节点表示当前状态,每个节点表示一种可行的决策。

  2. 从根节点开始,对每个子节点进行模拟游戏(例如,对于围棋游戏,可以通过随机下棋来模拟游戏过程),记录每个子节点的胜利次数和访问次数。

  3. 计算每个子节点的胜率,选择最高的子节点作为下一步的决策。

  4. 重复以上步骤,直到达到搜索的次数或时间限制为止。

        蒙特卡洛树搜索算法在人工智能领域有广泛的应用,特别是在棋类游戏、围棋等领域。

         在围棋游戏中,AlphaGo Zero使用MC树搜索来构建本地策略来采样下一步。

        MCTS 搜索可能的移动并将结果记录在搜索树中。随着执行的搜索次数越多,树及其信息也会变大。为了在Alpha-Go Zero中移动,将计算1,600次搜索。然后构建本地策略。最后,我们从此策略中抽样以采取下一步行动。

二、MCTS 基本知识

        在此示例中,当前电路板位置为 s₃

        在 MCTS 中,节点表示电路板位置,边缘表示移动。

        对于给定的位置,我们可以计算:

  • the policy (p is a probability distribution scoring each action), and
  • the value function v (how likely to win at a board position).

        using a deep network f.

        In the example below, it applies a deep network f, composed of convolutional layers, on s₃’ to compute the policy p, and the value function v.

        我们可以通过模拟移动来扩展搜索树。这会将相应的移动添加为边,并将新板位置作为节点添加到搜索树中。

        让我们引入另一个称为操作-值函数 Q 的术语。它衡量给定状态的移动的价值。在下面的(a)中,它以红色移动,f预测获胜几率为0.9。所以 是 0.9。在(b)中,它再移动一次,最终获胜几率为0.6。现在,移动 a₃ 被访问两次,因此我们将访问计数=2。Q 值只是先前结果的平均值,即 W=(0.9+0.6),Q = W/2=0.75。 在(c)中,它探索了另一条道路。现在,a₃ 被访问 3 次, 值为 (0.9+0.6+0.3)/3 = 0.6。

        在 MCTS 中,我们使用 s 作为根逐渐构建搜索树。我们一次添加一个节点,最终在 1.6K 搜索之后,我们使用树为下一步构建本地策略 (π)。但是 Go 的搜索空间很大,我们需要优先考虑添加哪个节点并首先搜索。

        需要考虑两个因素:开发和勘探

  • 利用:执行更多看起来有希望的搜索(即高 Q 值)。
  • 探索:执行我们不太了解的搜索(即低访问次数 N)。

        在数学上,它根据以下条件选择移动 a

        Q控制开发,u,探索加成,控制探索。

        对于经常访问或不太可能发生的状态-操作对,我们没有动力去更多地探索它。从根开始,它使用此树策略来选择接下来要搜索的路径。

        一开始,MCTS 将更多地关注探索,但随着迭代的增加,大多数搜索都是利用,Q 变得越来越准确。

        AlphaGo Zero迭代上述步骤1,600次以扩展树。

        令人惊讶的是,它不使用 Q 来构建本地策略 π。相反,π 是从访问计数 N 派生的。

        在初始迭代之后,将更频繁地访问具有较高 Q 值的移动。它使用访问计数来计算策略,因为它不太容易出现大纲。τ是控制勘探水平的温度。当 τ 为 1 时,它会根据访问计数选择移动。当 τ → 0 时,将仅选取计数最高的移动。所以 τ =1 允许探索,而 τ → 0 不允许。

通过董事会职位,MCTS 计算出更准确的政策π以决定下一步行动。

        MCTS改进政策评估,它使用新的评估来改进政策(政策改进)。然后,它会重新应用策略以再次评估策略。这些策略评估和策略改进的重复迭代在RL中称为策略迭代。在自己玩了很多游戏之后,无论是政策评估还是政策改进都会优化到可以打败高手的程度。有关详细信息,请参阅本文,特别是有关如何训练 f 的信息。

三、MCTS原理

        在详细介绍之前,以下是 MCTS 中的 4 个主要步骤。如图所示,我们将从电路板位置 s 开始。

  • 步骤 (a) 选择要进一步搜索的路径(移动序列)。从根节点开始,它会搜索在梳理 Q 值 (Q =W/N) 方面具有最高值的下一个操作,以及与访问计数 N 产生不利影响的探索奖励。搜索将继续,直到到达未附加节点的操作。

  • 步骤 (b) 通过添加与路径中最后一个操作关联的状态(节点)来扩展搜索树。我们为与新节点关联的操作添加新边,并为每个边记录由 f 计算的 p
  • 步骤 (c) 向后更新 W 和 N 上的当前路径。

重复步骤 (a) 到 (c) 1,600 次后,我们使用访问计数 N 创建新策略 π₃。 我们从此策略中抽样以确定 s₃ 的下一步行动

接下来,我们将详细介绍每个步骤。

选择

第一步是从树中选择一个路径以进行进一步搜索。假设我们的搜索树如下所示。

它从根开始,我们根据以下等式选择移动:

        其中 u 控制探索。它取决于 个访问计数,Ps, a) 来自 f 的策略,关于我们为状态 s 选择 a 的可能性,以及 c 一个控制探索级别的超参数。直观地说,探索边缘的频率越低,我们获得的信息就越少,因此我们探索它的奖励就越高。Q 控制开发,这是计算的 Q 值函数 (W/N)。

四、扩展和评估

        确定所选路径后,叶节点将添加到相应操作的搜索树中。它使用深度网络 从添加的节点计算策略 p 和 v

        然后,对于新节点上的每个可能操作,我们添加一个新边 (s, a)。我们将访问计数 NW 和 Q 初始化为每条边 0。我们记录相应的 v 和 p

备份

一旦为叶节点计算了 p 和 v,我们备份 v 以更新所选路径中每条边 (s, a) 的操作值 Q

        为了决定下一步行动,AlphaGo Zero根据s₃的每个子级的访问次数创建一个新的本地策略(π)。 然后,它从此策略中抽取样本以供下一步操作。

        选定的移动 a 将成为搜索树的根,其所有子项将保留,而其他子项将被丢弃。然后它再次重复 MCTS 以进行下一步操作。

五、 后记

        关于蒙特卡洛算法我们将发出更多文档进行讨论。

许志永

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

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

相关文章

dom靶场

靶场下载地址: https://www.vulnhub.com/entry/domdom-1,328/ 一、信息收集 获取主机ip nmap -sP 192.168.16.0/24netdiscover -r 192.168.16.0/24端口版本获取 nmap -sV -sC -A -p 1-65535 192.168.16.209开放端口只有80 目录扫描 这里扫描php后缀的文件 g…

cadence virtuoso GBW PM公式仿真

在virtuoso中用公式calculate的方法仿真单位增益带宽GBW和相位裕度 首先进行stb仿真 将增益曲线send to calculate,调用cross函数,threshold value设置为0,求0dB时的横坐标 GBW: 将相位曲线send to calculate,调用va…

TuyaOS 3.8.0操作系统新鲜出炉!IoT开发门槛再次被降低

作为降低物联网开发门槛的 TuyaOS 操作系统,此次迎来了重大更新!TuyaOS 3.8.0 新版本不仅更新了物联网各个板块的开发框架,还能实现与其他开发平台的无缝接入,致力于让开发者更轻松便捷地接入涂鸦 IoT PaaS。 TuyaOS 3.8.0 优化和…

等保案例 6

用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构,是主管全省监狱工作的机关。随着信息化的发展,江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加,网络流转的信息量不断增大,信息化建设的需求也日…

docker 第一章

目录 1.安装 docker 2.镜像、容器 3.总结 1.安装 docker 2.镜像、容器 3.总结 容器在 linux 上的本机运行,与其他容器共享主机的内核。它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量级。

Python基础教程:私有变量的访问和赋值教程

嗨喽~大家好呀,这里是魔王呐 ❤ ~! 首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 doc, __i…

File Upload

File Upload 文件上传功能是大部分WEB应用的常用功能,网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,…

Camunda 7.x 系列【17】BusinessKey

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 需求场景2. 案例演示2.1 创建请假申请2.2 启动流程2.3 流程关联业务查询2.4 业务关联流程…

❤ 好玩有趣的Windows本地域名预设映射

❤ Win10 如何把本地ip映射成域名 1、 配置: Windows本地域名预设映射 打开相关的地址: C:\Windows\System32\drivers\etc配置方式: 打开hosts 文件 域名如:127.0.0.1 www.baidu.com 127.0.0.1 www.sellercentral.amazon.com2…

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

目录 一、引言1.1 计算机视觉的定义1.1.1 核心技术1.1.2 应用场景 1.2 历史背景及发展1.2.1 1960s-1980s: 初期阶段1.2.2 1990s-2000s: 机器学习时代1.2.3 2010s-现在: 深度学习的革命 1.3 应用领域概览1.3.1 工业自动化1.3.2 医疗图像分析1.3.3 自动驾驶1.3.4 虚拟现实与增强现…

日历应用行业研究:2022年全球市场规模大约为15.8亿元

日历应用程序可以通过提醒、安排会议和规划用户的日期、星期和月份来创建基本的时间块条目,以确保用户随时随地、尽可能高效地利用他们的时间。日历应用作为一个高效的时间管理工具,需要与项目管理工具,google邮箱,Outlook邮箱&am…

Go 安装配置

介绍Ubuntu20.04 安装和配置Go 1.安装Go 去这个地方下载Go https://go.dev/doc/install 如果之前安装过,可以参考这个(没有可以忽略) 下载完成后执行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改环境变量 sudo ge…

SpringBoot的配置文件以及日志设置

在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息 以及使用日志来进行记录我们的操作,方便我们对错误的定位 配置文件的作用在于:设置端口,设置数据库连接信息,设置日志等等 在SpringBoot中,配置…

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度,是前端性能优化中非常重要的环节,结合工作中的实践总结,梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令: "…

常见架构类型

目录 1.单机架构 2.应用数据分离架构 3.读写分离架构 4.冷热分离架构 5.垂直分库架构 6.微服务架构 7.容器编排架构 1.单机架构 单机架构是简单的将应用服务和数据库服务部署到同一台机器上。 缺点:存在很大的性能限制。 2.应用数据分离架构 引入负载均衡&a…

【Python】Web学习笔记_flask(6)——会话session对象

处理利用cookie来判断用户登录外,也可以使用session来判断用户是否登录 html代码和cookie对象的设置相同 from flask import Flask,request,render_template,make_response,session,url_for,redirectappFlask(__name__) app.secret_keyps1234567890 app.route(/) …

SpringBoot案例-员工管理-分页查询-实现

前言: 阅读本文前,请先浏览分页功能分析文章,文章传送门SpringBoot案例-员工管理-分页查询-分析_熵240的博客-CSDN博客 根据三层架构中各个层次的作用进行编码 功能接口的实现 控制层(Controller类) 具体关键代码如…

用好大模型,会写prompt才行,文心一言为例

实际上用文心一言已经有几个月了。一直没有写点什么。 对于用大模型,prompt的写法至关重要。今天水一个例子。 最开始,我想要让文心帮我提炼一个句子,顺带测试一下它的理解力 执行下面的步骤: 1 将下面由三个引号分隔的文本总结…

pg 简单查询语句

语法: 搜索语句: select (distinct(去重)) 内容(*代表所有) as 别名 from 表 注释: -- 快速查询:select 内容 AS 别名 没有表一般当做计算器来用