本文首发于:行者AI
Qmix是多智能体强化学习中比较经典的算法之一,在VDN的基础上做了一些改进,与VDN相比,在各个agent之间有着较大差异的环境中,表现的更好。
1. IQL与VDN
IQL(Independent Q_Learning),是一种比较暴力的解决问题的方法,每个agent都各自为政,自己学习自己的,没有一个共同的目标。导致算法最终很难收敛。但是在实际一些问题中有不错的表现。
VDN(Value-Decomposition Networks For CooperativeMulti-Agent Learning),每个agent都有自己的动作价值函数 Q a Q_a Qa,通过各自的价值函数的 a r g m a x Q a argmaxQ_a argmaxQa,选取动作。 Q t o t = ∑ i = 1 n Q i Q_{tot}=\sum_{i=1}^nQ_i Qtot=∑i=1nQi,主要将系统的联合 Q t o t Q_{tot} Qtot近似成为多个单智能体的 Q a Q_a Qa函数的和。因为VDN的联合函数的求和形式表现力有限,在有复杂组合的环境中,表现的很差。例如非线性环境。
2. Qmix
2.1 Qmix的算法思想
QMIX的主要目的:找到一个完全去中心化的策略,并没有像VDN一样完全分解,为了保持策略一致性,我们只需要是全局的 Q t o t Q_{tot} Qtot的执行与 a r g m a x Q a argmaxQa argmaxQa上的执行的结果相同:
要达到这个效果只需要满足 Q t o t Q_{tot} Qtot对于任何一个 Q a Q_a Qa都是单调递增的:
不难看出,当 ∂ Q t o t ∂ Q a = 1 \frac {\partial Q_{tot}}{\partial Q_a}=1 ∂Qa∂Qtot=1的时候就是VDN,VDN是QMIX的一种特殊情况。
2.2 Qmix的网络结构
QMIX的模型由两大部分组成(三个网络组成),一个是agent network,输出单智能体的 Q i Q_i Qi的函数,mixing network则是以 Q i Q_i Qi作为输入,输出为联合 Q t o t Q_{tot} Qtot。为了保证单调性,mixing network的网络参数权重和偏置通过hypernetworks网络计算得出,并且hypernetworks输出的网络权重都必须大于0,对偏置没有要求。
3. 算法流程
-
初始化网络eval_agent_network,eval_mixing_network这两个网络,分别将这两个网络的参数复制给target_agent_network,targent_mixing_network.初始化buffer D D D,容量为 M M M,总迭代轮数 T T T,target_agent_network,targent_mixing_network两个网络参数更新频率 p p p。
-
f o