這個是實驗室做項目的時候用到的一個算法,我沒仔細看原文,主要看了一下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網絡
以上。
: