前置基础:
DDPG
多智能体深度强化学习 # 多智能体深度强化学习基础



Multi-Agent:多智能体
Deep:与DQN类似,使用目标网络+经验回放
Deterministic:直接输出确定性的动作
Policy Gradient: 基于策略Policy来做梯度下降从而优化模型
MADDPG其实是在DDPG的基础上做的修改,而DDPG可以看作在DPG的基础之上修改而来,DPG是确定性输出的Policy Gradient;也可以把DDPG理解为让DQN可以扩展到连续控制动作空间的算法。

DDPG不适用于多智能体的环境(详细原因见MADRL基础),MADDPG算法是对DDPG算法为适应多Agent环境的改进,最核心的部分就是每个Agent的Critic部分能够获取其余所有Agent的动作信息,进行中心化训练和非中心化执行,即在训练的时候,引入可以观察全局的Critic来指导Actor训练,而测试的时候只使用有局部观测的actor采取行动。



以两个agent为例, 当模型训练好后,只需要两个actor与环境交互,即只需要绿色的循环。这里区别于单个agent的情况,每个agent的输入状态是不一样的。环境输出下一个全信息状态S_all后,actor1和actor2只能获取自己能够观测到的部分状态信息S1,S2。
在训练过程中,critic1和critic2可以获得全信息状态,同时还能获得两个agent采取的策略动作a1,a2。也就是说,actor虽然不能看到全部信息,也不知道其他actor的策略,但是每个actor有一个上帝视角的导师,这个导师可以观测到所有信息,并指导对应的actor优化策略。

下载openai/MADDPG的源码
dependencies: Python (3.5.4),OpenAI gym (0.10.5), tensorflow (1.8.0), numpy (1.14.5)
实现:

conda create -n maddpg python=3.6

一定要用3.6,3.5导致grpcio无法安装,坑特别多。

(通过pip安装,conda install不行)
然后下载Multi-Agent Particle Environments (MPE)
在源码目录下执行:

pip install -e .

然后回到maddpg源码下,再次执行上述代码。
最后进入maddpg/experiments执行下面代码:

python train.py --scenario simple

另外,OpenAI开源的MADDPG官方源码有一个小错误,可能导致如下报错:

Traceback (most recent call last):
File “train.py”, line 193, in
train(arglist)
File “train.py”, line 182, in train
rew_file_name = arglist.plots_dir + arglist.exp_name + ‘_rewards.pkl’
TypeError: can only concatenate str (not “NoneType”) to str

修改train.py第182行为

rew_file_name = str(arglist.plots_dir) + str(arglist.exp_name) +'_rewards.pkl'

第185行为:

agrew_file_name = str(arglist.plots_dir) + str(arglist.exp_name) +'_agrewards.pkl'
Traceback (most recent call last):File "train.py", line 193, in <module>train(arglist)File "train.py", line 183, in trainwith open(rew_file_name, 'wb') as fp:
FileNotFoundError: [Errno 2] No such file or directory: './learning_curves/None_rewards.pkl'

他比较蠢,不能自己建目录,所以需要人为在experienments下面建子目录learning_curves。

显示可视化界面:
训练完数据后,进行可视化,只需运行代码:python train.py --scenario +环境的名称 --display即可。例如:

python train.py --scenario simple_tag --display

如果还想了解MADDPG的论文和原理部分请阅读后文。


假设现在有两个智能体A和B,对于A来说,B是它的环境中的一部分,当B采取动作改变了自身状态,那么对于A来说它的环境也变了,更何况两智能体之间存在竞争和合作的关系,如果一方的策略变了,那么另一方所做的估计(经验)也不能适用。
对于policy gradient方法,在要求多智能体协作的时候通常会有很高的方差,因为智能体的reward通常取决于许多智能体的动作,智能体自己的动作的reward表现出更多的可变性,从而增加了其梯度的方差。

但是如果我们能够知道其他agent的policy,action那么就有:


可以看到在Critic网络中有:obs_dim = dim_observation * n_agentact_dim = self.dim_action * n_agent其他部分和DDPG几乎相同。

MADDPG存在哪些问题,可以怎么改进?
(1)因为我们需要知道其他agent的policy,这是一个很强的假设,为了解决它我们可以用一个函数来拟合其他agent的策略(inferring policy)。
(2)我们利用了其他agent的policy来学习,这样有可能会过拟合,比如说几个agent之间本来是合作的关系,如果突然变成了竞争关系那么之前学到的policy就会受到很大影响,为了解决这个问题,我们可以采用 ensemble policy,即每个episode都随机的选取一部分sub-policy。

Reference

  1. 《Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments》 NIPS 2017 from openai
  2. openai/MADDPG的github
  3. Learning to Cooperate,Compete, and Communicate
  4. 用多智能体强化学习算法MADDPG解决"老鹰捉小鸡"问题
  5. 基于PARL的MADDPG实现
  6. 多智能体深度强化学习——MADDPG算法代码分析(tensorflow)
  7. 多智能体强化学习之MADDPG
    这篇讲了很多数学部分。

多智能体深度强化学习 # MADDPG相关推荐

  1. 多智能体深度强化学习综述与批判——Matthew E. Taylor

    这篇综述是华盛顿大学的Matthew E. Taylor总结的,"A Survey and Critique of Multiagent Deep Reinforcement Learnin ...

  2. 基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

    Trajectory Design and Access Control for Air-Ground Coordinated Communications System with Multi-Age ...

  3. 基于通用学习环境和多智能体深度强化学习的列车运行图

    ‍ 1. 文章信息 <Train timetabling with the general learning environment and multi-agent deep reinforce ...

  4. 论坛报名 | 从捉迷藏、星际争霸到新一代人工智能:多智能体深度强化学习的理论与实践...

    与6位图灵奖得主和100多位专家 共同探讨人工智能的下一个十年 长按图片或点击阅读原文,内行盛会,首次免费注册 2020年6月21-24日,第二届北京智源大会(官网:https://2020.baai ...

  5. 用于衍生品定价和动态对冲的多智能体深度强化学习和基于 GAN 的市场模拟

    计算能力的进步使机器学习算法能够直接从大量数据中学习.深度强化学习是一种特别强大的方法,它使用代理通过与数据环境交互来学习.尽管许多交易员和投资经理依赖传统的统计和随机方法来为资产定价并制定交易和对冲 ...

  6. 多智能体深度强化学习(MADRL)在大规模交通信号灯控制中的应用

    <Multi-Agent Deep Reinforcement Learning for Large-Scale Traffic Signal Control> IEEE Transact ...

  7. 基于图神经网络的多智能体深度强化学习

    参考文献 [1] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. a ...

  8. 多智能体强化学习Multi agent,多任务强化学习Multi task以及多智能体多任务强化学习Multi agent Multi task概述

    概述 在我之前的工作中,我自己总结了一些多智能体强化学习的算法和通俗的理解. 首先,关于题目中提到的这三个家伙,大家首先想到的就是强化学习的五件套: 状态:s 奖励:r 动作值:Q 状态值:V 策略: ...

  9. 中科院自动化所介绍深度强化学习进展:从AlphaGo到AlphaGo Zero

    来源:德先生 概要:2016年初,AlphaGo战胜李世石成为人工智能的里程碑事件.其核心技术深度强化学习受到人们的广泛关注和研究,取得了丰硕的理论和应用成果. 深度强化学习进展:  从AlphaGo ...

最新文章

  1. 【C#】类——里式转换
  2. 漫话:如何给女朋友解释什么是 Git 和 GitHub?
  3. RunLoop 浅析
  4. java中常量final的用法_详解Java中final的用法
  5. Mysql-索引的基础和类型
  6. xamarin android界面框架,Xamarin图表开发基础教程(3)OxyPlot框架
  7. 计算机五笔打字口诀,电脑五笔打字的字根口诀是什么?
  8. 一道线性代数证明题:若AX=0的解空间为U,则U的正交补是由A的行向量组张成的
  9. Cesium中的几种坐标和相互转换
  10. ssrf漏洞修复(ssrf漏洞修复方式)
  11. 利用Jupyter Notebook进行科学计算和数据分析
  12. webstorm2020.2.3下载安装教程
  13. 【OptiX】第6个示例 折射,玻璃材质
  14. 无网情况下安装rpm依赖包
  15. irreader RSS 订阅源阅读器工具软件 - 一款强大的网络内容阅读器
  16. 自动驾驶网络:为什么需要自动驾驶网络?
  17. 比尔·盖茨:现在比任何时候都需要新的救命工具,向CEPI再捐1.5亿美元加速疫苗研发...
  18. Amazon Redshift ML现已正式推出——使用SQL创建机器学习模型并通过您的数据进行预测
  19. PLC远程监控与数据采集方案(手机APP)
  20. 知乎7w阅读!Android彻底组件化方案实践方法!已整理成文档

热门文章

  1. html中的评论框怎么写,利用HTML、CSS 实现带表情的评论框的制作教程
  2. QGIS加载谷歌地图(google map)方法
  3. Kotlin 注解全解析
  4. 太让人失望了,这些公司建议避雷!
  5. 一款好用的设计师导航,让设计师拥有良好的设计体验
  6. 产品包装设计在品牌和营销中的重要性
  7. 如何快速高效的刷Leetcode
  8. Alignedreid项目源码分析
  9. 用Fiddler、Charles和mitmproxy进行手机抓包的配置教程
  10. 智能家居无线方案ZIGBEE、Z-Wave、WIFI、蓝牙、红外、GPRS以及NB-IOT对比