这个是实验室做项目的时候用到的一个算法,我没仔细看原文,主要看了一下github上的code
一般智能体协作存在的问题:
1:joint action随着智能体增加指数级增大
2:由于部分可观测性,每个agent只能观测到自己的信息,没有信息共享(很多实验跑的都是全局信息当做局部,也就不存在这个问题,还有一些直接输入两个agent的信息,理论上也不存在)
3:使用联合动作空间获得的reward,是两个agent合作出来的reward,并不知道,每个agent各自应该获得多少reward(这个很容易理解)
COMA的主要idea:
1:中心评测,输入为所有agent的信息,一般的评测器只输入单个agent的局部信息
2:反事实推测,这个主要是为了给每个agent赋予不同的reward,例如,当我们采取一个动作之后,我们会想,如果我们没有采取这个动作,采取了其他动作之后,效果如何,本文采用一个网络预测所有动作的结果
我主要根据上图介绍一下,
第一个中心评测,这个比较好理解,主要想告诉你,你当前得到这个reward是不是你自己的操作的原因,还是有队友的操作的原因,这样能让智能体知道是因为什么导致了好的结果。按照单个智能体的方式训练,全局state加上单个智能体的回报进行训练,这个critic之所以能这么训练,是因为 决策的时候不会有Q或者V网络参与。
第二个是策略网络结构,输入是每个agent的个人观测信息,上一步采用的联合动作,智能体a的index(a),输出为 n action的概率
第三个是给定其他agent的动作的情况下,输出所有动作的 value值
计算adv的公式为:(当前动作相比于采取其他动作的优势)
采用adv*log p的方式进行拟合策略网络
采用 Q = R + 求和(动作概率*Q)拟合Q网络
以上。
: