文章目录

  • IQL
  • VDN
  • QMIX
  • QTRAN
    • QTRAN直观理解
    • 可分解值函数的充分条件
    • 可分解值函数的必要条件
  • 参考

  一个完全合作式的多智能体任务(我们有n个智能体,这n个智能体需要相互配合以获取最大奖励)可以描述为去中心化的部分可观测马尔可夫决策模型(Dec-POMDP),通常用一个元组GGG来表示:

G=⟨S,U,P,r,Z,O,n,γ⟩G=\langle S, U, P, r, Z, O, n, \gamma\rangleG=⟨S,U,P,r,Z,O,n,γ⟩

  其中s∈Ss \in Ss∈S表示环境的真实状态信息。在每一个时间步,对于每个智能体a∈A≡{1,…,n}a \in A \equiv\{1, \ldots, n\}a∈A≡{1,…,n}都需要去选择一个动作ua∈Uu^{a} \in Uua∈U去组成一个联合动作u∈U≡Un\mathbf{u} \in \mathbf{U} \equiv U^{n}u∈U≡Un,再将这个联合动作给到环境中去进行状态转移:P(s′∣s,u):S×U×S→[0,1]P\left(s^{\prime} \mid s, \mathbf{u}\right): S \times \mathbf{U} \times S \rightarrow[0,1]P(s′∣s,u):S×U×S→[0,1]。之后,所有的智能体都会收到一个相同的奖励:r(s,u):S×U→Rr(s, \mathbf{u}): S \times \mathbf{U} \rightarrow \mathbb{R}r(s,u):S×U→R。与单智能体一样γ\gammaγ表示折扣因子。

  对于每个单智能体aaa来说,它接收的是一个独立的部分可观测的状态z∈Zz \in Zz∈Z,不同的智能体aaa具备不同的观测,但是所有的观测都来自环境的真实状态信息,所以可以用函数表示为:O(s,a):S×A→ZO(s, a): S \times A \rightarrow ZO(s,a):S×A→Z。对于每个智能体aaa它都有一个动作观测历史τa∈T≡(Z×U)∗\tau^{a} \in T \equiv(Z \times U)^{*}τa∈T≡(Z×U)∗,基于这个动作-观测的历史来构建随机策略函数 πa(ua∣τa):T×U→[0,1]\pi^{a}\left(u^{a} \mid \tau^{a}\right): T \times U \rightarrow[0,1]πa(ua∣τa):T×U→[0,1]。联合动作策略π\piπ是基于状态信息sts_{t}st​构建的联合动作值函数Qπ(st,ut)=Est+1:∞,ut+1:∞[Rt∣st,ut]Q^{\pi}\left(s_{t}, \mathbf{u}_{t}\right)=\mathbb{E}_{s_{t+1: \infty}, \mathbf{u}_{t+1: \infty}}\left[R_{t} \mid s_{t}, \mathbf{u}_{t}\right]Qπ(st​,ut​)=Est+1:∞​,ut+1:∞​​[Rt​∣st​,ut​],其中Rt=∑i=0∞γirt+iR_{t}=\sum_{i=0}^{\infty} \gamma^{i} r_{t+i}Rt​=∑i=0∞​γirt+i​是折扣回报。

IQL

  • IQL论文全称为:MultiAgent Cooperation and Competition with Deep Reinforcement Learning

  多智能体环境中,状态转移和奖励函数都是受到所有智能体的联合动作的影响的。对于多智能体中的某个智能体来说,它的动作值函数是依据其它智能体采取什么动作才能确定的。因此对于一个单智能体来说它需要去了解其它智能体的学习情况。

  这篇文章的贡献可能就是在于将DQN扩展到分散式的多智能体强化学习环境中吧,使其能够去处理高维复杂的环境。

  作者采用的环境是雅塔丽的Pong环境。作者基于不同的奖励函数设计来实现不同的多智能体环境。在竞争环境下,智能体期望去获取比对方更多的奖励。在合作的环境下,智能体期望去寻找到一个最优的策略去保持上图中的白色小球一直在游戏中存在下去。

  为了测试分散式DQN算法的性能,作者只通过奖励函数的设计就构建出来了不同的多智能体范式环境:

  1. 完全竞争式:胜利方奖励+1,失败方奖励-1,是一个零和博弈。
  2. 完全合作式:在这个环境设定下,我们期望这个白色小球在环境中存在的时间越长越好,如果一方失去了球,则两方的奖励都是-1
  3. 非完全竞争式:在完全竞争和完全合作式中,失去小球的一方奖励都式-1,对于胜利一方,作者设置一个系数ρ∈[−1,1]\rho \in [-1, 1]ρ∈[−1,1]来看参数的改变对实验结果的影响。

  IQL(Independent Q-Learning)算法中将其余智能体直接看作环境的一部分,也就是对于每个智能体aaa都是在解决一个单智能体任务,很显然,由于环境中存在智能体,因此环境是一个非稳态的,这样就无法保证收敛性了,并且智能体会很容易陷入无止境的探索中,但是在工程实践上,效果还是比较可以的。

  独立的智能体网络结构可以参考下图所示:

VDN

  • VDN论文全称为:Value-Decomposition Networks For Cooperative Multi-Agent Learning

  在合作式多智能体强化学习问题中,每个智能体基于自己的局部观测做出反应来选择动作,来最大化团队奖励。对于一些简单的合作式多智能体问题,可以用中心式(centralized)的方法来解决,将状态空间和动作空间做一个拼接,从而将问题转换成一个单智能体的问题。这会使得某些智能体在其中滥竽充数。

  另一种极端方式式训练独立的智能体,每个智能体各玩各的,也不做通信,也不做配合,直接暴力出奇迹。这种方式对于每个智能体来说,其它智能体都是环境的一部分,那么这个环境是一个非平稳态的(non-stationary),理论上的收敛性是没法证明的。还有一些工作在对每个智能体都基于其观测设计一个奖励函数,而不是都用一个团队的团队奖励,这种方式的难点在于奖励函数的设计,因为设计的不好很容易使其陷入局部最优。

  VDN中提出一种通过反向传播将团队的奖励信号分解到各个智能体上的这样一种方式。其网络结构如下图所示:

  先看上图中的图1,画的是两个独立的智能体,因为对每个智能体来说,观测都是部分可观测的,所以QQQ函数是被定义成基于观测历史数据所得到的Q(ht,at)Q\left(h_{t}, a_{t}\right)Q(ht​,at​),实际操作的时候直接用RNN来做就可以。图2说的就是联合动作值函数由各个智能体的值函数累加得到的:

Q((h1,h2,…,hd),(a1,a2,…,ad))≈∑i=1dQ~i(hi,ai)Q\left(\left(h^{1}, h^{2}, \ldots, h^{d}\right),\left(a^{1}, a^{2}, \ldots, a^{d}\right)\right) \approx \sum_{i=1}^{d} \tilde{Q}_{i}\left(h^{i}, a^{i}\right)Q((h1,h2,…,hd),(a1,a2,…,ad))≈i=1∑d​Q~​i​(hi,ai)

  其中ddd表示ddd个智能体,Q~i\tilde{Q}_{i}Q~​i​由每个智能体的局部观测信息得到,Q~i\tilde{Q}_{i}Q~​i​是通过联合奖励信号反向传播到各个智能体的Q~i\tilde{Q}_{i}Q~​i​上进行更新的。这样各个智能体通过贪婪策略选取动作的话,也就会使得联合动作值函数最大。

  总结来说:值分解网络旨在学习一个联合动作值函数Qtot(τ,u)Q_{t o t}(\tau, \mathbf{u})Qtot​(τ,u),其中τ∈T≡Tn\tau \in \mathbf{T} \equiv \mathcal{T}^{n}τ∈T≡Tn是一个联合动作-观测的历史轨迹,u\mathbf{u}u是一个联合动作。它是由每个智能体aaa独立计算其值函数Qa(τa,ua;θa)Q_{a}\left(\tau^{a}, u^{a} ; \theta^{a}\right)Qa​(τa,ua;θa),之后累加求和得到的。其关系如下所示:

Qtot(τ,u)=∑i=1nQi(τi,ui;θi)Q_{t o t}(\tau, \mathbf{u})=\sum_{i=1}^{n} Q_{i}\left(\tau^{i}, u^{i} ; \theta^{i}\right)Qtot​(τ,u)=i=1∑n​Qi​(τi,ui;θi)

  严格意义上说Qa(τa,ua;θa)Q_{a}\left(\tau^{a}, u^{a} ; \theta^{a}\right)Qa​(τa,ua;θa)称作值函数可能不太准确,因为它并没有严格估计期望回报。

  值分解的独立的智能体网络结构可以参考下图所示:

  如果在此基础上在加上底层的通信的话可以表示为如下形式(其实就是将各个智能体的观测给到所有的智能体):

  如果是在高层做通信的话可以得到如下形式:

  如果是在底层加上高层上都做通信的话可以得到如下形式:

  如果是集中式的结构的话,可以表示为如下形式:

QMIX

  QMIX论文全称为:QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning

  在之前的值分解网络中,拿到了联合动作的QQQ值之后,我们就可以直接取能够获取最大的Qtot(τ,u)Q_{t o t}(\tau, \mathbf{u})Qtot​(τ,u)所对应的联合动作。这种方式就能够实现集中式学习,但是得到分布式策略。并且对全局值函数做argmax与对单个智能体地值函数做argmax能够得到相同的结果:

argmax⁡uQtot(τ,u)=(argmax⁡u1Q1(τ1,u1)⋮argmax⁡unQn(τn,un))(1)\underset{\mathbf{u}}{\operatorname{argmax}} Q_{t o t}(\tau, \mathbf{u})=\left(\begin{array}{c}\operatorname{argmax}_{u^{1}} Q_{1}\left(\tau^{1}, u^{1}\right) \\ \vdots \\ \operatorname{argmax}_{u^{n}} Q_{n}\left(\tau^{n}, u^{n}\right)\end{array}\right) \text{(1)}uargmax​Qtot​(τ,u)=⎝⎜⎛​argmaxu1​Q1​(τ1,u1)⋮argmaxun​Qn​(τn,un)​⎠⎟⎞​(1)

  这样的话,每个智能体aaa都可以基于QaQ_{a}Qa​以贪婪策略选择动作。由于每个子智能体都采用贪婪策略,因此这个算法必定会是off-policy的算法,这一点是很容易实现的,并且样本的利用率会比较高。在VDN中采用的是线性加权,因此上述等式会成立,而如果是采用一个神经网络来学习融合各个智能体的QQQ函数的话,上述等式就未必会成立了。

  在QMIX中也是需要一个联合动作值函数的,但是与值分解网络的不同之处在于,这个联合动作值函数并不是简单地由各个智能体的值函数线性相加得到的。为了保证值函数的单调性来使得上述等式(1)能够成立,作者对联合动作值函数QtotQ_{t o t}Qtot​和单个智能体动作值函数QaQ_{a}Qa​之间做了一个约束:

∂Qtot∂Qa≥0,∀a∈A∣(2)\frac{\partial Q_{t o t}}{\partial Q_{a}} \geq 0, \forall a \in A | \text{(2)}∂Qa​∂Qtot​​≥0,∀a∈A∣(2)

  设计思想如上所示,具体的网络结构如下图所示:

  上述这个复杂的网络结构可以拆分为如下三部分:

  1. agent networks: 对于每个智能体都要学一个独立的值函数Qa(τa,ua)Q_{a}\left(\tau^{a}, u^{a}\right)Qa​(τa,ua),单个智能体的网络结构采用DRQN的网络结构,在每个时间步,接收当前的独立观测OtaO_{t}^{a}Ota​和上一个动作μt−1a\mu_{t-1}^{a}μt−1a​,如上图(c)所示。
  2. mixing network: 是一个全连接网络,接收每个智能体的输出Qn(τn,utn)Q_{n}\left(\tau^{n}, u_{t}^{n}\right)Qn​(τn,utn​)作为输入,输出联合动作值函数Qtot(τ,u)Q_{t o t}(\boldsymbol{\tau}, \boldsymbol{u})Qtot​(τ,u),对每个子智能体的动作值函数做非线性映射,并且要保证单调性约束。想要保证公式(2)的单调性约束的话,我们只需要保证mixing network的权重非负即可。
  3. hypernetworks: hypernetworks网络去产生mixing network的权重,超参数网络输入状态sss,输出Mixing网络的每一层的超参数向量,激活函数来使得输出非负,对于Mixing网络参数的偏置并没有非负的要求。

  QMIX的训练方式是端到端的训练:

L(θ)=∑i=1b[(yitot−Qtot(τ,u,s;θ))2]\mathcal{L}(\theta)=\sum_{i=1}^{b}\left[\left(y_{i}^{t o t}-Q_{t o t}(\tau, \mathbf{u}, s ; \theta)\right)^{2}\right]L(θ)=i=1∑b​[(yitot​−Qtot​(τ,u,s;θ))2]

  其中bbb表示从经验池中采样的样本数量,ytot =r+γmax⁡u′Qtot(τ′,u′,s′;θ−)y^{\text {tot }}=r+\gamma \max _{\mathbf{u}^{\prime}} Q_{t o t}\left(\tau^{\prime}, \mathbf{u}^{\prime}, s^{\prime} ; \theta^{-}\right)ytot =r+γmaxu′​Qtot​(τ′,u′,s′;θ−),θ−\theta^{-}θ−为目标网络参数。由于公式(1)的存在,对QtotQ_{t o t}Qtot​取argmax的话,就是与智能体数量呈线性增长关系了。

  上述算法中,单纯地去考虑前向传播的话,智能体之间其实是没有配合的。仅仅是取每个智能体能够获得的最大的值函数。因为对于单个智能体来说,它的最优动作是基于队友智能体的动作下得到的,但是由于整个网络是端到端进行训练的,所以感觉问题也不大。

  还有就是在基于单个智能体的动作值函数下得到联合动作值函数的过程中,也就是在Mixing网络中有考虑状态sts_{t}st​,所以相当于是有考虑全局的信息下去得到一个联合动作值函数。

QTRAN

  • QTRAN论文全称为:QTRAN: Learning to Factorize with Transformation for Cooperative Multi-Agent Reinforcement learning
  • 代码:https://github.com/Sonkyunghwan/QTRAN

  之前说的VDNQMIX都是值分解领域的两大标杆性文章,并且在一般的工程项目实战上VDNQMIX的效果就还是比较好的,不过是在论文中的效果有被弱化,更具体地可以参考看一下这篇文章:RIIT: Rethinking the Importance of Implementation Tricks in Multi-Agent Reinforcement Learning。但是这篇QTRAN从理论层面还是值得分析一下的:

  值分解地文章其实就是在保证联合动作取argmax的时候能够是对各个智能体的值函数取argmaxVDN中采用的是线性求和的方式,QMIX中采用的是保证单调性。对于一些任务,比如像联合动作的最优就是各个智能体的单独的最优的值函数,这样的问题可以采用这种方式,对于不是这类型的问题的话,这种限制就太强了。QTRAN提出了一种新的值分解的算法。

  不管这个值分解如何分解,其实它们都需要取保证一个东西:

argmax⁡uQtot(τ,u)=(argmax⁡u1Q1(τ1,u1)⋮argmax⁡unQn(τn,un))(1)\underset{\mathbf{u}}{\operatorname{argmax}} Q_{t o t}(\tau, \mathbf{u})=\left(\begin{array}{c}\operatorname{argmax}_{u^{1}} Q_{1}\left(\tau^{1}, u^{1}\right) \\ \vdots \\ \operatorname{argmax}_{u^{n}} Q_{n}\left(\tau^{n}, u^{n}\right)\end{array}\right) \text{(1)}uargmax​Qtot​(τ,u)=⎝⎜⎛​argmaxu1​Q1​(τ1,u1)⋮argmaxun​Qn​(τn,un)​⎠⎟⎞​(1)

  VDNQMIX中的线性求和和保证单调性都能够去保证上述条件的成立,也就是给了两个充分条件,但不是必要条件。为了之后更好的理论分析,在QTRAN中对上述这个东西做了一个定义IGM (Individual-Global-Max):

  • IGM定义:对于一个联合动作值函数 Qjt:TN×UN↦RQ_{\mathrm{jt}}: \mathcal{T}^{N} \times \mathcal{U}^{N} \mapsto \mathbb{R}Qjt​:TN×UN↦R,其中τ∈TN\boldsymbol{\tau} \in \mathcal{T}^{N}τ∈TN是一个联合动作观测的历史轨迹。如果对于独立的智能体存在一个动作值函数[Qi:T×U↦R]i=1N\left[Q_{i}: \mathcal{T} \times \mathcal{U} \mapsto \mathbb{R}\right]_{i=1}^{N}[Qi​:T×U↦R]i=1N​,满足如下关系式的话:

arg⁡max⁡uQjt(τ,u)=(arg⁡max⁡u1Q1(τ1,u1)⋮arg⁡max⁡uNQN(τn,uN))(2)\arg \max _{\boldsymbol{u}} Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})=\left(\begin{array}{c}\arg \max _{u_{1}} Q_{1}\left(\tau_{1}, u_{1}\right) \\ \vdots \\ \arg \max _{u_{N}} Q_{N}\left(\tau_{n}, u_{N}\right)\end{array}\right) \text{(2)}argumax​Qjt​(τ,u)=⎝⎜⎛​argmaxu1​​Q1​(τ1​,u1​)⋮argmaxuN​​QN​(τn​,uN​)​⎠⎟⎞​(2)

  我们就说在轨迹τ\boldsymbol{\tau}τ下,[Qi]\left[Q_{i}\right][Qi​]对QjtQ_{\mathrm{jt}}Qjt​满足IGM条件。Qjt(τ,u)Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})Qjt​(τ,u)是能够被[Qi(τi,ui)]\left[Q_{i}\left(\tau_{i}, u_{i}\right)\right][Qi​(τi​,ui​)]分解的,[Qi]\left[Q_{i}\right][Qi​]是QjtQ_{\mathrm{jt}}Qjt​的分解因子。

  QTRAN中将原始的[Qi]\left[Q_{i}\right][Qi​]映射成一个新的Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​

QTRAN直观理解

  在VDNQMIX中是将QjtQ_{\mathrm{jt}}Qjt​通过累加求和和保证单调性的方式来分解的,作者这里提出一种更加鲁棒的分解方式,将原始的QjtQ_{\mathrm{jt}}Qjt​映射成Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​,通过Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​去分解值函数到各个子智能体上,来保证学到的Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​与真实的动作值函数Q∗Q^{*}Q∗非常接近。这样在学习真实的动作值函数的时候,没有像VDNQMIX那样对其加上一些累加求和和保证单调性的限制,所以它能学地更好。

  但是由于部分可观测地限制,这个Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​是没有办法用来进行具体地决策的,所以我们需要去找到QjtQ_{\mathrm{jt}}Qjt​、Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​和[Qi]\left[Q_{i}\right][Qi​]三者之间的关系。

可分解值函数的充分条件

  由于不提供累加求和和单调性来保证可分解,QTRAN提出了一个满足IGM定义的充分条件:当动作值函数Qjt(τ,u)Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})Qjt​(τ,u)和[Qi(τi,ui)]\left[Q_{i}\left(\tau_{i}, u_{i}\right)\right][Qi​(τi​,ui​)]满足下面这个关系式时,我们认为它是可分解的:

∑i=1NQi(τi,ui)−Qjt(τ,u)+Vjt(τ)={0u=u‾≥0u≠u‾\sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right)-Q_{\mathrm{jt}}(\tau, \boldsymbol{u})+V_{\mathrm{jt}}(\boldsymbol{\tau})=\left\{\begin{array}{ll}0 & \boldsymbol{u}=\overline{\boldsymbol{u}} \\ \geq 0 & \boldsymbol{u} \neq \overline{\boldsymbol{u}}\end{array}\right.i=1∑N​Qi​(τi​,ui​)−Qjt​(τ,u)+Vjt​(τ)={0≥0​u=uu​=u​

  其中Vjt(τ)=max⁡uQjt(τ,u)−∑i=1NQi(τi,uˉi)V_{\mathrm{jt}}(\tau)=\max _{\boldsymbol{u}} Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})-\sum_{i=1}^{N} Q_{i}\left(\tau_{i}, \bar{u}_{i}\right)Vjt​(τ)=maxu​Qjt​(τ,u)−∑i=1N​Qi​(τi​,uˉi​)。

  • 证明:想要通过上述条件证明出满足IGM条件,也就是arg⁡max⁡uQjt(τ,u)=u‾\arg \max _{\boldsymbol{u}} Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})=\overline{\boldsymbol{u}}argmaxu​Qjt​(τ,u)=u时(其中uˉi=arg⁡max⁡uiQi(τi,ui)\bar{u}_{i}=\arg \max _{u_{i}} Q_{i}\left(\tau_{i}, u_{i}\right)uˉi​=argmaxui​​Qi​(τi​,ui​))才能取到全局最大的动作值函数。

  当u=u‾\boldsymbol{u}=\overline{\boldsymbol{u}}u=u时,由充分条件第一条可以得出:Qjt(τ,u‾)=∑i=1NQi(τi,uˉi)+Vjt(τ)Q_{\mathrm{jt}}(\boldsymbol{\tau}, \overline{\boldsymbol{u}})=\sum_{i=1}^{N} Q_{i}\left(\tau_{i}, \bar{u}_{i}\right)+V_{\mathrm{jt}}(\boldsymbol{\tau})Qjt​(τ,u)=∑i=1N​Qi​(τi​,uˉi​)+Vjt​(τ)。说明在智能体动作最优的情况下,能够保证全局的也是最优的。

  当u≠u‾\boldsymbol{u} \neq \overline{\boldsymbol{u}}u​=u时,Vjt≥Qjt(τ,u)−∑i=1NQi(τi,ui)V_{\mathrm{jt}} \geq Q_{\mathrm{jt}}(\tau, \boldsymbol{u}) - \sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right)Vjt​≥Qjt​(τ,u)−∑i=1N​Qi​(τi​,ui​),又因为:

Qjt(τ,u‾)=∑i=1NQi(τi,uˉi)+Vjt(τ)≥∑i=1NQi(τi,ui)+Vjt(τ)≥∑i=1NQi(τi,ui)+Qjt(τ,u)−∑i=1NQi(τi,ui)≥Qjt(τ,u).\begin{aligned} Q_{\mathrm{jt}}(\boldsymbol{\tau}, \overline{\boldsymbol{u}}) &=\sum_{i=1}^{N} Q_{i}\left(\tau_{i}, \bar{u}_{i}\right)+V_{\mathrm{jt}}(\boldsymbol{\tau}) \\ & \geq \sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right)+V_{\mathrm{jt}}(\boldsymbol{\tau}) \\ & \geq \sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right)+Q_{\mathrm{jt}}(\tau, \boldsymbol{u}) - \sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right) \\ & \geq Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u}) . \end{aligned} Qjt​(τ,u)​=i=1∑N​Qi​(τi​,uˉi​)+Vjt​(τ)≥i=1∑N​Qi​(τi​,ui​)+Vjt​(τ)≥i=1∑N​Qi​(τi​,ui​)+Qjt​(τ,u)−i=1∑N​Qi​(τi​,ui​)≥Qjt​(τ,u).​

  说明只有在各个智能体都采取最优动作的时候才能获得联合动作值函数最大。IGM条件得证。

可分解值函数的必要条件

  必要条件说的是,当满足IGM条件时,能够把充分条件给推出来。作者在论文中说到,存在一个仿射函数ϕ(Q)=A⋅Q+B\phi(\boldsymbol{Q})=A \cdot \boldsymbol{Q}+Bϕ(Q)=A⋅Q+B对QQQ进行一个映射,其中[aii]∈R+N×N\left[a_{i i}\right] \in \mathbb{R}_{+}^{N \times N}[aii​]∈R+N×N​为一个对角矩阵,并且aii>0a_{i i}>0aii​>0。看到这我人都傻了,这不就是QMIX吗,换了个马甲我就不认识你啦。。。其实不是,还多个一个BBB,B=[bi]∈RNB=\left[b_{i}\right] \in \mathbb{R}^{N}B=[bi​]∈RN。

  作者将QiQ_{i}Qi​进行了一个缩放,aiiQi+bia_{i i} Q_{i}+b_{i}aii​Qi​+bi​。然后定义:

Qjt′(τ,u):=∑i=1NQi(τi,ui)Q_{\mathrm{jt}}^{\prime}(\boldsymbol{\tau}, \boldsymbol{u}):=\sum_{i=1}^{N} Q_{i}\left(\tau_{i}, u_{i}\right)Qjt′​(τ,u):=i=1∑N​Qi​(τi​,ui​)

  这个就是VDN了,不同之处就是多了一个修正项BBB。

  其网络结构如下:

  网络结构中主要有三部分:

  1. 独立的动作值网络:fq:(τi,ui)↦Qif_{\mathrm{q}}:\left(\tau_{i}, u_{i}\right) \mapsto Q_{i}fq​:(τi​,ui​)↦Qi​。对于每个动作值网络,输入是他自己的动作观测历史τi\tau_{i}τi​,输出动作值函数Qi(τi,⋅)Q_{i}\left(\tau_{i}, \cdot\right)Qi​(τi​,⋅)。Qjt′Q_{\mathrm{jt}}^{\prime}Qjt′​各个子智能体的动作值函数累加得到。
  2. 联合动作值网络:fr:(τ,u)↦Qjtf_{\mathrm{r}}:(\tau, \boldsymbol{u}) \mapsto Q_{\mathrm{jt}}fr​:(τ,u)↦Qjt​。如上图所示,网络的前面几层参数是共享的,用所有的独立智能体的动作值函数向量来采样样本,更新联合动作值函数。
  3. 状态值网络:fv:τ↦Vjtf_{\mathrm{v}}: \tau \mapsto V_{\mathrm{jt}}fv​:τ↦Vjt​。状态值函数类似dueling网络,并且这里可以引入全局的状态信息,它是独立于动作轨迹的,但是可以用来辅助动作值函数的训练。

  此时损失函数可以表达成如下形式:

Ltd(;θ)=(Qjt(τ,u)−ydqn(r,τ′;θ−))2Lopt(;θ)=(Qjt′(τ,u‾)−Q^jt(τ,u‾)+Vjt(τ))2Lnopt(;θ)=(min⁡[Qjt′(τ,u)−Q^jt(τ,u)+Vjt(τ),0])2\begin{aligned} L_{\mathrm{td}}(; \boldsymbol{\theta}) &=\left(Q_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})-y^{\mathrm{dqn}}\left(r, \boldsymbol{\tau}^{\prime} ; \boldsymbol{\theta}^{-}\right)\right)^{2} \\ L_{\mathrm{opt}}(; \boldsymbol{\theta}) &=\left(Q_{\mathrm{jt}}^{\prime}(\boldsymbol{\tau}, \overline{\boldsymbol{u}})-\hat{Q}_{\mathrm{jt}}(\boldsymbol{\tau}, \overline{\boldsymbol{u}})+V_{\mathrm{jt}}(\boldsymbol{\tau})\right)^{2} \\ L_{\mathrm{nopt}}(; \boldsymbol{\theta}) &=\left(\min \left[Q_{\mathrm{jt}}^{\prime}(\boldsymbol{\tau}, \boldsymbol{u})-\hat{Q}_{\mathrm{jt}}(\boldsymbol{\tau}, \boldsymbol{u})+V_{\mathrm{jt}}(\boldsymbol{\tau}), 0\right]\right)^{2} \end{aligned} Ltd​(;θ)Lopt​(;θ)Lnopt​(;θ)​=(Qjt​(τ,u)−ydqn(r,τ′;θ−))2=(Qjt′​(τ,u)−Q^​jt​(τ,u)+Vjt​(τ))2=(min[Qjt′​(τ,u)−Q^​jt​(τ,u)+Vjt​(τ),0])2​

  第一个lossLtdL_{\mathrm{td}}Ltd​可以无忧无虑地去近似最优的联合动作值函数,下面两个就是用来去满足可分解值函数地充分必要条件的。

  除此之外作者还提出了几个QTRAN算法的变种,整体算法如下图所示:

参考

  • MultiAgent Cooperation and Competition with Deep Reinforcement Learning
  • Value-Decomposition Networks For Cooperative Multi-Agent Learning
  • QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning
  • QTRAN: Learning to Factorize with Transformation for Cooperative Multi-Agent Reinforcement learning

多智能体强化学习(一) IQL、VDN、QMIX、QTRAN算法详解相关推荐

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

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

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

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

  3. 多智能体强化学习(MARL)训练环境总结

    目前开源的多智能体强化学习项目都是需要在特定多智能体环境下交互运行,为了更好的学习MARL code,需要先大致了解一些常见的MARL环境以及库 文章目录 1.Farama Foundation 2. ...

  4. 多智能体强化学习:鼓励共享多智能体强化学习中的多样性

    题目:Celebrating Diversity in Shared Multi-Agent Reinforcement Learning 出处:Neural Information Processi ...

  5. 多智能体强化学习之QMIX

    论文:QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning 参考博客:多智能 ...

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

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

  7. 多智能体强化学习思路整理

    多智能体强化学习算法思路整理 目录 摘要 背景和意义 研究背景 强化学习 多智能体强化学习与博弈论基础 研究意义 问题与挑战 问题分类 问题分析 环境的不稳定性与可扩展性的平衡 部分可观测的马尔可夫决 ...

  8. 多智能体强化学习—QPLEX

    多智能体强化学习-QPLEX 论文地址:QPLEX: Duplex Dueling Multi-Agent Q-Learning 视频效果:Experiments on StarCraft II 建议 ...

  9. 多智能体强化学习环境【星际争霸II】SMAC环境配置

    多智能体强化学习这个领域中,很多Paper都使用的一个环境是--星际争多智能体挑战(StarCraft Multi-Agent Challenge, SMAC).最近也配置了这个环境,把中间一些步骤记 ...

  10. 2020ICML多智能体强化学习论文简介

    强化学习最新论文汇总 如有错误,欢迎指正 所引用内容链接 Multi-Agent RL 1. Kernel Methods for Cooperative Multi-Agent Learning w ...

最新文章

  1. 认识StringBuffer类
  2. SAP gateway 后台系统的 OData service 服务探测机制实现原理
  3. Java常用设计模式————抽象工厂模式
  4. 【2016年第6期】数据产品在线定制平台的探索实践
  5. Direct X 修复
  6. Android路由设置
  7. 举例说明指针的运算方法c语言,C语言中指针的使用方法
  8. 5gnr帧结构特点有哪些_低合金结构钢有哪些特点?
  9. N1刷Android TV,贫民种草指北 篇二:N1盒子:不谈刷机,只谈使用!
  10. leetcode:Removenbsp;Elementnbsp;+nbsp;nbsp;Imple…
  11. 三角函数 公式【和差化积、积化和差】最简记忆口诀
  12. 私家车对PM2.5的贡献到底有多少?
  13. 什么是Web缓存控制(基于HTTP头域)
  14. H264和aac 封装成为ts,并生成m3u8
  15. hexo yilia个性化样式设置
  16. git fetch 出错“error:failed to run repack”
  17. 全国职业院校技能大赛网络搭建与应用赛项——云平台底层的一些命令
  18. 基于神经网络的滑模鲁棒控制
  19. qq文件怎么传到百度云_福利|还在用 QQ、微信、百度云传文件?你应该试试这个跨平台传输工具...
  20. 怎样给手机网站添加支付接口

热门文章

  1. LintCode 38: Search a 2D Matrix II
  2. 关闭计算机主机还亮着,计算机关闭后,主机电源指示灯仍然亮起
  3. 军用设备环境试验方法高温振动试验标准
  4. 关于电脑前置耳机插孔没声音的问题
  5. 《C专家编程》笔记——第一章
  6. 微信api接口调用-微信群管理
  7. c4d如何把文字贴在物体表面_C4D在简模上整体和局部贴贴图的方法
  8. 使用mathematica求解最优化模型
  9. 如何撰写专利说明书?
  10. cocos creator休闲小游戏源码《躲避高空抛物》源码H5+安卓+IOS三端源码