1 解决了什么问题?
多智能体强化学习算法有三个常用的框架:
- Fully decentralized;
- Fully centralized;
- Centralized Training and Decentralized Execution, CTDE.
其中,CTDE 要求在训练时学习一个集中的动作-价值函数 Q t o t Q_{tot} Qtot,它反映了在该全局状态下,联合动作的好坏。
在 Value Decomposition Networks(VDN)算法中, Q t o t Q_{tot} Qtot 由所有个体的 Q a Q_a Qa 之和计算得出,每个 agent 根据自己的 Q a Q_a Qa 贪婪地选择动作。但 VDN 的缺点也很明显,它严重限制了 Q t o t Q_{tot} Qtot 的复杂性,并忽略了训练过程中可用的任何额外状态信息。
本文的 QMIX 算法是 VDN 的改进。作者认为 VDN 的完全分解并不是提取分散策略的必要条件。相反,只需要确保在 Q t o t Q_{tot} Qtot 上执行的全局 argmax \text{argmax} argmax 就会产生与在每个 Q a Q_a Qa 上执行的一组单个 argmax \text{argmax} argmax 操作相同的结果即可。
2 解决方法是什么?
Fully cooperative multi-agent task 可以被表示为一个 Dec-POMDP,它包含一个元组 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 s∈S 为环境的真实状态,在每个时间步,每个 agent a ∈ A ≡ { 1 , … , n } a \in A \equiv\{1, \ldots, n\} a∈A≡{1,…,n} 会选择一个动作 u a ∈ U u^{a} \in U ua∈U 构成联合动作 u ∈ U ≡ U n \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],所有的 agent 共享相同的奖励 r ( s , u ) : S × U → R r(s, \mathbf{u}): S \times \mathbf{U} \rightarrow \mathbb{R} r(s,u):S×U→R, γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ∈[0,1] 为折扣因子。
在部分可观测的环境中,agent 根据观测函数 O ( s , a ) : S × A → Z O(s, a): S \times A \rightarrow Z O(s,a):S×A→Z 收到对应的观测值 z ∈ Z z \in Z z∈Z,每个 agent 有自己的动作-观测历史 τ a ∈ T ≡ ( Z × U ) ∗ \tau^{a} \in T \equiv(Z \times U)^{*} τa∈T≡(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 π 有一个联合动作价值函数 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:∞[Rt∣st,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 为折扣收益。
VDN 的完全分解并不是提取分散策略的必要条件。相反,只需要确保在
Q
t
o
t
Q_{tot}
Qtot 上执行的全局
argmax
\text{argmax}
argmax 就会产生与在每个
Q
a
Q_a
Qa 上执行的一组单个
argmax
\text{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
)
)
\underset{\mathbf{u}}{\operatorname{argmax}} Q_{t o t}(\boldsymbol{\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)
uargmaxQtot(τ,u)=⎝⎜⎛argmaxu1Q1(τ1,u1)⋮argmaxunQn(τn,un)⎠⎟⎞
这允许每个 agent
a
a
a 通过对自己的
Q
a
Q_a
Qa 选择贪婪的动作进行分散式执行(decentralised execution)。
VDN 的表示方法是满足上式的充分条件。然而,QMIX 是基于这样的观察,这种表示方法可以推广到更大的单调函数组,这些函数组都是满足上式的充分不必要条件。单调性可以通过约束
Q
t
o
t
Q_{tot}
Qtot 和
Q
a
Q_a
Qa 之间的关系来实现:
∂
Q
t
o
t
∂
Q
a
≥
0
,
∀
a
∈
A
\frac{\partial Q_{t o t}}{\partial Q_{a}} \geq 0, \forall a \in A
∂Qa∂Qtot≥0,∀a∈A
为了保证上式,QMIX 使用了一个由 agent networks,一个 mixing network 和一组 hypernetworks 构成的架构。
每个 agent 都有一个 agent network,agent network 用来表示单独的值函数 Q a ( τ a , u a ) Q_a(\tau^a,u^a) Qa(τa,ua)。作者将 agent network 表示为 DRQNs,它在每个时间步上接收当前个体观测 o t a o_t^a ota 和 上一时刻的动作 u t − 1 a u_{t-1}^a ut−1a 作为输入。
Mixing network 是一个前馈神经网络,它以 agent network 的输出作为输入,进行单调地混合,产生 Q t o t Q_{tot} Qtot 值。为了加强单调性约束,Mixing network 的权值(而不是偏差)被限制为非负值。这允许混合网络任意接近任何单调函数。
Mixing network 的权值是由单独的超网络产生的。每个超网络以状态 s s s 作为输入,生成一层混合网络的权值。每个超网络由一个单一的线性层组成,然后是一个绝对值激活函数,以确保混合网络的权值是非负的。超网络的输出是一个向量,它被重塑成一个适当大小的矩阵。这些偏差也以同样的方式产生,但并不限于非负性。最终的偏差是由一个具有 ReLU 非线性的 2 层超网络产生的。
由于 Q t o t Q_{tot} Qtot 被允许以非单调的方式依赖于额外的状态信息,因此该状态被 hypernetworks 使用,而不是直接传递到混合网络中。因此,将 s s s 的某些函数通过单调网络与每个 agent 的值一起传递将是被过度约束的。相反,hypernetworks 的使用使得以任意方式调整单调网络对 s s s 的权值成为可能,从而尽可能灵活地将完整状态 s s s 集成到联合动作值估计中。
QMIX 通过端到端的训练以最小化以下损失:
L
(
θ
)
=
∑
i
=
1
b
[
(
y
i
t
o
t
−
Q
t
o
t
(
τ
,
u
,
s
;
θ
)
)
2
]
y
t
o
t
=
r
+
γ
max
u
′
Q
t
o
t
(
τ
′
,
u
′
,
s
′
;
θ
−
)
\mathcal{L}(\theta)=\sum_{i=1}^{b}\left[\left(y_{i}^{t o t}-Q_{t o t}(\boldsymbol{\tau}, \mathbf{u}, s ; \theta)\right)^{2}\right]\\ y^{t o t}=r+\gamma \max _{\mathbf{u}^{\prime}} Q_{t o t}\left(\boldsymbol{\tau}^{\prime}, \mathbf{u}^{\prime}, s^{\prime} ; \theta^{-}\right)
L(θ)=i=1∑b[(yitot−Qtot(τ,u,s;θ))2]ytot=r+γu′maxQtot(τ′,u′,s′;θ−)
其中,
b
b
b 是从重放缓冲区中采样的 transitions 的批处理大小,
θ
−
\theta^{-}
θ− 为 target 网络的参数。由于前面第一个式子成立,因此我们可以在 agent 数量的线性时间上执行
Q
t
o
t
Q_{tot}
Qtot 的最大化操作。
3 有什么关键的实验结果?
本文实验在星际争霸2上进行。分布式地控制我方 agent 对战另一方兵种一样,兵力数量一样,且用内置算法控制的地方 agent。agent 的动作空间是离散的,包括 移动方向,攻击某个 agent,停止和空行为。
下图展示了不同兵种设定,相同兵种的不同数量设定 和 不同算法随着训练时间控制 agent 的胜率变化。可以看出,QMIX 相比于 IQL 和 VDN 在收敛速度上和胜率上都有一定的优势。
另外,作者为了证明 QMIX 网络结构的必要性提出了消融实验。实验的对比组:
- QMIX-Lin:在 mixing network 中去掉非线性部分;
- QMIX-NS:去掉全局状态 s s s 的帮助;
- VDN-S:在 VDN 的基础上,加上全局状态 s s s 的帮助。
消融实验证明,加入全局状态和非线性部分均起到一定作用。