强化学习-alphazero 算法理论

news2024/12/23 11:21:56

一、算法简介

        简单地说,Alphazero=MCTS + SL(策略网络+价值网络) +Selfplay + resnet。 其中MCTS指的是蒙特卡洛树搜索,主要用于记录所有访问过的棋盘状态的各种属性,包括该状态访问次数,对该状平均评价分数等。 SL指监督学习算法,监督网络输出价值v和策略pai,用于拟合mcts推测出的策略和价值,并泛化到未见过的状态上。 Selfplay是一种训练方法,步骤是:实例化蒙特卡罗树和SL网络,进行自我博弈,以产生多样化的数据进行训练和更新。 resnet 众所周知是一种卷积神经网络,主要用于棋盘的特征提取。下面从采样和更新两个角度对上述几个部件进行介绍。文中所引代码来自alphazero GitHub 五子棋

1、蒙特卡洛树搜索

        顾名思义,蒙特卡洛树搜索是一种利用树形数据结构进行搜索的算法,其节点存储是棋盘状态,根节点存储的是棋盘初始状态,其子节点存储是当前状态可能的下一状态。节点上存储的属性包括棋盘当前棋子位置s,访问s的次数n,对节点的估值v。

 图一、蒙特卡洛树搜索的采样和更新(select, expand, simulate为采样,backpropagate为更新) 

 1.1 MCTS采样

        mcts(蒙特卡洛树搜索)的采样分为三步:节点选择,节点拓展,和模拟推演。三步是依次执行的。

        1.节点选择:初始化根节点,从根节点开始,对所有可能的子节点计算puct值,选择值最大的进入,puct计算公式如下

UCB=v_i+C\cdot \sqrt \frac{lnN}{n_i}

        其中vi 是该节点的价值,N是父节点被访问次数,ni为本节点被访问的次数,C为超参数用于平衡利用和探索。

        2.节点扩展:如果当前节点已经是树的叶子节点,则需对树进行节点扩展,具体步骤为:从可能的动作中选取一个执行,进入下一状态,并将这个新节点加入到父节点的子节点集中。

        3.模拟推演:在将一个新节点加入树后,需要从这个节点的状态出发(如果此节点非终止状态),进行模拟推演,直至到达种植状态。在模拟中,不适用树来做决策,而是使用强化学习的actor和critic网络做决策。

1.2 MCTS更新

        1. 反向回溯:  在模拟对局进行到终局状态后,一般会有胜负和的情况,记胜利的结局价值为1 失败的结局价值为-1,从叶子节点开始一次反溯其父节点,将沿途每个节点的访问次数+1,总价值加上新的结局价值,并用新的总价值除以访问次数得到平均价值。反向传播就是利用此次胜负结果,从这次推演的叶子节点开始,迭代查询出所有的父节点,并更新这些父节点上的价值估值vi 。

        实际Alphazero算法中使用的mcts细节比上面描述的有所不同,在第三节算法流程中介绍

2、策略网络和价值网络

        采样:在mcts采样到达第三步模拟推演时,开始使用策略网络和价值网络推演,从当前状态s开始,每次选择一动作a执行,直至到达终点获得胜负结果。

        更新:这里需要注意,虽然网络结构用了策略网络和状态价值网络形式建模,但是其损失函数完全不同于actor critic的loss。actor critic 使用的是强化学习中的策略梯度损失和td error进行更新。而alphazero中的策略网络和价值网络更新方式是监督学习的方法,策略网络使用交叉熵损失,求网络输出策略和节点统计策略的差异。 价值网络使用均方差损失,求网络输出价值和节点monte carlo方法统计的价值均值之间的损失。【蒙特卡洛本身就是一种通过采样拟合近似计算问题的解或者概率分布,所以不能因为其带有策略和价值网络就默认用actor和critic的思想去理解,那就错了】

        更新方式:价值网络和策略网络的输入是棋局推演中每一step的state,价值网络输出每一state的预估价值【范围[-1,1]】其label是该局最终的胜负情况,胜则+1,负则-1。策略网络输出的是每一state下采取的策略的概率分布,其标签为,使用的是均方差误差做回归损失,而policy的标签使用的是mcts推导出的策略分布,使用的是交叉熵损失做分类的损失。两项损失的和是网络的总损失

C(s,a) \leftarrow C(s,a)+1

q(s,a) \leftarrow q(s,a)+\frac{1}{c(s,a)}[G-q(s,a)]

3.SelfPlay

        selfplay 即使用模型和自己对战,因为模型在学习和变化,所以可以产生不同分布的数据,相比于alphago的对棋谱训练增加数据多样性,增强了泛化性。

        alphazero要使用 mcts和sl 完成自博弈的过程,就需要mcts和sl 既可以输出先手的策略,也可以输出后手的策略。为实现这一点,mcts采取的方式是,在节点价值从叶子节点向根节点迭代更新时,每一次都传入 -value,即相邻两节点估值符号相反,这样使得每一个节点上的估值都是当前player对棋局的估值。 sl中的value和policy因为是学习拟合mcts的输出,所以其也具有了输出先后手策略和价值的能力。

二、算法整体流程介绍

        整体伪代码如下

初始化价值网络 V 和策略网络 pi

对于 i 在范围 1500 内循环:
    # 通过自对弈收集数据
    环境重置()
    初始化根节点
    当未完成时循环:
        动作, 动作概率 = 玩家获取动作()
        # 通常在 get_action 函数中涉及 400 次选择和扩展。
        # 如果任何一次迭代达到游戏结束,更新 MCTS 节点的值。
        当前状态 = 下一状态
        将根节点移至当前状态的节点
    如果收集到的数据 > 批量大小:
        使用收集到的数据训练策略网络和价值网络

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

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

相关文章

PCDN技术如何提高数据传输的可靠性?

PCDN技术通过以下方式提高数据传输的可靠性: 1.负载均衡与故障转移: PCDN系统具备负载均衡的能力,可以根据节点的负载情况动态分配请求,避免单点故障和过载情况。此外,当某个节点发生故障时,PCDN可以迅速将流量转移到其他可用节…

OpenAI推出GPT-4o长输出版版本

🦉 AI新闻 🚀 OpenAI推出GPT-4o长输出版版本 摘要:OpenAI宣布正在测试每次请求可输出最多64K tokens的GPT-4o长输出版版本,目前仅Alpha测试参与者可使用。该版本推理成本较高,定价每百万tokens输入6美元,…

从微架构到向量化--CPU性能优化指北

引入 定位程序性能问题,相信大家都有很多很好的办法,比如用top/uptime观察负载和CPU使用率,用dstat/iostat观察io情况,ptrace/meminfo/vmstat观察内存、上下文切换和软硬中断等等,但是如果具体到CPU问题,我…

用于跟踪个人图书馆的BookLogr

什么是 BookLogr ? BookLogr 是一款网络应用,旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据,提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆,与您的…

申请流量卡不通过,这是什么原因呢,又该如何解决?

在申请流量卡时,有些人会出现被拒绝的情况,你知道这是怎么回事吗?申请流量卡被拒绝又该如何解决呢?下面这些问题都给你整理下了! ​ 常见原因: 1.信息有误:收件人/办卡人:必须是同一…

How to specify the LangSmith project name for each Chain?

题意:如何为每个链指定LangSmith项目名称? 问题背景: According to the LangSmith documentation you need to set the LANGCHAIN_PROJECT environment variable to specify the project name in langsmith. 根据LangSmith的文档&#xff0…

Vmware ubuntu20.04 虚拟文件夹

目录 1.vmware 设置 2.ubuntu设置 1.vmware 设置 设置完成后我们开机 2.ubuntu设置 我们打开终端 输入命令 vmware-hgfsclient可以看到你当前的共享文件 然后我们输入以下命令,用于将共享文件夹挂载到虚拟机中 sudo vmhgfs-fuse .host:/ /mnt -o nonempty -o …

(24)(24.1) FPV和仿真的机载OSD(一)

文章目录 前言 1 参数 2 第二OSD 3 屏幕和屏幕切换 4 面板项目 5 呼号面板 6 用户可编程警告 7 使用SITL测试OSD 8 OSD面板列表 前言 使用 MAX7456 型芯片的板载操作系统和基于 MSP 的外部操作系统(包括 DJI 护目镜和使用DisplayPort 的护目镜&#xff09…

【IEEE Fellow特邀报告,JPCS独立出版】第四届电子通信与计算机科学技术国际学术会议(ECCST 2024,9月20-22)

2024年第四届电子通信与计算机科学技术国际学术会议将于2024年9月20-22日在中国上海举行。 会议旨在为从电子与通信、网络、人工智能与计算机技术研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思…

delphi 11其中改变组件以及IDE的字体大小

1、先将form的font改好。 2、保证组件的parentfont为true即可。比如edit1.parentfont:true procedure TForm1.Button1Click(Sender: TObject); beginif self.FontDialog1.Execute() thenbeginform1.Font:self.FontDialog1.Font;self.Edit1.ParentFont:true;end; en…

string习题:字符串最后一个单词的长度

字符串最后一个单词的长度 因为原字符串中可能会有很多个单词,所以我们需要寻找字符串中的最后一个" "的位置pos 接着用(size-pos-1),这样计算出来的就是字符串中最后一个单词的长度 按照这样的逻辑,我们会…

MySQL 的binlog 、undolog 、redolog

Binlog (二进制日志) bin Log 作用 用于记录所有修改数据库数据的 SQL 语句或行级别的变化,主要用于主从复制和数据恢复。 binlog格式 STATEMENT模式:binlog里面记录的就是SQL语句的原文。优点是并不需要记录每一行的数据变化,减少了binlo…

1990-2022年 上市公司-战略差异度(原始数据、计算代码、参考文献和最终计算结果)

上市公司战略差异度是衡量企业在战略制定和实施过程中所展现的独特性和创新性的指标。它体现了公司对市场环境、行业趋势及自身能力的独特见解和战略布局。通过分析上市公司的战略差异度,可以深入理解企业的市场竞争策略、行业定位和发展方向。 战略差异度的重要性…

Docker镜像拉取失败解决方案

文章目录 问题及分析解决方案1.先排查DNS2.修改源3.代理配置4.重启docker服务 问题解决 问题及分析 今天我用docker拉取镜像的时候报错 error pulling image configuration: download failed after attempts6: dial tcp xxx.xx.xxx.xx:xxx: i/o timeout 连接超时大概率以下两个…

在 Mac 上进行本地 LLM 微调(M1 16GB)

适合初学者的 Python 代码演练 (ft. MLX) 欢迎来到雲闪世界。本文展示了如何使用 Google Colab 上的单个(免费)GPU 微调 LLM。虽然该示例(以及许多其他示例)可以在 Nvidia 硬件上轻松运行,但它们并不容易适应 M 系列 M…

Windows10点击文件夹右键卡死的解决办法

1、首先同时按下【WinR】打开运行页面,输入命令【regedit】按下回车或者点击确定。 2、打开注册表编辑器后,定位到如下位置“HKEY_CLASSES_ROOT\Directory\Background\Shellex\ContextMenuHandlers”。 3、然后在其中将所有名为“New”的文件或项全部删…

边缘计算平台模型-Gemma 2

我们生活在一个充满科技创新的时代,这已经成为我几乎每天都会重复的话题。这一次,我们带来了一个重磅消息:Google刚刚发布了Gemma 2,这是一款拥有22亿参数的指令调优模型。这意味着它已经在指令及其响应上进行了训练或微调。Gemma…

Navicat 数据传输详解(将源数据库的多个表结构与数据复制到目标数据库)

Navicat 数据传输详解(将源数据库的多个表结构与数据复制到目标数据库) 1.打开Navicat ,先连接源数据库和目标数据库。2.点击工具选项卡,选择数据传输3.左边是源数据库,右边是目标数据库。4.选择要同步的表。5.开始同步…

为什么很多人都无法解决 VSCode C 系列调试问题 (经验分享 有用)

目录 个人失败案例 断点打了 (也没用) lagunch配置了 (也没用) 插件安装了 (也没用) 无中文路径 (也没用) ​编辑 失败案例分析✨ llvm-mingw 编译器为例 main.cpp launch.json 个人失败案例 你们都很棒 很优秀 ,环境方面也正常,但为什么还是…

【海外高校联合支持举办 | 学术大咖fellow汇聚】2024年人工智能与数字化管理国际会议(ICAIDM 2024,9月20-22)

2024年人工智能与数字化管理国际会议将于2024年9月22-24日在中国江苏省南京市隆重召开。 在快速发展的数字时代,人工智能已成为驱动创新、优化运营和塑造未来的关键技术。随着人工智能技术的日益成熟及其在各行各业的深入应用,如何有效地进行数字化管理…