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

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

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

  其中 s ∈ S s \in S sS表示环境的真实状态信息。在每一个时间步,对于每个智能体 a ∈ A ≡ { 1 , … , n } a \in A \equiv\{1, \ldots, n\} aA{1,,n}都需要去选择一个动作 u a ∈ U u^{a} \in U uaU去组成一个联合动作 u ∈ U ≡ U n \mathbf{u} \in \mathbf{U} \equiv U^{n} uUUn,再将这个联合动作给到环境中去进行状态转移: 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(ss,u):S×U×S[0,1]。之后,所有的智能体都会收到一个相同的奖励: r ( s , u ) : S × U → R r(s, \mathbf{u}): S \times \mathbf{U} \rightarrow \mathbb{R} r(s,u):S×UR。与单智能体一样 γ \gamma γ表示折扣因子。

  对于每个单智能体 a a a来说,它接收的是一个独立的部分可观测的状态 z ∈ Z z \in Z zZ,不同的智能体 a a a具备不同的观测,但是所有的观测都来自环境的真实状态信息,所以可以用函数表示为: O ( s , a ) : S × A → Z O(s, a): S \times A \rightarrow Z O(s,a):S×AZ。对于每个智能体 a a a它都有一个动作观测历史 τ a ∈ T ≡ ( Z × U ) ∗ \tau^{a} \in T \equiv(Z \times U)^{*} τaT(Z×U)基于这个动作-观测的历史来构建随机策略函数 π a ( u a ∣ τ 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 π是基于状态信息 s t s_{t} st构建的联合动作值函数 Q π ( s t , u t ) = E s t + 1 : ∞ , u t + 1 : ∞ [ R t ∣ s t , u t ] 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:[Rtst,ut],其中 R t = ∑ i = 0 ∞ γ i r t + i R_{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)算法中将其余智能体直接看作环境的一部分,也就是对于每个智能体 a a a都是在解决一个单智能体任务,很显然,由于环境中存在智能体,因此环境是一个非稳态的,这样就无法保证收敛性了,并且智能体会很容易陷入无止境的探索中,但是在工程实践上,效果还是比较可以的。

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

VDN

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

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

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

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

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

Q ( ( h 1 , h 2 , … , h d ) , ( a 1 , a 2 , … , a d ) ) ≈ ∑ i = 1 d Q ~ i ( h i , a i ) 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=1dQ~i(hi,ai)

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

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

Q t o t ( τ , u ) = ∑ i = 1 n Q i ( τ i , u i ; θ 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=1nQi(τi,ui;θi)

  严格意义上说 Q a ( τ a , u a ; θ 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

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

argmax ⁡ u Q t o t ( τ , u ) = ( argmax ⁡ u 1 Q 1 ( τ 1 , u 1 ) ⋮ argmax ⁡ u n Q n ( τ n , u n ) ) (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)} uargmaxQtot(τ,u)=argmaxu1Q1(τ1,u1)argmaxunQn(τn,un)(1)

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

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

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

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

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

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

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

L ( θ ) = ∑ i = 1 b [ ( y i t o t − Q t o t ( τ , 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=1b[(yitotQtot(τ,u,s;θ))2]

  其中 b b b表示从经验池中采样的样本数量, y tot  = r + γ max ⁡ u ′ Q t o t ( τ ′ , 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+γmaxuQtot(τ,u,s;θ) θ − \theta^{-} θ为目标网络参数。由于公式(1)的存在,对 Q t o t Q_{t o t} Qtotargmax的话,就是与智能体数量呈线性增长关系了。

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

  还有就是在基于单个智能体的动作值函数下得到联合动作值函数的过程中,也就是在Mixing网络中有考虑状态 s t s_{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 ⁡ u Q t o t ( τ , u ) = ( argmax ⁡ u 1 Q 1 ( τ 1 , u 1 ) ⋮ argmax ⁡ u n Q n ( τ n , u n ) ) (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)} uargmaxQtot(τ,u)=argmaxu1Q1(τ1,u1)argmaxunQn(τn,un)(1)

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

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

arg ⁡ max ⁡ u Q j t ( τ , u ) = ( arg ⁡ max ⁡ u 1 Q 1 ( τ 1 , u 1 ) ⋮ arg ⁡ max ⁡ u N Q N ( τ n , u N ) ) (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)} argumaxQjt(τ,u)=argmaxu1Q1(τ1,u1)argmaxuNQN(τn,uN)(2)

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

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

QTRAN直观理解

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

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

可分解值函数的充分条件

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

∑ i = 1 N Q i ( τ i , u i ) − Q j t ( τ , u ) + V j t ( τ ) = { 0 u = u ‾ ≥ 0 u ≠ 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=1NQi(τi,ui)Qjt(τ,u)+Vjt(τ)={00u=uu=u

  其中 V j t ( τ ) = max ⁡ u Q j t ( τ , u ) − ∑ i = 1 N Q i ( τ 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(τ)=maxuQjt(τ,u)i=1NQi(τi,uˉi)

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

  当 u = u ‾ \boldsymbol{u}=\overline{\boldsymbol{u}} u=u时,由充分条件第一条可以得出: Q j t ( τ , u ‾ ) = ∑ i = 1 N Q i ( τ i , u ˉ i ) + V j t ( τ ) 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=1NQi(τi,uˉi)+Vjt(τ)。说明在智能体动作最优的情况下,能够保证全局的也是最优的。

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

Q j t ( τ , u ‾ ) = ∑ i = 1 N Q i ( τ i , u ˉ i ) + V j t ( τ ) ≥ ∑ i = 1 N Q i ( τ i , u i ) + V j t ( τ ) ≥ ∑ i = 1 N Q i ( τ i , u i ) + Q j t ( τ , u ) − ∑ i = 1 N Q i ( τ i , u i ) ≥ Q j t ( τ , 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=1NQi(τi,uˉi)+Vjt(τ)i=1NQi(τi,ui)+Vjt(τ)i=1NQi(τi,ui)+Qjt(τ,u)i=1NQi(τi,ui)Qjt(τ,u).

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

可分解值函数的必要条件

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

  作者将 Q i Q_{i} Qi进行了一个缩放, a i i Q i + b i a_{i i} Q_{i}+b_{i} aiiQi+bi。然后定义:

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

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

  其网络结构如下:

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

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

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

L t d ( ; θ ) = ( Q j t ( τ , u ) − y d q n ( r , τ ′ ; θ − ) ) 2 L o p t ( ; θ ) = ( Q j t ′ ( τ , u ‾ ) − Q ^ j t ( τ , u ‾ ) + V j t ( τ ) ) 2 L n o p t ( ; θ ) = ( min ⁡ [ Q j t ′ ( τ , u ) − Q ^ j t ( τ , u ) + V j t ( τ ) , 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

  第一个loss L t d L_{\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
  • 18
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
【项目介绍】 基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip 基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip 基于python实现多智能体强化学习VDNQMIXQTRAN、QPLEX算法源码+对应模型文件.zip 【说明】 1、项目源码在上传前,都经过本地成功运行,功能测试无误。请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、机械电子信息等相关专业背景的在校大学生、专业老师 行业从业人员等下载使用。 3、用途:项目代表性强,具有创新性和启发性,故具有挺高的学习借鉴价值。不仅适合小白入门进阶,还可作为毕设项目、课程设计、大作业、比赛初期项目立项演示等。 4、如果基础还不错,又热爱学习钻研,也可基于此项目基础上进行修改进行二次开发。 本人也是技术狂热者,如果觉得此项目对您有价值,欢迎下载使用! 无论您是运行还是二次开发,遇到问题或困惑,欢迎私信交流学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值