当前位置: 首页 > news >正文

MAPPO 算法的深度解析与应用和实现

【论文研读】 The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games

说明:

  1. 来源:36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks. 是NIPS文章,质量有保障,放心食用。
  2. 第5章节, Factors Influential to PPO’s Performance,分析了各个参数对于多智能体系统的影响,其分析方法和消融实验的方法是值得学习的。

0. 摘要

PPO 属于 on-policy 的算法,所以被认为它的样本效率比较低。在多智能体的环境下,off-policy的策略被广泛使用。在这项工作中,我们仔细研究了PPO在合作多智能体设置下的性能。我们展示了基于ppo的多智能体算法在四种流行的多智能体测试平台(粒子世界环境、星际争霸多智能体挑战、Google Research Football和Hanabi挑战)中实现了惊人的强大性能,只需要最小的超参数调整,并且没有任何特定领域的算法修改或架构。重要的是,与竞争性的 off-policy 方法相比,PPO通常在最终回报和样本效率方面都具有竞争力或更好的结果。

1. Intro

我们进行了全面的实证研究,以检验PPO在四种流行的合作多智能体基准测试中的性能:多智能体粒子世界环境(MPE)[22]、星际争霸多智能体挑战(SMAC)[28]、谷歌研究足球(GRF)[19]和Hanabi挑战[3]。我们首先表明,与 off-policy 基线相比,PPO实现了强大的任务性能和具有竞争力的样本效率。

然后,我们确定了五个对PPO性能特别重要的实现因素和超参数,提供了关于这些配置因素的具体建议,并直观地说明了为什么这些建议成立。

我们在这项工作中的目的 不是提出一种新的MARL算法,而是通过经验证明,通过简单的修改,PPO可以在各种合作多智能体设置中获得强大的性能。 我们还相信,我们的建议将有助于从业者与PPO取得有竞争力的结果。

我们的贡献总结如下:

•我们证明,PPO在没有任何特定领域的算法更改或架构以及最小调优的情况下,在四个多智能体合作基准测试中实现了与off-policy 方法竞争的最终性能。(PPO 可用性的证明,实证研究)
•我们证明PPO在使用与许多off-policy 方法相当数量的样本时获得了这些强有力的结果。(推翻先前PPO样本效率不如off-policy 的普遍认知)
•我们确定并分析了在这些环境中控制PPO实际性能的五个实施和超参数因素,并就这些因素提供了最佳实践的具体建议。(消融实验对超参数的分析)

2. 相关工作

MARL算法通常分为两种框架:集中式和分散式学习。

  • 集中式方法[6]直接学习单一策略,产生所有智能体的联合动作。
  • 在分散学习中[21],每个智能体独立地优化其奖励; 这些方法可以处理一般和博弈,但即使在简单的矩阵博弈中也可能存在不稳定性[12]。
  • 集中训练和分散执行(CTDE)算法介于这两种框架之间。过去的几种CTDE方法[22,11]采用行动者-评论家结构,并学习以全局信息为输入的集中式评论家。值分解(VD)方法是另一类CTDE算法,它将联合 q 函数表示为智能体局部q函数的函数[32,27,31],并在流行的MARL基准测试中建立了最先进的结果[37,36]。

在单智能体连续控制任务中[8],非策略方法(如SAC[13])的进步导致了一个共识,即尽管它们早期取得了成功,但策略梯度(PG)算法(如PPO)的样本效率低于非策略方法。在多智能体领域也得出了类似的结论:[25]报告称,在粒子世界环境[23]和《星际争霸》多智能体挑战[28]中,多智能体PG方法(如COMA)的表现 被 MADDPG和QMix 超越 [27]。

多个并行工作研究了 PPO 在多智能体域中的使用。 [7] 经验表明,去中心化、独立的 PPO(IPPO)可以在几个硬 SMAC 地图中取得很高的成功率 - 然而,报告的 IPPO 结果总体上仍差于 QMix,并且该研究仅限于 SMAC。 [25] 对各种 MARL 算法进行了广泛的基准测试,并注意到基于 PPO 的方法通常与其他方法相比具有竞争力。 另一方面,我们的工作重点是 PPO,并在一组更全面的合作多智能体基准上分析其性能。 我们展示了 PPO 在绝大多数任务中取得了良好的结果,并识别和分析了 PPO 的不同实现和超参数因素,这些因素对其多智能体领域的性能有影响; 据我们所知,在过去的工作中,特别是在多智能体环境中,尚未对这些因素进行如此深入的研究。

我们对多智能体环境中 PPO 的实现和超参数因素的实证分析与单智能体强化学习中的策略梯度方法的研究类似[34,17,9,1]。 我们发现其中一些建议很有用,并将它们纳入我们的实施中。 在我们的分析中,我们关注的是现有文献中很大程度上没有得到充分研究的因素,或者是多智能体环境中完全独特的因素。

3. 多智能体下的PPO 架构

3.1 预备知识

我们研究具有共享奖励的分散式部分可观察马尔可夫决策过程(DEC-POMDP)[24]。关于这种类型的马尔可夫决策过程的描述如下所示:
在这里插入图片描述
所谓部分可观测,就是说每个智能体只能看到它周围的环境。(和这个有点不一样的是,在广告算力系统下,每个智能体的观测是全局的)

3.2 MAPPO 和 IPPO

我们在多智能体环境中实现的PPO与单智能体环境中的PPO非常相似,它通过学习一个策略πθ和一个值函数Vφ(s)来进行训练;这些函数被表示为两个独立的神经网络。值函数Vφ(s)用于方差减少,并且仅在训练过程中使用;因此,它可以接收额外的全局信息作为输入,这些信息在智能体的局部观察中不存在,使得多智能体领域中的PPO可以遵循CTDE结构。为了明确起见,我们将具有集中值函数输入的PPO称为MAPPO(多智能体PPO),将策略和值函数都使用局部输入的PPO称为IPPO(独立PPO)。需要注意的是,MAPPO和IPPO都适用于智能体共享共同奖励的环境,因为我们只关注合作环境。

通过上文,认识 IPPO和MAPPO的区别。

3.3 实现的细节

• 参数共享:在具有同质智能体的基准环境中(即智能体具有相同的观察和动作空间),我们利用参数共享;以前的研究表明,这可以提高学习的效率[5, 33],这也与我们的实证结果一致。在这些设置中,智能体共享策略和值函数的参数。附录C.2中提供了使用参数共享设置和为每个智能体学习独立参数的比较。我们指出,除了MPE中的Comm设置外,所有基准测试中的智能体都是同质的。

• 常见的实施做法:我们还采用了实施PPO的常见做法,包括广义优势估计(GAE)[29]、优势归一化和值剪辑。关于超参数搜索设置、训练细节和实施细节的完整描述详见附录C。我们的实施代码可以在https://github.com/marlbenchmark/on-policy找到。

4. 主要实验结果

5. 影响PPO性能的因素

null

6. 结论

这项工作表明,PPO(一种on-policy的策略梯度 RL 算法)在最终回报和样本效率方面都取得了强劲的成果,可与各种合作多智能体挑战的最先进方法相媲美,这表明 正确配置的 PPO 可以成为合作 MARL 任务的竞争基准。 我们还确定并分析了在这些环境中影响 PPO 性能的五个关键实施和超参数因素。 根据我们的实证研究,我们针对这些因素给出了最佳实践的具体建议。 这项工作存在一些局限性,为未来的研究指明了方向。 首先,我们的基准环境都使用离散的动作空间,都是合作的,并且在绝大多数情况下都包含同质代理。

在未来的工作中,我们的目标是在更广泛的领域测试 PPO,例如具有连续动作空间和异构代理的竞争性游戏和 MARL 问题。 此外,我们的工作本质上主要是实证性的,并没有直接分析 PPO 的理论基础。 我们相信,对我们建议的实证分析可以作为进一步分析 PPO 在 MARL 中的特性的起点。

7. 附录

7.1 算法的详情

在这里插入图片描述

MAPPO 训练两个独立的神经网络:参数为 θ 的行动者网络和参数为 φ 的值函数网络(称为批评家)。 如果代理是同质的,这些网络可以在所有代理之间共享,但每个代理也可以拥有自己的一对演员和评论家网络。 为了符号方便,我们在这里假设所有代理共享评论家和参与者网络。 具体来说,批评者网络(表示为 Vφ)执行以下映射:S → R。全局状态可以是特定于代理的或与代理无关的。

actor网络表示为 πθ,将代理观察 o(a) t 映射到离散动作空间中动作的分类分布,或者映射到多元高斯分布的均值和标准差向量,从中连续采样动作 行动空间。 actor 网络经过训练以最大化下面的目标:
在这里插入图片描述
上面目标的第一部分,目的是最大化优势,让actor朝着批评家指引的方向去走。第二部分,目的是让策略的熵最大化,也就是尽可能的分散一些,避免输出的动作分布过于集中。

这里需要注意,actor网络的输出不是一个特定的动作,而是一个分布!!!
所以接着还有从分布中抽样动作的一步。

批评家网络的目标是啥呢?

让估计的未来的回报最大化。
在这里插入图片描述
在上面的损失函数中,B 指的是批量大小,n 指的是代理的数量。
如果批评者和行动者网络是 RNN,则损失函数会随着时间的推移而求和,并且网络通过时间反向传播 (BPTT) 进行训练。

8. 个人思考后余留问题

Compute advantage estimate A via GAE on τ , using PopArt。这句话中GAE方法计算优势函数的原理和技术是什么。

RNN 计算的隐藏状态是如何被使用的?


原文地址:
https://arxiv.org/pdf/2103.01955.pdf
https://bair.berkeley.edu/blog/2021/07/14/mappo/

相关文章:

MAPPO 算法的深度解析与应用和实现

【论文研读】 The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games 说明: 来源:36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks. 是NIPS文章,质量有保障&…...

API接口的涉及思路以及部分代码

在现代软件开发中,API(Application Programming Interface)接口扮演了一个至关重要的角色。通过API接口,不同的应用程序、系统或服务之间可以进行数据交换和相互调用,实现功能的扩展和集成。本文将探讨API接口的设计思…...

Stable Diffusion无需代码连接QQ邮箱的方法

Stable Diffusion用户使用场景: 电商商家在产品测试阶段,通过微信社群日常收集用户对产品设计的反馈,包括对产品的修改建议或外观设计等,并将这些反馈上传至集简云小程序。然后,他们使用Stable Diffusion AI工具生成图…...

Excel表格(一)

1.单一栏的宽度和高度设置 2.大标题的跨栏居中 3.让单元格内的文字------自动适应 4.序号递增 5.货币符号 6.日期格式的选择 选到单元格,选中对应的日期格式 7.自动求和的计算 然后在按住回车键即可求出当前行的金额 点击自动求和 8.冻结表格栏 9.排序 1.单栏排序 …...

详细介绍渗透测试与漏洞扫描

一、概念 渗透测试: 渗透测试并没有一个标准的定义,国外一些安全组织达成共识的通用说法;通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动的主动分析…...

Scikit-learn聚类方法代码批注及相关练习

一、代码批注 代码来自:https://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#sphx-glr-auto-examples-cluster-plot-dbscan-py import numpy as np from sklearn.cluster import DBSCAN from sklearn import metrics from sklearn.datasets …...

C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章

今天继续研究C#的WinForm的实例显示效果。 我们上次介绍了Winform窗体的唯一实例运行代码(见博文:基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 )。这就有一个问题,程序已经打开了,这时候再次运行该应用程序,…...

java泛型和通配符的使用

泛型机制 本质是参数化类型(与方法的形式参数比较,方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…...

【网络】自定义协议 | 序列化和反序列化 | 以tcpServer为例

本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例,实现一个自定义协议 阅读本文之前,请先阅读 tcpServer 本文完整代码详见 Gitee 1.重谈tcp 注意,当下所对tcp的描述都是以简单、方便理解起见,后续会对tcp协议进行深入解读 …...

06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

文章目录 1. 主要的窗体类及其用途2. 窗体类重要特性的设置2.1 setAttribute()函数2.2 setWindowFlags()函数2.3 setWindowState()函数2.4 setWindowModality()函数2.5 setWindowOpacity()函数 3. 多窗口应用程序设计3.1 主窗口设计3.2 QFormDoc类的设计3.3 QFormDoc类的使用3.…...

(力扣)用两个栈实现队列

这里是栈的源代码:栈和队列的实现 当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、pe…...

【自动化测试框架】关于unitttest你需要知道的事

一、UnitTest单元测试框架提供了那些功能 1.提供用例组织和执行 如何定义一条“测试用例”? 如何灵活地控制这些“测试用例”的执行? 2.提供丰定的断言方法 当测试用例的执行结果与预期结果不一致时,判定测试用例失败。在自动化测试中,通过“断言”…...

手机便签中可以打勾的圆圈或小方块怎么弄?

在日常的生活和工作中,很多网友除了使用手机便签来记录灵感想法、读书笔记、各种琐事、工作事项外,还会用它来记录一些清单,例如待办事项清单、读书清单、购物清单、旅行必备物品清单等。 在按照记录的清单内容来执行的时候,为了…...

【Linux】gdb 的使用

目录 1. 使用 gdb 的前置工作 2. 如何使用 gdb 进行调试 1、如何看到我的代码 2、如何打断点 3、怎么运行程序 4、如何进行逐过程调试 5、如何进行逐语句调试 6、如何监视变量值 7、如何跳到指定位置 8、运行完一个函数 9、怎么跳到下一个断点 10、如何禁用/开启…...

C++11之右值引用

C11之右值引用 传统的C语法中就有引用的语法,而C11中新增了的 右值引用(rvalue reference)语法特性,所以从现在开始我们之前学习的引用就叫做左值引用(lvalue reference)。无论左值引用还是右值引用&#…...

【PHP的设计模式】

PHP的设计模式 一、策略模式二、工厂模式三、单例模式四、注册模式五、适配器模式六、观察者模式 一、策略模式 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强…...

React 之 Redux - 状态管理

一、前言 1. 纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念 确定的输入,一定会产生确定的输出 函数在执行过程中,不能产生副作用 2. 副作用 表示在执行一个函数时&a…...

集合转数组

首先,我们在看到集合转数组的时候可能第一个想到的就是toArray(),但是我们在调用 toArray()的时候,可能会遇到异常 java.lang.ClassCastException;这是因为 toArray()方法返回的类型是 Obejct[],如果我们将其转换成其他类型&#…...

使用Python将Word文档转换为PDF的方法

摘要: 文介绍了如何使用Python编程语言将Word文档转换为PDF格式的方法。我们将使用python-docx和pywin32库来实现这个功能,这些库提供了与Microsoft Word应用程序的交互能力。 正文: 在现实生活和工作中,我们可能会遇到将Word文…...

Java 判断一个字符串在另一个字符串中出现的次数

1.split实现 package com.jiayou.peis.official.account.biz.utils;public class Test {public static void main(String[] args) {String k"0110110100100010101111100101011001101110111111000101101001100010101" "011101100101011010100011111010111001001…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...