草庐IT

多智能体强化学习之MAPPO理论解读

onlyyyyyyee 2023-07-12 原文

本文主要是结合文章Joint Optimization of Handover Control and Power Allocation Based on Multi-Agent Deep Reinforcement Learning对MAPPO算法进行解析。
该文章详细地介绍了作者应用MAPPO时如何定义奖励、动作等,目前该文章 没有在git-hub开放代码,如果想配合代码学习MAPPO,可以参考MAPPO代码详解(超级详细)或者参考小小何先生原创文章
MAPPO开源代码下载地址:
https://github.com/marlbenchmark/on-policy
代码配套论文:
The Surprising Effectiveness of MAPPO in Cooperative, Multi-Agent Games
此代码对环境要去较高,可下载轻量版的代码进行学习:
https://github.com/tinyzqh/light_mappo

MAPPO算法简介

MAPPO是一种多代理最近策略优化深度强化学习算法,它是一种on-policy算法,采用的是经典的actor-critic架构,其最终目的是寻找一种最优策略,用于生成agent的最优动作。

场景设定

一般来说,多智能体强化学习有四种场景设定:

通过调整MAPPO算法可以实现不同场景的应用,但就此篇论文来说,其将MAPPO算法用于Fully cooperative场景中,在本文中所有Agent共享奖励(共用一个奖励函数),即所有智能体的奖励由一套公式生成。

通信架构

现有的多 agent 深度强化学习算法通信方式主要由三种:
全通信集中决策:联合感知,中心决策(神经网络内部通信)
全通信自主决策:联合感知,独立决策(神经网络之前通信)
欠通信自主决策:无信息交互,独立决策(一般用循环神经网络)

不同的算法框架决定了不同的通信方式,MAPPO有中心式、分散式和混合式三种框架。

我们在应用MAPPO算法时,应该先明确算法框架,用的最多是混合式的框架,即中心化训练、去中心化执行的框架,刚开始时智能体将自己的状态观测数据传递给中心控制器,中央控制器得到全局状态S后对模型进行训练,得到最优分散控制策略后传给agent,训练完后智能体就可以不再与中心控制器通信,可以基于自己的局部观测状态通过自己的动作策略函数来产生最优动作。

值得注意的是,在这种框架中每个智能体有单独的actor-critic网络,训练时智能体自己的actor网络要接受每个critic的打分。

算法伪代码:

基本流程是:
1 初始化Q和π,神经网络参数ω、θ为超参数(ω、θ开始时随机初始化,通过训练来改进ω、θ)
2 初试化relay buffer D
3 在一个定义步长内,arent u执行策略函数π(old)产生的动作,得到reward r(t)和下一个状态s(t+1)
4 通过计算得到矩形框内数据

5 储存数据到buffer D中去
6 打乱D中的数据顺序,并从新编号(从而打破数据之间的相关性,从而稳定训练过程)
7 这里基本意思就是抽取数据并更新ω、θ,然后用更新后的参数去更新Q和π。

具体细节请参考原文。
参考文献:
[1]MAPPO-Joint Optimization of Handover Control and Power Allocation Based on Multi-Agent Deep Reinforcement Learning.(有定义动作、状态等,无开源代码)
[2]The Surprising Effectiveness of MAPPO in Cooperative, Multi-Agent Games.(总结了MAPPO的改进及特点,并与其它算法进行对比,文章内容干货不多,主要还是结合其开源代码去理解MAPPO)
[3]Multi-task Deep Reinforcement Learning with PopArt

有关多智能体强化学习之MAPPO理论解读的更多相关文章

  1. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  2. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  3. 论文解读OTA: Optimal Transport Assignment for Object Detection - 2

    CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/1266387752021https://arxiv.org/pdf/2103.14259.pdf关键解读在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,

  4. 基于python的短视频智能推荐/django的影视网站/视频推荐系统 - 2

    摘要本论文主要论述了如何使用Python技术开发一个短视频智能推荐,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述短视频智能推荐的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。 短视频智能推荐的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、热门视频管理、用户上传管理、系统管理,用户:首页、个人中心、用户上传管理、我的收藏管理,前台首页;首页、热门视频、用户上传、公告信息、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所以使得整个短视频智能推荐信

  5. 【毕业设计】基于单片机的智能温控农业大棚系统 - 物联网 stm32 - 2

    文章目录1简介2绪论2.1课题背景与目的3系统设计详细设计描述3.2硬件部分温度测量电路其他电路部分3.3软件部分主程序子系统程序温湿度程序流程键盘显示子程序3.4实现效果3.5部分相关代码4最后1简介Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能温控农业大棚系统大家可用于课程设计或毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090522绪论2.1课题背景与目的近年来我国的温室控制取得了长足的进步,首先在温室群控制方面,进行了初步的探索和理论研究,其次在温室

  6. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

  7. 如何从智能合约中删除数据 - 2

    如何从智能合约中删除数据有了以太坊,我们可以创建一个有状态的系统,我们可以从存储在智能联系人中的数据中添加和删除数据。这是一个有状态的系统,我们可以改变智能联系人的状态,但这需要向矿工支付一些费用。但是我们如何删除数据呢?这里有一个智能合约,用于向myArray中添加和移除字符串:pragmasolidity^0.4.18;contractExampleApp{string[]myArray;functionadd(stringx)public{myArray.push(x);}functiondel(stringx)public{for(uintj=0;jadd()函数相当简单,我们基本上只

  8. 若依框架解读(微服务版)——2.模块间的调用逻辑(ruoyi-api模块)(OpenFeign)(@innerAuth) - 2

    模块之间的关系我们可以了解到一共有这么多服务,我们先启动这三个服务其中rouyi–api模块是远程调用也就是提取出来的openfeign的接口ruoyi–commom是通用工具模块其他几个都是独立的服务ruoyi-api模块api模块当中有几个提取出来的OpenFeign的接口分别为文件,日志,用户服务我们以RemoteUserService接口为例子:其中contextId="remoteUserService"为bean的名称,value=ServiceNameConstants.SYSTEM_SERVICE为接口的描述,fallbackFactory=RemoteUserFallback

  9. ruby-on-rails - 如何以智能方式从多维数组中获取 "extract"值? - 2

    我正在使用RubyonRails3.2.2和Ruby1.9.2。给定以下多维数组:[["value1","value1_other"],["value2","value2_other"],["value3","value3_other"]]我想得到(注意:我想只“提取”所有“嵌套”数组的第一个值):["value1","value2","value3"]我怎样才能以聪明的方式做到这一点? 最佳答案 您可以使用Array#collect为外部数组的每个元素执行一个block。要获取第一个元素,请传递一个索引数组的block。arr.c

  10. Web3.0入口-MPC钱包和智能合约钱包 - 2

    目前数字钱包存在的三个问题Web3.0大规模普及,需要解决一些关键问题,包括钱包私钥带来的一个用户体验问题与两个安全问题。1.一个用户体验问题:助记词与私钥难记、难保存,导致用户使用门槛过高2.两个安全问题:助记词和私钥的泄露,导致资产被盗。助记词和私钥的丢失,导致资产丢失。数字钱包为什么只能通过私钥的方式进行验证为什么只能通过私钥的方式进行验证?为了回答这个问题,我们需要了一些背景知识和概念。首先是以太坊上的账户类型。以太坊一共有两种账户:外部账户(EOA)和合约账户(CA)。合约账户就是智能合约,其代码由以太坊虚拟机来运行。外部账户就是我们平常用来发起交易的钱包账户,它之所以被称为“外部“

随机推荐