相关文章:

常见多智能体强化学习仿真环境介绍【一】{推荐收藏,真的牛}

多智能体强化学习算法【一】【MAPPO、MADDPG、QMIX】

多智能体强化学习算法【二】【MADDPG、QMIX、MAPPO】

多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】

1. MADDPG

1.1 MADDPG简介

本章介绍OpenAI 2017发表在NIPS 上的一篇文章,《Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments》。主要是将AC算法进行了一系列改进,使其能够适用于传统RL算法无法处理的复杂多智能体场景。

传统RL算法面临的一个主要问题是由于每个智能体都是在不断学习改进其策略,因此从每一个智能体的角度看,环境是一个动态不稳定的,这不符合传统RL收敛条件。并且在一定程度上,无法通过仅仅改变智能体自身的策略来适应动态不稳定的环境。由于环境的不稳定,将无法直接使用之前的经验回放等DQN的关键技巧。policy gradient算法会由于智能体数量的变多使得本就有的方差大的问题加剧。

MADDPG算法具有以下三点特征: 1. 通过学习得到的最优策略,在应用时只利用局部信息就能给出最优动作。 2. 不需要知道环境的动力学模型以及特殊的通信需求。 3. 该算法不仅能用于合作环境,也能用于竞争环境。

MADDPG算法具有以下三点技巧:

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

其实MADDPG本质上还是一个DPG算法,针对每个智能体训练一个需要全局信息的Critic以及一个需要局部信息的Actor,并且允许每个智能体有自己的奖励函数(reward function),因此可以用于合作任务或对抗任务。并且由于脱胎于DPG算法,因此动作空间可以是连续的。

1) DQN

DQN的思想就是设计一个不断逼近真实的函数。其中主要用到了两个技巧:1. 经验回放。2. 目标网络。该技巧主要用来打破数据之间联系,因为神经网络对数据的假设是独立同分布,而MDP过程的数据前后有关联。打破数据的联系可以更好地拟合函数。其代价函数为:

其中表示目标网络,其参数更新与不同步(滞后)。具体可以参看值函数强化学习-DQN、DDQN和Dueling DQN算法公式推导分析

2)SPG(stochastic policy gradient)

SPG算法不采用拟合Q函数的方式,而是直接优化累积回报来获得使回报最大的策略。假定参数化的策略为,累积回报为。为了使最大化,直接对策略参数求导得到策略更新梯度:

AC算法也可以由此推出,如果按照DQN的方法拟合一个函数,则这个参数化的函数被称为Critic,被称为Actor。具体可以参看,随机策略梯度算法(stochastic-policy-gradient)

3) DPG

上述两种算法都是针对随机策略,  是一个在状态s对于各个动作a的条件概率分布。DPG针对确定性策略,  是一个状态空间到动作空间的映射。其思想与SPG相同,得到策略梯度公式为

DPG可以是使用AC的方法来估计一个Q函数,DDPG就是借用了DQN经验回放与目标网络的技巧,具体可以参看,确定性策略强化学习-DPG&DDPG算法推导及分析

1.2 MADDPG原理设计技巧

1.2.1 多智能体AC设计

MADDPG集中式的学习,分布式的应用。因此我们允许使用一些额外的信息(全局信息)进行学习,只要在应用的时候使用局部信息进行决策就行。这点就是Q-learning的一个不足之处,Q-learning在学习与应用时必须采用相同的信息。所以这里MADDPG对传统的AC算法进行了一个改进,Critic扩展为可以利用其他智能体的策略进行学习,这点的进一步改进就是每个智能体对其他智能体的策略进行一个函数逼近。

我们用表示n个智能体策略的参数,  表示n个智能体的策略。针对第i个智能体的累积期望奖励  ,针对随机策略,求策略梯度为:

其中表示第i个智能体的观测,  表示观测向量,即状态。  表示第i个智能体集中式的状态-动作函数。由于是每个智能体独立学习自己的函数,因此每个智能体可以有不同的奖励函数(reward function),因此可以完成合作或竞争任务。

上述为随机策略梯度算法,下面我们拓展到确定性策略  ,梯度公式为

由以上两个梯度公式可以看出该算法与SPG与DPG十分类似,就像是将单体直接扩展到多体。但其实是一个非常厉害的技巧,针对每个智能体建立值函数,极大的解决了传统RL算法在Multi-agent领域的不足。D是一个经验存储(experience replay buffer),元素组成为  。集中式的critic的更新方法借鉴了DQN中TD与目标网络思想

表示目标网络,  为目标策略具有滞后更新的参数  。其他智能体的策略可以采用拟合逼近的方式得到,而不需要通信交互。

如上可以看出critic借用了全局信息学习,actor只是用了局部观测信息。MADDPG的一个启发就是,如果我们知道所有的智能体的动作,那么环境就是稳定的,就算策略在不断更新环境也是恒定的,因为模型动力学使稳定的 :

1.2.2 估计其他智能体策略

在(1)式中,我们用到了其他智能体的策略,这需要不断的通信来获取,但是也可以放宽这个条件,通过对其他智能体的策略进行估计来实现。每个智能体维护n-1个策略逼近函数表示第i个智能体对第j个智能体策略的函数逼近。其逼近代价为对数代价函数,并且加上策略的熵,其代价函数可以写为:

只要最小化上述代价函数,就能得到其他智能体策略的逼近。因此可以替换(1)式中的y。

在更新之前,利用经验回放的一个采样batch更新  。

1.2.3. 策略集合优化(policies ensemble)

这个技巧也是本文的一个亮点。多智能体强化学习一个顽固的问题是由于每个智能体的策略都在更新迭代导致环境针对一个特定的智能体是动态不稳定的。这种情况在竞争任务下尤其严重,经常会出现一个智能体针对其竞争对手过拟合出一个强策略。但是这个强策略是非常脆弱的,也是我们希望得到的,因为随着竞争对手策略的更新改变,这个强策略很难去适应新的对手策略。

为了能更好的应对上述情况,MADDPG提出了一种策略集合的思想,第i个智能体的策略  由一个具有K个子策略的集合构成,在每一个训练episode中只是用一个子策略  (简写为  )。对每一个智能体,我们最大化其策略集合的整体奖励  。

并且我们为每一个子策略k构建一个记忆存储  。我们优化策略集合的整体效果,因此针对每一个子策略的更新梯度为:

以上就是MADDPG所有的内容,仿真效果也很好的证明了MADDPG在多智能体系统中的有效性。 MADDPG是OpenAI给的仿真代码。

多智能体强化学习算法【二】【MADDPG、QMIX、MAPPO】的更多相关文章

  1. 强化学习之二:Q-Learning原理及表与神经网络的实现(Q-Learning with Tables and Neural Networks)

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译.(This article is my personal translation for the tutor ...

  2. 强化学习(十二) Dueling DQN

    在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...

  3. 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)

    一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25  16:29:19   对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...

  4. 强化学习算法DQN

    1 DQN的引入 由于q_learning算法是一直更新一张q_table,在场景复杂的情况下,q_table就会大到内存处理的极限,而且在当时深度学习的火热,有人就会想到能不能将从深度学习中借鉴方法 ...

  5. 强化学习(二)马尔科夫决策过程(MDP)

    在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...

  6. 【转载】 强化学习(二)马尔科夫决策过程(MDP)

    原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...

  7. 强化学习算法Policy Gradient

    1 算法的优缺点 1.1 优点 在DQN算法中,神经网络输出的是动作的q值,这对于一个agent拥有少数的离散的动作还是可以的.但是如果某个agent的动作是连续的,这无疑对DQN算法是一个巨大的挑战 ...

  8. c的详细学习(10)结构体与共用体的学习(二)

    在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而 ...

  9. ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文

    https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...

  10. 强化学习(十七) 基于模型的强化学习与Dyna算法框架

    在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...

随机推荐

  1. C# async await 异步执行方法封装 替代 BackgroundWorker

    BackWork代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...

  2. OS | 进程和线程基础知识全家桶图文详解✨

    前言 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了. 城里人有城里人的规矩,城中有个专门管辖你们的城管(操作系统),人 ...

  3. Educational Codeforces Round 92 (Rated for Div. 2) A~C

    原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处. 最近写学习了一下网络爬虫,但昨天晚上的CF让人感觉实力明显退步,又滚回来刷题了QAQ... 比赛 ...

  4. Codeforces Round #689 (Div. 2, based on Zed Code Competition) 个人题解

    1461A. String Generation void solve() { int n, k; cin >> n >> k; for (int i = 1; i <= ...

  5. Excel的列数如何用数字表示?

      本文介绍在Excel表格文件中,用数字而非字母来表示列号的方法.   在日常生活.工作中,我们不免经常使用各种.各类Excel表格文件:而在Excel表格文件中,微软Office是默认用数字表示行 ...

  6. kafka集群四、权限增加ACL

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...

  7. C#设计模式01——单例模式的三种写法

    第一种 //在方法里new ,这里使用 双if-lock public class SingleFirst { private static SingleFirst _SingleFirst; pri ...

  8. wxpython窗体之间传递参数

    如何界面存在frame1与frame2,通过frame1打开页面frame2,并将frame2的值传递给frame1 可以使用回调函数传值参考具体代码如下: # -*- coding: utf-8 - ...

  9. Liunx快捷命令(别名)与快捷方式(软/硬链接)

    一.快捷命令(别名)-临时生效1.命令:alias 别名='原命令' 2.举例:给检查防火墙的命令设置别名 [root@localhost ~]# alias fhq='firewall-cmd -- ...

  10. 《DREEAM Guiding Attention with Evidence for Improving Document-Level Relation Extraction》阅读笔记

    代码   原文地址   预备知识: 1.什么是K-L散度(Kullback-Leibler Divergence)? K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵.在概率学和统计 ...