当前位置: 首页 > 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…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...