# Counterfactual Multi-Agent Policy Gradients
深度強化學習於網路智慧控制 p.58, COMA 算法
---
counterfactual Multi-Agent(COMA) 的思想把每一個 agent 對於全局獎勵的貢獻體現出來
COMA 基於 AC 架構
簡單講 COMA 就是將原本 critic 會給actor 的 Q 值替換成 A 值, A 值的公式如下:

大寫 U 為所有 agent 的聯合動作集, τ^a 為 agent a 的 trajectory, 所以這個公式的意思就是, 把除了 agent a 以外的 agent 動作固定, 計算 agent a 的動作優勢
換句話說, 當 agent a 接收到的 A 值為負, 就代表聯合動作集 U 是不太好的, 這種情況, agent 會減少採取 U 中的動作
反之, 則是增加 U 中該動作的機率
詳細的看, 第二項其實會包含第一項, 但是會多乘上該 agent 策略做當前動作的機率, 如果有其他 Q 值更高的動作, 但沒有去做它, 則可能會使 A 值為負, 說明當前的動作優勢不高
## architectures

critic 還是使用 Q 值來計算 loss
actor 的梯度公式也和原本的 AC 沒有不同, 以下是推倒:





## 總結
COMA 是集中式訓練分散式執行, critic 只有一個, actor 有多個
和原本的 AC 不同的地方在於當 actor 做一個動作後, critic 會給 actor 一個 A 值, 代表該動作的優勢值, 以此來推斷每個 agent 對於全局獎勵的貢獻.
COMA 算法能夠更好地處理多智能體環境中的信用分配問題, 從而提高了學習的效率和性能.
但 COMA 算法的擴展性是一個問題