核心想法:兩個階段、兩種視角
合作式 MARL 的主流配方是集中式訓練、分散式執行(centralized training with decentralized execution, CTDE)。其洞見在於把「何時學習」與「何時行動」分開。在訓練期間——通常是在模擬器中——我們允許上帝視角:完整的聯合狀態、每個人的觀測與動作。而在執行期間——也就是真實世界中的部署——每個智能體只能用自己的局部觀測來行動,因為它擁有的就只有這些。
CTDE 直接化解了上一篇的兩大麻煩。訓練時的集中視角提供了一個平穩的目標——我們以聯合動作為條件,因此非平穩性那種「拼圖會動」的問題被馴服了。它也給了我們破解多智能體信用分配所需的槓桿,因為我們可以一次性地推理所有人。剩下的設計問題是如何運用這個集中式訊號。以下是三種答案。
價值分解:拆開團隊價值
第一個答案正面迎戰信用分配。價值分解網路(Value Decomposition Networks, VDN)假設團隊的聯合動作價值可以寫成各智能體價值之和:Q_total 等於 Q_1 加 Q_2,依此類推。每個智能體在自己的局部觀測上保有自己的價值網路;我們把它們加總起來,對著共享的團隊獎勵訓練,梯度便回流到每個智能體。由於總和是加法,一個智能體對自己的 Q 做貪婪選擇,就自動等於對團隊 Q 做貪婪選擇——執行因此維持分散式。
VDN 的核心假设:团队的联合动作价值是各智能体价值之和,因此局部贪婪选择仍是全局贪婪。
不過單純的加總有其侷限:許多團隊需要比「把獨立貢獻加起來」更豐富的互動。QMIX 把「和」放寬為任何單調的組合——只要任一智能體的個別 Q 上升,團隊 Q 就上升。一個小型的混合網路,餵入額外的全域狀態,以非負權重學出這個單調的混合。單調性正是那個關鍵性質:它讓分散式的貪婪動作與集中式的最優解保持一致,同時容許比 VDN 表達力豐富得多的團隊協作。
反事實信用:如果我什麼都沒做會怎樣?
有一個優雅的、屬於策略梯度的替代方案,用一個巧妙的問題來對付懶惰智能體。反事實多智能體(counterfactual multi-agent, COMA)基線用一個集中式評論家(critic)為每個智能體發問:相較於它原本可以採取的所有其他動作的平均,這個智能體因為採取了它實際的動作,使團隊的結果好了多少——同時固定其他所有人不變?
這個差值就是一個反事實優勢(counterfactual advantage):它透過減去一個基線——這個基線把它無法控制的那部分獎勵平均掉——來孤立出單一智能體的邊際貢獻。閒置的智能體得到近乎零的優勢,不再因團隊的運氣而受褒獎;關鍵的智能體則得到強烈訊號。這在精神上,正是用反事實推理解決的信用分配問題。
COMA 的反事实优势:减去一个仅对该智能体动作求边缘、同时固定队友动作的基线。
MAPPO:強得出人意料的預設選擇
上述方法日趨精巧,但有一個簡單得驚人的配方常常與之並駕齊驅、甚至更勝一籌:多智能體 PPO(multi-agent PPO, MAPPO)。拿來PPO——那個可靠的單智能體主力——讓每個智能體在自己的觀測上擁有一個分散式的行動者(actor),再為它們配上一個集中式評論家,在訓練時看得到全域狀態。這就是純粹的 CTDE,幾乎沒有任何新機制。
# MAPPO sketch: decentralized actors, one centralized critic.
for it in range(N_ITERS):
batch = collect_rollouts(env, actors) # each actor uses local obs only
# critic sees the GLOBAL state s (training-time privilege)
values = critic(batch.global_states)
adv = gae(batch.rewards, values) # shared-team advantage
for i in range(N): # agents may share weights
ppo_update(actors[i], batch.obs[i], batch.acts[i], adv)
ppo_update_critic(critic, batch.global_states, batch.returns)這個教訓呼應了 RL 中反覆出現的主題:一個調校得當、被充分理解的基線,再加上 CTDE 的想法,就能走得非常遠。當信用分配的結構確實有此需求時,再去動用價值分解或反事實基線——但請先試 MAPPO。