MAPPO学习笔记(2) —— 从MAPPO论文入手
在有了上一节一些有关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,就是EP与IND的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论文入手的更多相关文章
- 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面 ...
- 深度学习笔记(七)SSD 论文阅读笔记简化
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- 深度学习笔记(七)SSD 论文阅读笔记
一. 算法概述 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法.与faster rcnn相比,该算法没有生成 proposal 的过程,这就极大提高了检测速度.针 ...
- Lasso估计论文学习笔记(一)
最近课程作业让阅读了这篇经典的论文,写篇学习笔记. 主要是对论文前半部分Lasso思想的理解,后面实验以及参数估计部分没有怎么写,中间有错误希望能提醒一下,新手原谅一下. 1.整体思路 作者提出了一种 ...
- 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集
A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...
- Apache Calcite 论文学习笔记
特别声明:本文来源于掘金,"预留"发表的[Apache Calcite 论文学习笔记](https://juejin.im/post/5d2ed6a96fb9a07eea32a6f ...
- 2019国家集训队论文《整点计数》命题报告 学习笔记/Min25
\(2019\)国家集训队论文<整点计数>命题报告 学习笔记/\(Min25\) 补了个大坑 看了看提交记录,发现\(hz\)的\(xdm\)早过了... 前置知识,\(HAOI\)< ...
- 2万字长文包教包会 JVM 内存结构 保姆级学习笔记
写这篇的主要原因呢,就是为了能在简历上写个"熟悉JVM底层结构",另一个原因就是能让读我文章的大家也写上这句话,真是个助人为乐的帅小伙....嗯,不单单只是面向面试学习哈,更重要的 ...
- LevelDB学习笔记 (3): 长文解析memtable、跳表和内存池Arena
LevelDB学习笔记 (3): 长文解析memtable.跳表和内存池Arena 1. MemTable的基本信息 我们前面说过leveldb的所有数据都会先写入memtable中,在leveldb ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
随机推荐
- (二).JavaScript的运算符和表达式,数据类型转化
4. 运算符和表达式 4.3 赋值运算符和表达式 1.赋值运算符 = 作用:赋值运算符就是将右边的内容赋值给左边的变量或属性. var result = 1 + 2; 2.复合赋值运算符 +=,-=, ...
- vue.js拓展无法启用
vue.js拓展无法启用 这里我以自己的谷歌浏览器演示 C:\Users\维磊\AppData\Local\Google\Chrome\User Data\Default\Extensions\nhd ...
- CGAL5.0.2 CMake过程记录
Zlib的INCLUDE_DIR 找到了,但是release_LIBRARY没有找到.不过没有影响generate. 打开build文件夹的CGAL.sln 文件,ALL_BUILD 生成,成功. 最 ...
- zsh以及oh-my-zsh的安装配置
Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们一种全新的方式使用命令行. ...
- OSPF V3协议简介
LSA1/LSA 2在ospfv3中,变成了只携带拓扑信息,区域内的路由信息注意到LSA 9中
- 布局管理器wx.BoxSizer
b = wx.BoxSizer( wx.VERTICAL ) b.Add(self.notebook1, 1, wx.EXPAND) self.parent.SetSizer(b) 解析以上代码原理, ...
- 【手搓模型】亲手实现 Vision Transformer
前言 博客主页:睡晚不猿序程 首发时间:2023.3.17,首发于博客园 最近更新时间:2023.3.17 本文由 睡晚不猿序程 原创 作者是蒻蒟本蒟,如果文章里有任何错误或者表述不清,请 tt 我, ...
- 详解uniapp和vue在路由方面的不同和联系
Uniapp 和 Vue 在路由方面有相似之处,因为 Uniapp 是基于 Vue 的.Uniapp 的路由系统是通过 Vue Router 实现的,因此两者有许多相同的概念和 API. 相同点: 都 ...
- 主机CPU散热器过重可能导致系统不稳定
CPU散热器越大,散热能力越强?其实散热器重量只是其中一个指标,还有风道设计也很重要.那么问题来了,为什么处理器散热器重量过重也可能导致系统运行不稳定? 本人用的配置为AMD R7 2700X 处理器 ...
- 借AI之势,打破创意与想象的边界
不要做这个时代的最后一只恐龙. IMMENSE.36氪|作者 1811年11月,英国,诺丁汉市西北一处小镇里,一群愤怒的纺织工人挥舞着锤头与斧子,一窝蜂地冲进车间里,将几台机器砸得粉碎. 后来,这场运 ...