在有了上一节一些有关PPO算法的概念作为基础后,我们就可以正式开始对于MAPPO这一算法的学习。

那么,既然要学习一个算法,就不得不去阅读提出这一算法的论文。那么本篇博客将从MAPPO的论文出发,对MAPPO这一算法进行一定的介绍。

论文的地址在这里:https://arxiv.org/pdf/2103.01955.pdf

同时,作者也在github上公布了源码:https://github.com/marlbenchmark/on-policy

但我个人更推荐这个轻量级的MAPPO,因为它的环境更简单,更容易理解:

https://github.com/tinyzqh/light_mappo

1.MAPPO论文

首先看论文的摘要部分,作者在摘要中说,PPO作为一个常见的在线强化学习算法,在许多任务中都取得了极为优异的表现。但是,当我们面对一个多智能体环境时,在线策略的表现往往不如某些离线策略,造成这种结果的原因很多,首先,就像我们上一节提到的,PPO由于是在线策略,即使是使用了另外一个不同的网络来收集数据,但它的网络依旧是在不断更新的,因此数据利用率较低,尤其是在多智能体环境中;另一方面,PPO的一些调参技巧在多智能体环境中也可能并不适用。

为了解决PPO在多智能体环境中遇到的种种问题,作者在PPO的基础上增加了智能体与智能体之间的信息交互,从而提出了MAPPO这一概念,并且作者还将MAPPO与VQN、QMIX等算法进行了对比(在文章中,作者主要使用了星际争霸、Hanabi-Full、multi-agent particle world environments (MPE)与Google Research Football (GRF)这几个不同的环境,有关这几个环境的简单介绍,可以参考:https://blog.51cto.com/u_15485092/5037000# ),当然,从论文的结果看,不出意外的,MAPPO在这几个测试环境中都取得了较为优异的表现。

值得一提的是,文章中作者并没有对MAPPO的整个结构,包括MAPPO的理论进行过多的介绍,于是我们只能够从代码中获取与MAPPO结构有关的信息,这一块很有可能放到下一节代码梳理中进行详细的说明(如果有下一节的话)

这篇论文的第二个部分就是作者对于MAPPO在上述提到的几个环境下结果的展示,我们这里以SMAC的结果为例:

上面这张表格是几个多智能体算法在SMAC环境中的表现,第一列的Map代表该环境中的地图,每一张地图上的地形、兵种配置各不相同,表格中的数字则代表着该算法在目前这张地图中的胜率,从表格中我们不难看出,如果实验结果正确,那么MAPPO的表现是超过IPPO与QMIX的(这里补充说明一下IPPO,IPPO中的"I"代表着independent,意为多个独立的,无信息交互的PPO智能体,将这几个智能体放在同一个环境中进行实验,并将实验结果汇总,就是IPPO的结果)

此外,我们还留意到,即使是同样使用MAPPO算法,后面也有一个小括号(FP)与(AS),它代表着信息输入的几种不同的形式,这个会在之后的部分做介绍。

上面是MAPPO与其它算法在SMAC(星际争霸)环境中的表现对比。除了这个环节之外,作者还在其它的环境中进行了测试,这里附上结果,并不对所有的结果进行详细的说明。

Hanabi的实验结果:

GRF的实验结果:

论文的的第三部分,也是最重要的一个部分,在有了这些实验结果后,接下来作者列出了几个会对实验结果产生较大影响的因素,包括值标准化、值函数的输入表示、训练数据的使用、PPO裁剪、Batchsize,在下面一个部分将会对这些因素进行一一介绍。

1.2. 实验影响因素分析

1. 值标准化

由于在训练过程中,目标值是在不断变化的,因此整个值函数的学习过程是不稳定的,为了应对这一点,作者对value进行了移动移动标准化,当计算GAE时,再将value反标准化,作者发现这样就可以提升MAPPO的效果。

2.值函数的输入形式

当我们将信息输入值函数时,首先要解决的一个问题就是:输入什么样的信息。在论文中,作者给出了以下几种信息输入的形式:



我们先假设存在这样一个环境,在这个环境中,我们把智能体分为两队,那么对于每一个智能体而言,就会存在多个“队友”与“对手”,并且每一队智能体都存在着一个“中心”。

那么上图中的第一种输入形式IND,就是所有智能体的信息的concatenate,而上图中的第二种输入形式EP,就是所有队伍中心信息的concatenate,上图中的第三种输入形式AS,就是EPIND的concatenate,上图中的第四种输入形式FP,就是在AS的基础上去除了一些冗余的信息。

当然,这四种输入形式的表现在实验中自然会有许多区别,作者在实验环境中测试了这几种输入形式,并给出了数值分析结果,由于篇幅限制,这里还请各位读者自行阅读置顶链接中的原论文。但是结果具体如何,还是要依据实际情况做出实践再进行讨论(具体情况具体分析)。

3.训练数据的使用方式

PPO的一个重要机制就是重要性采样,这个重要性采样机制可以使我们重复地利用样本。那么接下来的问题是,我们该如何去使用这些样本。在PPO算法中,我们经常使用的就是将一个很大的batch分为32个,或者64个mini batch,,并且训练数十或者数百个epoch。但是在MAPPO中,作者发现,MAPPO的性能会随着数据重复使用的频率产生明显的下降,因此,作者进行研究时,对简单的任务使用了15个epoch,而较为复杂的任务则进行了10个或5个epoch (这里要注意强化学习中epoch、episode、time_step的区别)

4. PPO Clipping

在上一篇帖子中,我们提到了使用PPO_clipping来防止计算entropy以及重要性时产生过大的波动,作者在论文中也对最优的裁剪率ε进行了研究,并最终将ε设定为0.2。

以上就是MAPPO的作者在其论文中对一些机制进行的讨论,在下一篇博客中,我们将看一看MAPPO的代码,并从代码的角度加深理解。

MAPPO学习笔记(2) —— 从MAPPO论文入手的更多相关文章

  1. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面 ...

  2. 深度学习笔记(七)SSD 论文阅读笔记简化

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  3. 深度学习笔记(七)SSD 论文阅读笔记

    一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...

  4. Lasso估计论文学习笔记(一)

    最近课程作业让阅读了这篇经典的论文,写篇学习笔记. 主要是对论文前半部分Lasso思想的理解,后面实验以及参数估计部分没有怎么写,中间有错误希望能提醒一下,新手原谅一下. 1.整体思路 作者提出了一种 ...

  5. 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集

    A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...

  6. Apache Calcite 论文学习笔记

    特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6f ...

  7. 2019国家集训队论文《整点计数》命题报告 学习笔记/Min25

    \(2019\)国家集训队论文<整点计数>命题报告 学习笔记/\(Min25\) 补了个大坑 看了看提交记录,发现\(hz\)的\(xdm\)早过了... 前置知识,\(HAOI\)< ...

  8. 2万字长文包教包会 JVM 内存结构 保姆级学习笔记

    写这篇的主要原因呢,就是为了能在简历上写个"熟悉JVM底层结构",另一个原因就是能让读我文章的大家也写上这句话,真是个助人为乐的帅小伙....嗯,不单单只是面向面试学习哈,更重要的 ...

  9. LevelDB学习笔记 (3): 长文解析memtable、跳表和内存池Arena

    LevelDB学习笔记 (3): 长文解析memtable.跳表和内存池Arena 1. MemTable的基本信息 我们前面说过leveldb的所有数据都会先写入memtable中,在leveldb ...

  10. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

随机推荐

  1. 手机设置网络代理后,网络不可用之app-jmeter性能测试

    1.检查crt证书是否安装 (手机) 2.Jmeter设置HTTP代理端口和ip与手机设置代理参数一致即可

  2. Go_day01

    Go基础语法 注释 注释是为了增强代码的可读性,不会参与程序的一切功能, go语言注释分为单行注释与多行注释 单行注释 //双斜杠 每行都要添加 // 多行注释 /* */ 一次标记多行注释输入 pa ...

  3. docker学习随笔

    总结自https://zhuanlan.zhihu.com/p/187505981 Linux内核提供了Namespace技术来隔离PID/IPC/网络资源等,还提供了Control Group(cg ...

  4. element plus按钮点击后不会自动失去焦点的解决方案及Vue3中如何挂载全局函数并在组件中使用

    一.element plus按钮点击后不会自动失去焦点,该如何解决? 在按钮点击点击回调中增加以下代码: event.target.blur() if (event.target.nodeName = ...

  5. 例题1:shell脚本

    题目总结: 1.搜索子域名的shell脚本 2.嗅探并抓去网页快照shell脚本 3.漏洞利用程序下载脚本 题目一:依次输入以下代码即可: 1.wget www.megacorpone.com  2. ...

  6. grpc - 使用

    grpc 工具 BloomRPC GRPC - 使用 protobuf 定义protobuf,并将protobuf文件,通过java的plugin打包生成java-grpc相关文件.参照:grpc-p ...

  7. markdown空格缩进以及HTML空格实体

    参考链接:https://www.jianshu.com/p/31eade263e7a https://www.cnblogs.com/naixil/p/13193364.html

  8. 论文翻译:2023_THLNet: two-stage heterogeneous lightweight network for monaural speech enhancement

    论文地址:THLNet: 用于单耳语音增强的两级异构轻量级网络 代码:https://github.com/dangf15/THLNet 引用格式:Dang F, Hu Q, Zhang P. THL ...

  9. Django笔记十五之in查询及date日期相关过滤操作

    这一篇介绍关于范围,日期的筛选 in range date year week weekday quarter hour 1.in in 对应于 MySQL 中的 in 操作,可以接受数组.元组等类型 ...

  10. 源码安装slurm

    一.源码安装munge 1.下载munge 下载地址:https://github.com/dun/munge/releases 2.安装编译 tar -Jxvf munge-0.5.15.tar.x ...