# Counterfactual Multi-Agent Policy Gradients 深度強化學習於網路智慧控制 p.58, COMA 算法 --- counterfactual Multi-Agent(COMA) 的思想把每一個 agent 對於全局獎勵的貢獻體現出來 COMA 基於 AC 架構 簡單講 COMA 就是將原本 critic 會給actor 的 Q 值替換成 A 值, A 值的公式如下: ![image](https://hackmd.io/_uploads/rJre1LlJA.png) 大寫 U 為所有 agent 的聯合動作集, τ^a 為 agent a 的 trajectory, 所以這個公式的意思就是, 把除了 agent a 以外的 agent 動作固定, 計算 agent a 的動作優勢 換句話說, 當 agent a 接收到的 A 值為負, 就代表聯合動作集 U 是不太好的, 這種情況, agent 會減少採取 U 中的動作 反之, 則是增加 U 中該動作的機率 詳細的看, 第二項![image](https://hackmd.io/_uploads/SyocrUlyR.png)其實會包含第一項![image](https://hackmd.io/_uploads/B13orLgyR.png), 但是會多乘上該 agent 策略做當前動作的機率, 如果有其他 Q 值更高的動作, 但沒有去做它, 則可能會使 A 值為負, 說明當前的動作優勢不高 ## architectures ![image](https://hackmd.io/_uploads/BycBULlyR.png) critic 還是使用 Q 值來計算 loss actor 的梯度公式也和原本的 AC 沒有不同, 以下是推倒: ![image](https://hackmd.io/_uploads/SJfpI8gJ0.png) ![image](https://hackmd.io/_uploads/SJnTIUx10.png) ![image](https://hackmd.io/_uploads/S1UAIIg1A.png) ![image](https://hackmd.io/_uploads/SJ7ywLlJR.png) ![image](https://hackmd.io/_uploads/rJ--v8eyA.png) ## 總結 COMA 是集中式訓練分散式執行, critic 只有一個, actor 有多個 和原本的 AC 不同的地方在於當 actor 做一個動作後, critic 會給 actor 一個 A 值, 代表該動作的優勢值, 以此來推斷每個 agent 對於全局獎勵的貢獻. COMA 算法能夠更好地處理多智能體環境中的信用分配問題, 從而提高了學習的效率和性能. 但 COMA 算法的擴展性是一個問題