论文原文:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments

论文翻译:MADDPG翻译

阅读本文需要强化学习基础,可以参考我前面的文章:多智能体强化学习入门

关于MADDPG强化学习算法的基础DDPG的可以查看我的文章:强化学习实践教学

对于MADDPG推荐的博客有:探秘多智能体强化学习-MADDPG算法原理及简单实现,里面包含代码实现。

github代码(基于Tensorflow):https://github.com/princewen/tensorflow_practice/tree/master/RL/Basic-MADDPG-Demo

MADDPG算法是单智能体算法DDPG在多智能体环境下的改进。其中最核心的差别就是,每个Agent的Critic部分都能够获取所有Agent的动作信息,进行中心化训练和非中心化执行。即在训练的时候,引入可以观察全局的critic来指导actor训练,而测试的时候只使用有局部观测的actor采取行动。off-line采用中心化训练,on-line采用非中心化执行,on-line与off-line的共同点就是actor,即只需要利用观测到的局部信息。

下面以两个智能体的情况为例:
r1(s,a1)=Ea2∈A,s′∈S[r1(s′)p(s′∣s,a1,a2)π2(a2∣s)]r_1(s,a_1) = E_{a_2 \in A,s' \in S}[r_1(s')p(s'|s,a_1,a_2) \pi_2(a_2| s)] r1​(s,a1​)=Ea2​∈A,s′∈S​[r1​(s′)p(s′∣s,a1​,a2​)π2​(a2​∣s)]

p1(s′∣s,a1)=∑a2∈Ap(s′∣s,a1,a2)π2(a2∣s)p_1(s' |s ,a_1) = \sum_{a_2 \in A} p(s' |s,a_1,a_2) \pi_2 (a_2| s) p1​(s′∣s,a1​)=a2​∈A∑​p(s′∣s,a1​,a2​)π2​(a2​∣s)

根据论文描述,算法在以下约束条件下运行:(1)学习的策略只能在执行时只能使用本地信息(即它们自己的观察结果),(2)我们无需知道环境的可微分动力学模型(3)我们对智能体之间的通信方法不做任何结构上的假设(即,我们不假设一个可区分的通信渠道)。 一旦满足上述要求,那么将产生一个通用的多智能体学习算法,不仅可以应用于具有明确通信渠道的合作博弈,还可以应用竞争性博弈和只涉及主体之间物理交互的博弈。

论文中三个改进是:

  1. 集中式训练,分布式执行:训练时采用集中式学习训练critic与actor,使用时actor只用知道局部信息就能运行。critic需要其他智能体的策略信息,本文给了一种估计其他智能体策略的方法,能够只用知道其他智能体的观测与动作。
  2. 改进了经验回放记录的数据。为了能够适用于动态环境,每一条信息由(x,x′,aq,...,an,r1,...,rn)(x,x',a_q,...,a_n,r_1,...,r_n)(x,x′,aq​,...,an​,r1​,...,rn​) 组成,x=(o1,...,on)x = (o_1,...,o_n)x=(o1​,...,on​) 表示每个智能体的观测。
  3. 利用策略集合效果优化(policy ensemble):对每个智能体学习多个策略,改进时利用所有策略的整体效果进行优化。以提高算法的稳定性以及鲁棒性。

代码

def actor_network(name):with tf.variable_scope(name) as scope:x = state_inputx = tf.layers.dense(x, 64)if self.layer_norm:x = tc.layers.layer_norm(x, center=True, scale=True)x = tf.nn.relu(x)x = tf.layers.dense(x, 64)if self.layer_norm:x = tc.layers.layer_norm(x, center=True, scale=True)x = tf.nn.relu(x)x = tf.layers.dense(x, self.nb_actions,kernel_initializer=tf.random_uniform_initializer(minval=-3e-3, maxval=3e-3))x = tf.nn.tanh(x)return xdef critic_network(name, action_input, reuse=False):with tf.variable_scope(name) as scope:if reuse:scope.reuse_variables()x = state_inputx = tf.layers.dense(x, 64)if self.layer_norm:x = tc.layers.layer_norm(x, center=True, scale=True)x = tf.nn.relu(x)x = tf.concat([x, action_input], axis=-1)x = tf.layers.dense(x, 64)if self.layer_norm:x = tc.layers.layer_norm(x, center=True, scale=True)x = tf.nn.relu(x)x = tf.layers.dense(x, 1, kernel_initializer=tf.random_uniform_initializer(minval=-3e-3, maxval=3e-3))return x

上面是模型部分的代码,actor部分相对于DDPG没有变化,Critic部分只需要加入其它智能体的动作作为输入即可。

 # 最大化Q值
self.actor_loss = -tf.reduce_mean(
critic_network(name + '_critic', action_input=tf.concat([self.action_output, other_action_input], axis=1),
reuse=True))
self.actor_train = self.actor_optimizer.minimize(self.actor_loss)self.target_Q = tf.placeholder(shape=[None, 1], dtype=tf.float32)
self.critic_loss = tf.reduce_mean(tf.square(self.target_Q - self.critic_output))
self.critic_train = self.critic_optimizer.minimize(self.critic_loss)

在Loss计算上可以看到依旧遵循DDPG的方法。Critic的估计值尽量靠近预测值,actor尽量使得Critic的估计值越大越好。

agent1_memory.add(np.vstack([o_n[0], o_n[1], o_n[2]]),np.vstack([agent1_action[0], agent2_action[0], agent3_action[0]]),r_n[0], np.vstack([o_n_next[0], o_n_next[1], o_n_next[2]]), False)agent2_memory.add(np.vstack([o_n[1], o_n[2], o_n[0]]),np.vstack([agent2_action[0], agent3_action[0], agent1_action[0]]),r_n[1], np.vstack([o_n_next[1], o_n_next[2], o_n_next[0]]), False)agent3_memory.add(np.vstack([o_n[2], o_n[0], o_n[1]]),np.vstack([agent3_action[0], agent1_action[0], agent2_action[0]]),r_n[2], np.vstack([o_n_next[2], o_n_next[0], o_n_next[1]]), False)

在经验池储存上,MADDPG不但要储存自身的可观察的状态信息,还要储存的是其它智能体的可观测状态信息。同时储存自身和他人的动作信息。以及每个智能体的下一个状态。

多智能体强化学习之MADDPG相关推荐

  1. 用多智能体强化学习算法MADDPG解决“老鹰捉小鸡“问题

    点击左上方蓝字关注我们 [飞桨开发者说]郑博培:北京联合大学机器人学院2018级自动化专业本科生,深圳市柴火创客空间认证会员,百度大脑智能对话训练师,百度强化学习7日营学员 MADDPG算法是强化学习 ...

  2. 【MADDPG(MPE)——环境配置与用法详细介绍(多智能体强化学习))】

    MADDPG(MPE)--环境配置与用法详细介绍(多智能体强化学习) MADDPG(MPE) 介绍 MPE环境安装教程 前期准备 MPE 安装包介绍 MPE 安装环境要求 开始安装 环境测试 MPE环 ...

  3. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  4. Multi-agent Particle Environment - MPE多智能体强化学习运行环境的任务简介

    MPE环境是一个时间离散.空间连续的二维环境,UI的界面风格如图所示,它通过控制在二维空间中代表不同含义的粒子,实现对于各类MARL算法的验证.MPE被人们广泛所知是借助于那篇NiPS2017的著名多 ...

  5. 多智能体强化学习:基本概念,通信方式,IPPO,MADDPG

    1,基本概念 1.1,简介 单个RL智能体通过与外界的交互来学习知识,具体过程是根据当前环境的状态,智能体通过策略给出的动作来对环境进行响应,相应地,智能体会得到一个奖励值以反馈动作的好坏程度.RL最 ...

  6. 多智能体强化学习-MADDPG

    论文地址:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments. 代码地址:Multi-Agent Deep ...

  7. 上海交大开源训练框架,支持大规模基于种群多智能体强化学习训练

    机器之心专栏 作者:上海交大和UCL多智能体强化学习研究团队 基于种群的多智能体深度强化学习(PB-MARL)方法在星际争霸.王者荣耀等游戏AI上已经得到成功验证,MALib 则是首个专门面向 PB- ...

  8. 【四】多智能体强化学习(MARL)近年研究概览 {Learning cooperation(协作学习)、Agents modeling agents(智能体建模)}

    相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...

  9. 多智能体强化学习——相关论文

    多智能体深度强化学习研究综述 作者:孙 彧,曹 雷,陈希亮,徐志雄,赖 俊 摘 要:多智能体深度强化学习是机器学习领域的一个新兴的研究热点和应用方向,涵盖众多算法.规则.框架,并广泛应用于自动驾驶.能 ...

最新文章

  1. maven基础概念学习1
  2. 神策 FM:从 IT 到 DT,To B 市场走到了哪一步?
  3. 448. Find All Numbers Disappeared in an Array
  4. 微软输入法2010下载使用-IME2010下载使用
  5. 电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)
  6. 进程间的通信----管道
  7. 分享一下字节面试和华为面试,希望我失败经验能为大家铺铺路
  8. matplotlib柱状图上方显示数据_使用 matplotlib 的两种姿势
  9. QT项目二:局域网聊天工具
  10. Web端轻松实现音视频聊天通话
  11. Vue3-歌词根据时间自动滚动
  12. 110001 《创业的旅途》读后感——坚持梦想,虔诚对待,相信生命的奇迹
  13. 第十四篇、贪吃蛇小游戏的制作
  14. 计算机主板 也叫系统板或母版,电脑主板与CPU常见故障维修
  15. 一英寸芯片大小_Mac mini新款M1芯片详细参数配置规格 尺寸、重量等详细参数
  16. 2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料)
  17. trunk接口(华为)新手必看
  18. 视觉音乐从贝拉吉奥斯喷泉中学到什么
  19. 堆排序|minHeapFixDown的递归和迭代形式
  20. Win10 年度最重大更新:代码、理想与爱

热门文章

  1. Qt在window系统下打印小票——————附带完整代码
  2. c语言实现两分钟倒计时
  3. R语言使用lm函数构建具有交互项的回归模型、使用*号(星号)表示变量的交互(每个变量本身以及变量之间的乘积、包含乘法以及乘法的构成项)
  4. 【SQL注入漏洞-07】堆叠查询靶场实战
  5. 触觉智能分享-SSD2D0X 4G-cat1模块移植(l610)
  6. zephyr笔记 1.2 软件开发环境准备
  7. JAVA儿童思德教育网计算机毕业设计Mybatis+系统+数据库+调试部署
  8. Python学习小组课程-课程大纲与Python开发环境安装
  9. Volley简介(四)
  10. 计算机界面调整,计算机应用系统界面自适应调整