写在前面:这篇文章我也是前前后后看了几遍,还在网上找了一些资料,但是感觉始终也没太看明白,就先把目前的理解写在这里,等以后有了新的理解再更新。要强调一点的是,这篇文章我刚读的时候是真的超级懵,但是不放弃偶尔就读偶尔就读,再结合别人的理解确实还是会有逐渐深入的理解的,所以以后遇到难的文章也不要丧气,平常心慢慢来(当然主要可能还是我的水平不行,读起来才这么难,hh)
题目作者
ICML 19,作者的单位是KAIST,韩国科学技术院,韩国比较好的一个大学,这个组在多智能体强化学习上也是颇多产出的。
摘要
这篇文章是延续VDN,QMIX的工作,也是基于值分解的思路来解决多智能体强化学习合作问题。文章提出虽然VDN,QMIX都是IGM(后文解释)的充分条件,但是在具体的实现上分别引入了 Q i , Q t o t Q_i,Q_{tot} Qi,Qtot之间的加性、单调性假设限制,从而只能解决一部分的多智能体合作问题,对于一些可分解但是 Q i , Q t o t Q_i,Q_{tot} Qi,Qtot之间并不满足加和或者单调性性质的问题,就不能很好解决了。对此,本文中提出了一种新的分解方法,QTRAN,满足了IGM条件,而且并没有引入其他的假设限制,因此适用于更加广泛的问题。
相关工作介绍
注:后文中的
Q
j
t
Q_{jt}
Qjt和前面提到的
Q
t
o
t
Q_{tot}
Qtot是一个意思,不同文章中符号不太一样。
IGM:对于
Q
j
t
Q_{jt}
Qjt,若存在
[
Q
i
]
[Q_i]
[Qi]满足
也就是说对于一个联合动作价值函数
Q
j
t
Q_{jt}
Qjt,如果存在
[
Q
i
]
[Q_i]
[Qi],使得
Q
j
t
Q_{jt}
Qjt的最优联合动作和对于
[
Q
i
]
[Q_i]
[Qi]的最优动作联合相同,则可以认为
[
Q
i
]
[Q_i]
[Qi]对于
Q
j
t
Q_{jt}
Qjt满足IGM,实际中我们在值分解的过程中所求的也就是对于
Q
j
t
Q_{jt}
Qjt满足IGM的
[
Q
i
]
[Q_i]
[Qi],因为只有这样在分散执行的时候每个智能体根据自己的
Q
i
Q_i
Qi选择
a
i
a_i
ai组成a,和从集中式的角度选择联合动作
a
ˉ
\bar{a}
aˉ才是一致的。
而前面的论文,即VDN,QMIX都提供了一种设计
[
Q
i
]
[Q_i]
[Qi]或者说分解
Q
j
t
Q_{jt}
Qjt的方式,都是满足IGM的充分条件,写作如下(2)(3):
但是显然虽然这两个方法都满足IGM,但是都分别对
Q
i
,
Q
t
o
t
Q_i,Q_{tot}
Qi,Qtot之间的关系进行了限制,即认为它们之间的关系式加和或者单调的,因此对于一些多智能体合作任务,然而
Q
i
,
Q
t
o
t
Q_i,Q_{tot}
Qi,Qtot之间的关系并不是这种的问题,这两种方法就未必会应用的很好了,对此,本文提供了一种新的设计/产生
[
Q
i
]
[Q_i]
[Qi]的方法,QTRAN,既满足IGM,且没有提出额外的假设。
方法
作者证明了,只要 [ Q i ] [Q_i] [Qi]和 Q j t Q_{jt} Qjt之间满足如下关系,则 [ Q i ] [Q_i] [Qi]对于 Q j t Q_{jt} Qjt满足IGM:
符号说明:
根据这个定理,我们可以把
[
Q
i
]
[Q_i]
[Qi]的求解/或者说
Q
j
t
Q_{jt}
Qjt的分解问题建模成一个优化问题,决策变量就是
[
Q
i
]
[Q_i]
[Qi],约束条件就是定理1,也就是当
u
=
u
ˉ
u=\bar{u}
u=uˉ时,定理1中左式要尽可能靠近0,当
u
≠
u
ˉ
u \neq \bar{u}
u=uˉ时,左式要为正,这样优化出来的
[
Q
i
]
[Q_i]
[Qi]对于
Q
j
t
Q_{jt}
Qjt满足就IGM了。
在具体的实现中,QTRAN的说明图如下:
可以看出,对于定理一的左式,
Q
i
Q_i
Qi是用网络表示的,同时利用各个智能体的状态信息
h
i
(
t
i
,
u
i
)
h_i(t_i,u_i)
hi(ti,ui)的联合去估计了
V
j
t
,
Q
j
t
V_{jt},Q_{jt}
Vjt,Qjt,算法的loss定义为:
L
o
p
t
,
L
n
o
p
t
L_{opt},L_{nopt}
Lopt,Lnopt分别是满足定理一的约束,因为这里的
Q
j
t
Q_{jt}
Qjt是使用网络估计的,因此还需要借助真实的奖励信息r来算一个TD-Loss
另外其他的一些说明:
当然论文里实现了两个版本的QTRAN,QTRAN-base和QTRAN-alt,后者的提出是因为作者发现当 u ≠ u ˉ u \neq \bar{u} u=uˉ时,定理一中的约束太松了导致训练很容易不稳定,因此提出了一个更紧的约束(道理是这样的但其实我还没太仔细看)。
写在后面
这篇文章目前我就读到这里了,但是其实这里我还有一个迷惑。在文章中可以推出
V
j
t
V_{jt}
Vjt需要是这个形式:
但是在实际的算法中,
V
j
t
V_{jt}
Vjt是用网络估计出来的,也不是很明确这个估计出来的值到底是表示什么,也没有别的东西来直接约束它,这样是合理的吗?
另外好多人说QTRAN的算法理论性很好,但是后续在求解的时候引入了很多近似、松弛,使得算法的实际性能不是很好,这一点我还没有具体体会和认识到,还需要继续学习。
最后推荐一个知乎的文章,对值分解这块讲得还挺好的,尤其是QTRAN的推导,链接在这里:知乎文章,这篇文章里说 V j t V_{jt} Vjt可以先是一个定义 Q j t , ∑ Q i Q_{jt},\sum Q_i Qjt,∑Qi之间差距的量,然后只要满足定理一的约束,那么 V j t V_{jt} Vjt就是上面这个形式,这样理解好像怎么定义 V j t V_{jt} Vjt都可以了,先暂定这样吧。