多智能体系统(MAS)中每个智能体的策略不只取决于自身的策略和环境的反馈, 同时还受到其它智能体行为和合作关系的影响。 本文简单介绍MADDPG(Multi-Agent Deep Deterministic Policy Gradient)算法,并采用百度飞桨(paddlepaddle)的开源强化学习平台PARL来探索MADDPG算法实践。

一、算法介绍

MADDPG 算法是将 DDPG 算法扩展到多智能体环境中,MADDPG 算法定义每一个智能体拥有自己独立的 critic network 以及 actor network, 并且定义每个智能体拥有自己独立的回报函数,这样 MADDPG 算法就可以同时解决协作环境、竞争环境以及混合环境下的多智能体问题。 每个智能体在训练时都能够获取其余所有智能体的局部观察以及动作,即采用中心化方式训练,分布式执行方式。

1.算法架构
算法模型由多个DDPG网络组成,每个网络学习policy π (Actor) 和 action value Q (Critic);同时具有target network,用于Q-learning的off-policy学习。算法架构图如下:

  1. 训练统一进行,执行分布进行。
  2. 各个Actor收集数据(s, a=μ(s), r, s_next, a'=μ'(s)),并存入Replay Buffer,当缓存池数量大于预热阈值时,开始学习。
  3. 每个Actor分别更新policy π参数,与DDPG一样,只需要当前(s, a=μ(s))。
  4. 每个Critic分别更新action value Q参数,每个Critic都能看到所有的Actor收集的数据,更新参数时会考虑所有Actor生成的数据,即优化的是每个Critic对全局的贡献最大。
  5. 重复2,3,4,直至收敛。 每个智能体的 critic 网络是基于全局信息的,因而可以处理环境非平稳问题。

2.算法伪代码

每个Agent的训练同单个DDPG算法的训练过程类似,不同的地方主要体现在Critic的输入上:

  1. 在单个Agent的DDPG算法中,Critic的输入是一个state-action对信息,在MADDPG中,每个Agent的Critic输入除自身的state-action信息外,还可以有额外的信息,比如其他Agent的动作。
  2. 不同的Agent之间的关系大体可以分为三种,合作型,对抗性,半合作半对抗型。可以根据不同的合作关系来设计我们的奖励函数。

3.算法特点

  1. 通过基于Actor-Critic的DDPG作为基本结构,解决多智能体问题。
  2. 独立地采样,统一地学习。
  3. 通过所有Actor的数据更新Q的值,让系统比较平稳地优化。
  4. 框架没有对环境做限制,每个Agent可以有自己的Reward机制,并决定着整体是协作或是竞争。
  5. 对于每个Agent,测试时只需要当前Actor的数据进行预测;训练和测试输入数据不一致,这是个创新点。

二、算法的PARL实践

实践选用了百度的AI Studio平台,有关代码共享地址:https://aistudio.baidu.com/aistudio/projectdetail/643657

  1. 配置PARL

PARL 是百度飞浆的一个高性能、灵活的强化学习框架

# 说明:AIStudio预装的parl版本太老,容易跟其他库产生兼容性冲突,建议先卸载
!pip uninstall -y pandas scikit-learn 

2.配置multiagent-particle-envs

“multiagent-particle-envs”里面有论文中多组实验环境,有合作型的,有对抗型的也有半合作半对抗型。

!git clone https://github.com/openai/multiagent-particle-envs
!pip install -e /home/aistudio/multiagent-particle-envs
#一定要安装gym==0.10.5版本的gym,否则报错
!pip install gym==0.10.5  -i https://mirror.baidu.com/pypi/simple

3.代码说明
PARL的一般代码结构分为三部分

  1. Model 用来定义前向(Forward)网络,这通常是一个策略网络(Policy Network)或者一个值函数网络(Value Function),输入是当前环境状态(State)。
  2. Agent 负责算法与环境的交互,在交互过程中把生成的数据提供给Algorithm来更新模型(Model),数据的预处理流程也一般定义在这里。
  3. Algorithm 定义了具体的算法来更新前向网络(Model),也就是通过定义损失函数来更新Model。

PARL有关MADDPG算法实验的代码分为三个文件
1.simple_mode.py 定义了MAModel,包含ActorModel和CriticModel。
2.simple_agent.py 定义了MAAgent,包含数据和算法交互过程
3.train.py 主要是训练过程,核心代码注释如下:

agents = []for i in range(env.n):# 初始化模型model = MAModel(env.act_shape_n[i]) #MADDPG算法内置在PARL,定义好模型即可调用algorithm = parl.algorithms.MADDPG(   model,agent_index=i,act_space=env.action_space,gamma=args.gamma,tau=args.tau,lr=args.lr)#初始化Agentagent = MAAgent(    algorithm,agent_index=i,obs_dim_n=env.obs_shape_n,act_dim_n=env.act_shape_n,batch_size=args.batch_size,speedup=(not args.restore))agents.append(agent)

实验用的"simple_tag" 场景,有3粉1绿总共4个智能体,红绿智能体相互对抗。

  1. 绿色的agent尽可能避免与3个红色智能体碰撞;
  2. 粉色的agent协同运动与绿色agent发生碰撞;
  3. 黑色为阻碍道路的地标。

python train.py --env [ENV_NAME] 测试或者训练模型
训练后使用 python train.py --env [ENV_NAME] --show --restore 展示效果

!python train.py --env simple_tag

参考资料

1.Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments https://arxiv.org/abs/1706.02275

2.PARL MADDPG 实现 https://github.com/PaddlePaddle/PARL/tree/develop/examples/MADDPG

python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践相关推荐

  1. 深度学习算法_爱奇艺深度学习算法实习生面经

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:铭动乾坤 https://www.nowcoder.com/d ...

  2. 统计信号处理_声学前端:深度学习算法和传统信号处理方法各有千秋

    在十年前,声学前端(音频前处理)还主要是基于传统信号处理的方法,在很长的一段时间里,研究者们建立了一整套涵盖单通道和多通道的语音增强.语音分离.回声消除.声源定位.波束形成等技术,这些技术许多都是基于 ...

  3. tensorflow玻尔兹曼机_资源 | 10种深度学习算法的TensorFlow实现

    原标题:资源 | 10种深度学习算法的TensorFlow实现 选自 Github 作者:blackecho 机器之心编译 参与:吴攀 这个 repository 是使用 TensorFlow 库实现 ...

  4. 融合一致性正则与流形正则的半监督深度学习算法

    融合一致性正则与流形正则的半监督深度学习算法 王杰1,2, 张松岩1,2, 梁吉业1,2 1山西大学计算机与信息技术学院 2计算智能与中文信息处理教育部重点实验室 摘要:半监督学习已被广泛应用于大数据 ...

  5. 大数据基石python学习_资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段!...

    原标题:资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段! 这是一份比较全面的视频教程,基本上包括了市面上所有关于机器学习,统计学习, ...

  6. 基于Python+百度语音的智能语音ChatGPT聊天机器人(机器学习+深度学习+语义识别)含全部工程源码 适合个人二次开发

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 Pycharm 环境 ChatterBot 环境 模块实现 1. 模型构建 2. 服务器端 3. 客户端 4. 语音录入 ...

  7. 深度学习 数码管_创新研发基于深度学习的可见光智能检测技术

    "随着国家智能电网战略布局的不断实施,依托于巡检机器人的变电站智能巡检技术必将逐步取代人力,成为电网巡检的主流.国电瑞源智能巡检机器人搭载基于可见光的智能检测技术实现输电设备异物检测.变电站 ...

  8. python实现登录支付宝收能量_适合零基础人群学习的Python入门教程

    适合零基础人群学习的Python入门教程学什么?小编为大家准备的Python学习教程,课程主要讲解:Python核心编程.Linux基础.前端开发.Web开发.爬虫开发.人工智能等内容. 对于初学者想 ...

  9. python算法工程师招聘_经验 | 我心目中招聘深度学习算法工程师的标准

    原标题:经验 | 我心目中招聘深度学习算法工程师的标准 本文转载自有三AI 目前利用深度学习这个工具可以做很多事情,各大领域(图像,语音,NLP等),各大行业(娱乐,金融,医疗等)这几年都被玩的风生水 ...

  10. 深度学习算法和机器学习算法_啊哈! 4种流行的机器学习算法的片刻

    深度学习算法和机器学习算法 Most people are either in two camps: 大多数人都在两个营地中: I don't understand these machine lea ...

最新文章

  1. c语言函数传参时候的类型强制装换
  2. as本地仓库更改_Android Studio 之 Gradle与Project Structure详解
  3. 【网址收藏】kubebuiler中文文档
  4. Qt Creator查看输出
  5. MySQL预读失效_华为云MySQL新增“逻辑预读”特性,轻松解决线性预读失效问题...
  6. 深入理解移动前端开发之viewport
  7. mysql重复记录大于十的数据库_面试官:在使用mysql数据库时,遇到重复数据怎么处理?...
  8. python--列表list
  9. 参考优秀案例,让你设计的网页更惊艳?
  10. C++新特性探究(6.1):auto和decltype的类型推断差异所在
  11. springboot JPA 做security的时候出现查了user表却不自动查role表 报 session为空
  12. IDEA 导入 SSM项目
  13. 计算机考研吉大东北大学大连理工,考研就选985/211!这7所985高校却一个A+学科都没有,认真的吗?...
  14. easyuidatagrid更改字体大小
  15. 有趣的推理html,关于有趣的推理评课稿
  16. Git下载安装及使用说明
  17. Win7怎么卸载微软输入法?
  18. 解决金山打字通不能缩小窗口问题
  19. (转)安装SQL Server:以前某个程序安装时挂起了文件操作,安装程序前请重启
  20. linux修改证书通用名,linux – 证书通用名称`* .c.ssl.fastly.net’与请求的主机名不匹配...

热门文章

  1. karto探秘之open_karto 第四章 --- 回环检测与后端优化
  2. 一文详解深度相机之TOF成像
  3. 基于RGB图像的机器人抓取算法汇总
  4. react创建项目报错unexpected end of json while parsing near xxx
  5. LNMP 1.2 Nginx编译安装
  6. TCP/IP长连接和短连接
  7. 关于NDK及安装使用
  8. 有朋自远方来——阿里软件专家作客武汉博文
  9. Python实现Windows电脑定时关机
  10. 【Tensorflow2.0】关于制作标签遇到的问题小结