多智能体强化学习QMIX论文笔记

本文首发于https://zhuanlan.zhihu.com/p/327129657,欢迎关注知乎专栏https://www.zhihu.com/column/c_1317610869467709440,不定期更新多智能体强化学习相关的论文

QMIX:Monotonic Value Function Factorisation for Deep Multi-agent Reinforcement Learning

QMIX是多智能体强化学习中比较经典的算法之一,其在DQN类的值函数强化学习的基础上进行改进,从而实现了针对多智能体环境的强化学习算法

多智能体强化学习

多智能体强化学习与单智能体的强化学习最本质的区别就在于多智能体的环境中,每个智能体都会和环境进行交互,造成环境的改变,所以,对于多智能体环境中的一个智能体来说,其外界环境的改变不仅与自己当前的状态和动作有关,更与其他的未知信息(例如其他智能体的动作)有关,所以对于某一个智能体而言,其外界环境是不断变化的,而且这个变化也是没有一定的规律的。这样子的情况下就无法满足强化学习中的马尔可夫性,所以算法的收敛性也就没有了理论的保证。
此外,对于多智能体强化学习而言,每个智能体通常只能得到对于环境的一部分的观察,并不能完全获得环境的状态。
多智能体的奖励r也与单智能体有所不同,在多智能体的任务中,通常情况下,r是整个环境中得到的奖励,而无法得知其中的每个智能体的奖励是多少。
为了解决多智能体强化学习的问题,目前主流的方式有以下几种:

  • IDL(Independent Q-Learning): 不考虑环境的不确定性,直接对每个智能体使用单智能体的强化学习算法,虽然不具备收敛性保证,但是在实际应用中,有时候能够获得不错效果
  • Centralized Learning: 将所有的智能体当作一个整体,状态s为所有智能体状态的拼接,动作也为所有智能体动作的拼接。这样子虽然满足了马尔可夫性,但是动作空间和状态空间随着智能体数量的增加而指数增加,难以处理大量的智能体。此外,由于在现实世界,智能体之间的信息交流是有限的,所以将所有智能体的状态都收集起来再计算得到动作后再执行是难以实时实现的。
  • Centralized Training with Decentralized Excution :在训练过程中使用Centralized的方式,因为在训练过程中(通常在仿真环境下)没有信息通讯的限制,也可以使用全局状态甚至额外的信息,所以使用Centralized的训练方式,也能保证算法的收敛性。在执行过程中,由于每个智能体只能得到自己当前的观测(observation),所以使用decentralized执行的方式。这种方式也是目前多智能体强化学习算法中最主流的方式

Value Decomposition Networks

想要得到较为正确的动作价值函数,就需要使用centralised的方式,来获取总的动作价值函数 Q t o t Q_{tot} Qtot,其s为全体状态,a为联合动作。这样的函数不仅非常难学,而且即使学到了也难以通过这个函数使得每个智能体能够在仅有自己的observation的情况下独立的选择动作。为了解决这个问题,VDN就提出了这种方法–将 Q t o t Q_{tot} Qtot当作所有智能体的动作价值函数 Q a Q_{a} Qa的累加,即:
Q t o t ( τ , u ) = ∑ i = 1 n Q i ( τ i , u i ; θ i ) Q_{tot}(\bm{\tau,u})=\sum_{i=1}^{n}Q_{i}(\tau^i,u^i;\theta^i) Qtot(τ,u)=i=1nQi(τi,ui;θi)
使用这种方式可以在学习到一个 Q t o t Q_{tot} Qtot之后能够很容易的得到每个智能体的 Q a Q_a Qa,从而通过argmax就很容易实现每个智能体的动作的选择。
但是这样子的表示方式限制了 Q t o t Q_{tot} Qtot的表征能力,而且没有办法在训练的时候添加额外的状态信息

QMIX

算法思想

QMIX的核心思想是:如果只是为了能够从 Q t o t Q_{tot} Qtot中提取出去中心化的策略,并不需要像VDN那样强的假设,只需要保证 对于全局的动作价值函数 Q t o t Q_{tot} Qtot进行的argmax操作 与 对于每个 Q a Q_a Qa进行的argmax操作 的结果是相同的就行了。即:
argmin u Q t o t ( τ , u ) = ( argmin u 1 Q 1 ( τ 1 , u 1 ) ⋮ argmin u n Q n ( τ n , u n ) ) \mathop{\text{argmin}}_{u} Q_{tot}(\bm{\tau,u})=\left( \begin{matrix} \mathop{\text{argmin}}_{u^1} Q_{1}(\tau^1,u^1) \\ \vdots \\ \mathop{\text{argmin}}_{u^n} Q_{n}(\tau^n,u^n) \end{matrix} \right) argminuQtot(τ,u)=argminu1Q1(τ1,u1)argminunQn(τn,un)

所以,为了达到这个效果,只需要保证:
∂ Q t o t ∂ Q a ≥ 0 , ∀ a \frac{\partial Q_{tot}}{\partial Q_{a}}\ge0, \forall a QaQtot0,a

具体实现

为了实现 Q t o t Q_{tot} Qtot是由 Q a Q_{a} Qa的非线性的混合,文章作者提出使用一个神经网络来拟合这样的一个非线性的函数,从而提高 Q t o t Q_{tot} Qtot的表达能力。为了满足上面所提到的限制要求,只需要使得网络的参数全部是大于0的就可以了。
多智能体强化学习QMIX论文笔记_第1张图片
通过上图可以看出,QMIX中总共有三个网络,分别是Mixing Network,Agent Network,Hypernetworks。

  • 其中agent network如图c所示,是使用的GRU网络,GRU是一种门控的RNN网络,在partially observable的设定下,智能体使用RNN可以利用他们的所有action-observation的历史信息来表示当前的状态。使用DQN与RNN结合的网络DRQN在单智能体中已经取得了成功的应用。它在每个step的输入为当前时刻智能体的观测 o t a o_t^a ota和上一时刻的动作 u t − 1 a u_{t-1}^a ut1a
  • Hypernetwork用于生成mixing network中的网络权重和偏差,其输入为state inputs(具体是什么论文中没有说明,我理解为可能是上帝视角下整个系统的状态,或者一些其他的有帮助的额外信息),输出是权重(weights)和偏差(bias),其中权重需要大于0,所以采用的激活函数是absolute activation function。偏差没有取值范围的要求,所以采用的是常见的Relu激活函数。关于使用Hypernetwork,作者还特地强调了不直接将系统状态(s)作为一个输入加入到Mixing network中就是为了让这些额外的系统信息s能够以一个非单调的形式对 Q t o t Q_{tot} Qtot产生作用(因为如果是直接作为Mixing network的输入,Mixing network是一个单调的函数,所以相当于对系统信息也加入了限制,可能会影响系统信息的表达)。
  • Mixing network,他的权重和偏置由Hypernetwork生成,他的作用是通过这个网络,将每个智能体的 Q a Q_a Qa以单调的形式混合成一个系统整体的 Q t o t Q_{tot} Qtot,而且还通过增加系统信息来使训练更加稳定。

结果分析

关于QMIX的实验结果,作者先用一个比较简单的tabular的游戏two-step game来证明了QMIX相较于VDN,更容易找到最优解,而VDN则会陷入局部最优解(具体内容有兴趣的读者可以查阅论文第5节)。
作者在星际争霸2的多个任务下也进行了实验测试,如下图所示
多智能体强化学习QMIX论文笔记_第2张图片
通过实验我们可以看出,在智能体需要表现出不同的策略的时候(例如3m中,智能体较少,所以每个智能体都必须要有更为细腻的操作才能够赢得比赛)QMIX与VDN的差距就明显体现出来了,这种差距在智能体本身是异构的时候更加明显例如2s_3z,3s5z等任务中。
此外,作者还进行了消融实验,考察了QMIX中到底是哪些改进使得性能得到提升。消融实验中包含的算法如下:

  • QMIX-NS: Mixing network中的权重和偏置全部由标准的方式来学习,而不依赖于系统状态s。(即在QMIX中删掉hypernetworks,考察的是hypernetwork–系统状态s的非线性表达 的作用)。
  • QMIX-Lin:取消Mixing network,将所有智能体的 Q a Q_a Qa进行累加得到 Q t o t Q_{tot} Qtot,只不过此时需要用系统状态s作为他们累加的权重,相当于是VDN的扩展,考察非线性混合的必要性。
  • VDN-S:将系统状态s经过一层神经网络之后的值(相当于QMIX中hypernetwork生成的bias)与所有的 Q a Q_a Qa累加起来得到 Q t o t Q_{tot} Qtot,考察在有s的情况下,非线性混合的重要性。
    实验结果如下图所示
    多智能体强化学习QMIX论文笔记_第3张图片
  1. 根据图片我们可以看出,QMIX成功的最主要的因素是因为添加了系统状态s,因为四个算法中唯一一个没有s的QMIX-NS在所有的任务中表现都是最差的。
  2. 非线性混合的作用在所有智能体都是同质(homogeneous)的时候效果不大,如图(a),但是在智能体异构的时候就会相较于线性的混合有较大的提升

你可能感兴趣的:(多智能体强化学习,深度学习,强化学习)