【论文研读】MARLlib 的架构分析

news2024/9/26 3:20:22

【论文研读】MARLlib: A Scalable Multi-agent Reinforcement Learning Library


和尚念经

多智能体强化学习框架研究。
多智能体强化学习库。
多智能体强化学习算法实现。
多智能体强化学习环境的统一化,标准化。
多智能体强化学习算法解析。
多智能体强化学习 算法性能比较。


3. MARLlib Architecture

在本节中,我们将主要阐述MARLlib如何解决两个主要挑战,即MARL算法的多样性和环境接口的不一致性。为了克服这些挑战,我们开发了一个新的代理级分布式数据流、一个统一的代理环境接口和一个有效的策略映射机制。其他特性,如框架可扩展性、特定于任务的技巧和文档可以在附录中找到。

3.1 agent级的分布式数据流,方便算法的统一

集中式训练分散执行(CTDE)是解决多智能体问题的常用框架,其中智能体维护自己的策略进行独立执行和优化,在训练阶段利用集中式信息协调智能体的更新方向。在这个框架下,现有的库将整个学习管道分为两个阶段:数据采样和模型优化。在模型优化阶段,数据采样阶段的所有数据都是可用的,使训练集中。然而,这样,选择合适的数据和使用这些数据来优化模型是在同一阶段耦合的。因此,扩展算法以适应其他任务模式(例如合作和竞争)变得更具挑战性,并且需要重新设计整个学习管道。

MARLlib 通过将原始分组数据流等效地分解为代理级分布式数据流来解决这个问题。本质上,在样本采集和优化过程中,它将多智能体训练中的每个智能体作为一个独立的单元,但在后处理阶段,智能体之间共享集中的信息(后处理是在模型优化之前处理采样数据的RLlib API;我们丰富它以适应不同的算法),以确保等价。在后处理中,代理与其他代理共享观察数据(从环境中采样的数据)和预测数据(策略或Q值所采取的操作)。所有代理都维护各自的数据缓冲区,其中存储了它们的经验和其他代理共享的必要信息。进入学习阶段后,agent之间不需要信息共享,可以独立进行自我优化。通过这种方式,我们将原始组合的数据流分发给代理,并将数据共享和优化完全解耦,从而允许相同的实现解决多种模式的任务。

如何实现解耦的呢?
在后处理阶段,处理采样数据,用代理级分布式数据流的方式。具体而言,所有代理都维护各自的数据缓冲区,其中存储了它们的经验和其他代理共享的必要信息。

此外,虽然所有基于ctde的算法通常共享相似的代理级数据流,但它们仍然具有独特的数据处理逻辑。受EPyMARL[26]的启发,我们进一步将算法分为独立学习、集中批评和价值分解三类,以实现模块共享和可扩展性。总结如下(精华!!!):

  1. 独立学习算法让智能体独立学习;
  2. 集中式评价算法利用共享信息对评价者进行优化,进而指导分散行为者的优化;
  3. 价值分解算法学习一个联合的价值函数,并将其分解成单个的价值函数,然后代理在执行过程中使用它来选择动作。

根据它们的算法特性,我们在后处理阶段实现了合适的数据共享策略,如下面的图2所示。
在这里插入图片描述
图2: MARLlib的代理级分布式数据流。

观察数据是指从环境中采样的数据,例如奖励或全局状态。
预测数据是指由代理生成的数据,例如Q值或选择的操作。
后处理是指数据共享过程。每个代理维护自己的学习管道,其中收集的数据用于优化代理本身的策略。

因此,数据流是代理级分布的。
数据流有独立学习、集中批判和价值分解三种类型[26],根据它们的中心信息利用方式进行了区分。

从单智能体的角度来看,独立学习算法(如IQL[36])本质上是分布式数据流,跳过了信息共享过程,如(a)所示。

对于集中式批评算法(如MAPPO[43]),在进入训练阶段之前,在后处理函数中收集并共享中心信息,包括观测数据和预测数据,以确保分布式数据流。如(b)所示。

在值分解类别(如FACMAC[27])中,所有agent的预测数据必须是共享的,而观测数据是可选的,这取决于算法的混合功能。相应的数据流如(c)所示。

3.2 Agent-environment 交互的通用接口

在许多RL库中,通常采用OpenAI Gym的观察、奖励、完成和信息接口。然而,这个标准化的接口不能简单地扩展到MARL。在MARL中,多个代理共存,每个代理都有自己的经验数据。额外的信息有时是可用的,比如动作掩码和全局状态。根据任务模式的不同,奖励可以是标量或字典。此外,代理可能无法与环境同步交互,这构成了另一个挑战。为了解决这些问题,MARLlib从两个方面统一了多代理接口

首先,MARLlib统一了接口数据结构。

MARLlib提出了一个新的接口,遵循Gym API, obs, reward, done, info,在实践中兼容不同的多智能体任务设置,涵盖数据结构和任务模式。

如图(3)所示,在MARLlib中,从环境返回的观测值是一个带有三个键的字典:observation、action_mask、global_state。该设计满足大多数情况,并与RLlib的数据处理逻辑兼容。其他与观测相关的信息包含在info中。

Reward是一个以agent id为键的字典。为了适应合作任务,将标量团队奖励转换为字典结构,复制代理数次。Done是一个包含单个键"all"的字典,它仅在所有代理终止时为真。

其次,MARLlib支持同步和异步代理-环境交互

在MARLlib之前的现有MARL库,如PyMARL,不支持异步采样,主要关注同步情况。然而,异步代理-环境交互在Go和Hanabi等多代理任务中很常见。
由于RLlib灵活的数据收集机制,MARLlib支持同步和异步代理与环境的交互:使用代理id收集和存储数据。只有当我们接收到完成的终端信号时,才会返回所有数据供后续使用。这个采样过程如图3所示。

在这里插入图片描述

3.3 高效的策略映射

在多智能体场景下,适当的参数共享策略可以提高算法的性能。尽管它很重要,但大多数现有工作对共享模式的支持不足,而且实现是重复的——MAPPO基准重写了共享和分离设置的所有内容,而EPyMARL重复模型结构以同时支持这两种设置。

在MARLlib中,我们通过实现RLlib的策略映射API,支持共享(所有代理共享参数)、分离(没有代理共享参数)和组(同一组内的代理共享参数)参数共享。直观地说,它将代理的虚拟策略映射到实际维护、使用和优化的物理策略。映射到相同物理策略的智能体共享参数。由于策略映射对代理是透明的,因此它们实际上对数据进行采样并使用物理策略进行优化。因此,可以在不影响算法实现的情况下实现不同类型的参数共享。在实践中,我们只需要为每个环境维护一个包含所有相关信息的策略映射字典,以支持多种共享模式。通过修改策略映射API以满足需求,可以实现更自定义的参数共享策略。

怎么理解策略映射呢?
不同的智能体采取不同的策略,映射需要考虑某个智能体属于哪一类的人,能量有多大,从而给它分配合适的策略。

4. Python 包的调用举例

API 使用举例分析

惊叹!实现一个多智能体的模型需要的代码如此的精简!

5. 管道控制

MARLlib通过允许用户自定义配置文件提供了一个简化的训练管道。这些文件是完全解耦的,位置如 图4 所示。

为了在修改配置时提供更大的灵活性,MARLlib支持三种优先级,从低到高依次列出:1)基于文件的配置,包括所有默认的*。yaml文件。2)基于api的自定义配置,允许用户指定自己的偏好,如{“core_arch”:“mlp”,“encode_layer”:“128-256”}。3)命令行参数,如$python mappo.py -algo_args.num_sgd_iter =6。
如果在多个级别上设置一个参数,则较高级别的配置优先于较低级别的配置。通过提供多个级别的配置,MARLlib允许用户定制他们的培训管道,以满足他们的特定需求,促进更高效和有效的训练过程。

在这里插入图片描述
图4:MARLlib配置器包含四个配置文件,用户可以自定义环境、算法、模型和基本的RLlib设置。

6. 文档

文档分为了四个大块。

MARLlib Handbook, Navigate From RL to MARL, Algorithm Documentation, and Resources.

文档,项目链接如下:
https://github.com/Replicable-MARL/MARLlib

说明:

  • 阴影标注了 top 2
  • SMAC的环境下,和 EPyMARL 做了对比。
    在这里插入图片描述
    表 2 : 对于不同的合作任务,不同的算法的不同表现情况。

7. 实验

在本节中,我们评估了SMAC[33]、MPE[22]、GRF[19]、MAMuJoCo[27]和管理[46]等5个MARL测试平台23个任务上的17种算法,选择这些算法是因为它们在MARL研究中的受欢迎程度,以及它们在任务模式、观察形状、附加信息、动作空间、稀疏或密集奖励、同质或异构代理类型方面的多样性。我们报告了四种随机种子下实验的平均收益,总共有一千多个实验。实验结果如表2和图5所示。基于这些结果,我们证实了实施的质量,并提供了深刻的分析。
在这里插入图片描述
图5:在MAgent (a-d)和MPE (e-h)中8种混合场景(agent分组竞争)的收益曲线。不同风格的曲线代表不同的agent组。在学习过程中,竞争群体的收益曲线呈现动态平衡,平衡点取决于算法和任务。放大以获得更好的可视化。

7.1 实现的质量的分析

贡献1 收敛快速

为了证明MARLlib的正确性,我们在保持重要超参数不变的情况下,将MARLlib在SMAC上实现的性能与EPyMARL报告的性能进行了比较。EPyMARL的结果在策略上算法上消耗4000万步,在策略外算法上消耗400万步。MARLlib分别只消耗它们的一半,因为我们发现它足以使训练收敛。即使训练步骤更少,我们也能匹配EPyMARL报告的大部分性能,如表2所示。

贡献2 奖励高(return 高)

(注意,作者用百分比的方式掩盖自己对比实验的数量的少,哈哈哈)
对于所有可用于比较的性能对,MARLlib在63%的性能对上获得了相似的结果(总奖励差异小于1.0),在25%的性能对上获得了优异的结果,而在其余12%的性能对上出现了较差的结果。由于每种算法都表现出预期的性能、通用性和稳定性,因此我们不依赖于特定于任务的技巧。这些实验结果证实了实现的正确性。

贡献3 更多的算法实现

在这个表中,我们还首次报告了5种算法在SMAC和MPE上的性能,12种算法在GRF上的性能,10种算法在MAMuJoCo上的性能,供社区参考。

7.2 性能表现的分析

经验表明,在强壮的强化学习算法的基础上开发单智能体强化学习算法是明智的选择。例如,PPO主要用于单代理RL,因为它比 vanilla PG 和A2C具有更好的经验性能。这种优势影响了多智能体的性能——MAPPO和VDPPO在大多数情况下都超过了MAA2C和VDA2C。

另一个证实这一结论的证据是值迭代方法的鲁棒性。与策略梯度方法相比,基于值迭代的算法具有较低的超参数敏感性和更高的样本效率。多智能体版本的Q学习(如IQL、VDN和QMIX)也继承了这一优势,并在大多数场景(如SMAC和MPE)中显示出强大的性能。

启发:
1. 要使用值迭代的方法,鲁棒性好。
2. 单智能体的开发要使用比较强的RL算法。比如PPO就比A2C要好。

其他

表2中的算法根据它们在具有相似任务模式的各种协作任务上的性能进行分类。根据我们的分析,我们观察到某些类型的算法在特定任务上表现出更好的性能。例如,当不需要中心信息时,独立学习算法是有效的,而集中式批评算法更适合于学习多种但协调的行为。

相比之下,价值分解算法在大多数协作基准测试中占主导地位。对于具有多种行为的合作任务,MAPPO和 HAPPO已成为强有力的基线。有关这些算法在协作任务上的性能的更详细分析,请参阅附录B.1。

除了合作任务,我们还评估了非合作任务中的算法,特别是竞争和混合任务。然而,在这些任务中的基准测试算法提出了一些挑战,因为代理可以表现出合作和竞争行为。我们将在附录B.2中更详细地讨论这些挑战。

附录

B.1 合作任务上算法的有效性的分析

当中心信息不是必需的时候,独立学习是有效的。虽然智能体之间的协调对于MARL算法至关重要,而独立学习在理论上是次优的,但已有的工作[10]指出,独立学习可以超越其他算法。在表2中,我们发现在simple_spread和pass_and_shoot等场景中,独立学习算法比集中式批评算法更好,在这些场景中,智能体的行为类似,中心信息对于策略优化是不必要的。同样,如果没有全局视图,独立学习也无法解决诸如simple_speaker_listener和simple_reference等协调任务。

集中式批评更擅长学习多样但协调一致的行为。 在多智能体任务中,智能体可以扮演不同的角色,并且它们的行为应该是特定于角色的[15,40]。集中式批评适合这些任务,因为局部观察和全局信息都得到了很好的利用。MAPPO就是一个很好的例子,它是集中式批评的代表性算法,在SMAC、MPE和GRF中的大多数协作任务上都表现良好。HAPPO是MAPPO的异构版本,在MAMuJoCo中实现了健壮的性能。MAPPO和HAPPO是具有不同行为的协作任务的强基线。

除了两种特定的情况外,价值分解在流行的合作基准中占主导地位。第一种情况是持续控制。众所周知的VDN、QMIX 等值分解算法不适合连续控制任务,VDA2C、VDPPO等算法也较差。第二种情况是具有稀疏奖励函数(如GRF)的长期规划问题。从经验上看,价值分解方法的性能明显差于ITRPO和MAPPO等其他类别的算法。我们确定了两个主要原因:1)VDN和QMIX使用的值迭代更倾向于密集的奖励函数;2)the mixer 几乎不能分解一个接近于零的Q函数。除了这两种情况外,值分解算法以最佳的样本效率实现了鲁棒性。

B.2 Algorithms Evaluation in Mixed Scenarios

在混合任务中对算法进行基准测试具有挑战性。混合任务中的智能体表现得既合作(与队友合作)又竞争(与对手竞争)。由于策略总是处于动态平衡状态,因此很难根据获得的奖励来证明哪种算法更好:当一个策略优化得更好时,其对手策略的性能就会下降。

在混合任务模式下,算法可以通过所有不同策略的奖励总和来评估。一个政策优化迫使竞争政策获得更高的回报。总奖励越高,算法越好(图5[a-d])。虽然不同策略的奖励总和通常用于评估混合任务模式下的算法,但需要注意的是,这并不是评估性能的唯一方法。事实上,这条规则也有例外(图5)。例如,某些任务可能具有恒定的总奖励值和策略,这些策略可以快速达到竞争策略之间镜像学习曲线的平衡。在这些情况下,评估算法的公平和通用标准仍然是一个活跃的研究领域。

Mixed Scenarios 的算法(又有敌人又有队友的情况),似乎并不适合我们的算力分配任务。

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

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

相关文章

Kafka:springboot集成kafka收发消息

kafka环境搭建参考Kafka&#xff1a;安装和配置_moreCalm的博客-CSDN博客 1、springboot中引入kafka依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><…

如何用Postman做接口自动化测试,你知道么?

什么是自动化测试&#xff1f; 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已…

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一&#xff1a;括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…

初学者自学python哪本书好,python教程自学全套

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python怎么自学,可以达到什么程度&#xff0c;初学者自学python哪本书好&#xff0c;现在让我们一起来看看吧&#xff01; 前言 Python是一个非常适合自学&#xff0c;0基础的话从入门到精通也只需要花3-4个月PYTHON库“…

诚迈科技亮相华为开发者大会2023,打造万物互联全场景生态

8月4-6日&#xff0c;华为开发者大会2023在中国松山湖盛大举行&#xff0c;诚迈科技作为华为合作伙伴携一系列基于OpenHarmony和HarmonyOS Connect的创新技术及生态成果&#xff0c;精彩亮相OpenHarmony共建展区、OpenHarmony使能展区和鸿蒙智联展区&#xff0c;吸引了众多行业…

nginx负载均衡(nginx结束)

本节主要内容 1、四层&#xff0c;七层代理的配置方法 2、负载均衡的算法 nginx负载均衡&#xff1a;反向代理来实现 反向代理有两种转发方式&#xff1a;1、四层代理 2、七层代理 Nginx的七层代理和四层代理 七层是最常见的反向代理方式&#xff0c;只能配置在nginx配置文…

基于SDK方式的小程序监控

基于SDK方式的小程序监控 一、背景 微信小程序自 2017 年正式上线以来&#xff0c;就受到商家和开发者的青睐。到 2022 年底&#xff0c;我国的互联网普及率已经高达 75.6%。随着互联网的快速发展&#xff0c;小程序也在快速成长&#xff0c;不仅使用人数在逐年攀升&#xff…

宝尊电商短期前景堪忧,宝尊国际能否取得成功还有待验证

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 核心业务面临短期逆风 在2023年第一季度财报中&#xff0c;宝尊电商&#xff08;BZUN&#xff09;表示其电商业务(简称BEC)主要包括&#xff1a;品牌的门店运营、客户服务以及物流和供应链管理、IT和数字营销等增值服务”。…

词嵌入、情感分类任务

目录 1.词嵌入&#xff08;word embedding&#xff09; 对单词使用one-hot编码的缺点是难以看出词与词之间的关系。 所以需要使用更加特征化的表示&#xff08;featurized representation&#xff09;&#xff0c;如下图所示&#xff0c;我们可以得到每个词的向量表达。 假设…

php webshell 免杀入门

webshell 查杀软件&#xff1a; d盾、安全狗、护卫神、Sangfor WebShellKill 在线查杀 百度WEBDIR https://scanner.baidu.com 河马 https://www.shellpub.com cloudwalker牧云 https://webshellchop.chaitin.cn 查杀技术 静态检测、动态检测、日志检查 静态检查&#xff1a…

感觉和身边其他人有差距?你的感觉我懂!

在我们的成长历程中&#xff0c;总要经历不同的人和事&#xff0c;身边不乏比我们优秀&#xff0c;比我们厉害的人&#xff0c;这个是无可避免的&#xff0c;也是无法选择的&#xff0c;但是可以选择的是&#xff1a;我们怎么做&#xff01; 目录 我的情况事件感受 我的解法心态…

【人工智能前沿弄潮】—— 玩转SAM(Segment Anything)

玩转SAM(Segment Anything) 官网链接&#xff1a; Segment Anything | Meta AI (segment-anything.com) github链接&#xff1a; facebookresearch/segment-anything: The repository provides code for running inference with the SegmentAnything Model (SAM), links fo…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知&#xff0c;科学技术是第一生产力&#xff0c;科学技术的发展给企业与人们的生活带来了极大变化&#xff0c;但随之而来的网络安全威胁也不断增加。最近&#xff0c;我们收到很多企业的求助&#xff0c;企业的计算机服务器遭到了devos勒索病毒的攻击&#xff0c;导致企…

华为、腾讯、淘宝面试流程+面试技术题分析,速看!

IT 是一个人才日益紧缺的行业&#xff0c;随着人才的紧缺&#xff0c;IT 业的薪水也是水涨船高。互联网巨头们对人才的争夺&#xff0c;更是日益激烈化。对于从事 IT 的职场人士&#xff0c;绝大部门都想进入那些巨头公司。除了薪水高、办公环境好&#xff0c;发展更有前景外&a…

unity海康威视原生SDK拉取网络摄像头画面,并展示在一个Material上

原理是使用sdk获取视频流&#xff0c;格式为YUV&#xff0c;然后分离YUV通道到三张不同的Texture2D上&#xff0c;通过shader将三个通道重新输出为原始图像。 我将所用的各个部分已经整理成一个压缩包&#xff0c;免积分下载 压缩包结构如下 使用步骤 1 DLL:放在Plugins文件…

东南亚调研

东南亚地理 东南亚经济 https://zh.m.wikipedia.org/zh-hans/%E4%B8%9C%E7%9B%9F%E5%9B%BD%E5%AE%B6GDP%E5%88%97%E8%A1%A8 东南亚人口结构 东南亚一半以上的人口年龄在 30 岁以下 https://population-pyramid.net/zh-cn 东南亚数字经济 原文件&#xff1a; 谷歌关于东南亚数…

Java整合Selenium录制视频

捕捉视频 有时候我们未必能够分析故障只需用日志文件或截图的帮助。有时捕获完整的执行视频帮助。让我们了解如何捕捉视频。 我们将利用Monte媒体库的执行相同。 配置 第1步&#xff1a;导航到URL下载屏幕记录JAR&#xff0c;如下图所示。 http://www.randelshofer.ch/monte…

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件 2023/8/9 17:30 由于喜欢看纪录片等外文视频&#xff0c;通过剪映/PR2023/AUTOSUB识别字幕之后&#xff0c;可以通过google翻译识别为简体中文的DOCX文档。 DOCX文档转换为TXT文档之后&#xff0c;还需要转换为SRT文档…

Linux(CentOS7)搭建达梦数据库

参考官方文档 本文记录一下达梦数据库的安装步骤&#xff0c;在安装的过程中出现了一些问题&#xff0c;进行了处理。 文章目录 安装前准备数据库安装命令行安装图形化安装 配置实例注册服务启动、停止数据库 安装前准备 用户在安装 DM 数据库之前需要检查或修改操作系统的配…

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…