最顯而易見的第一招:獨立學習者
面對 N 個智能體,最簡單的想法令人難以抗拒:給每一個一份單智能體演算法的副本,讓它們並肩學習,各自把其他者當成環境的一部分。把這套用在 Q-learning 上,就稱為獨立 Q 學習(independent Q-learning, IQL)。它不需要新的機制、可輕易擴展到許多智能體,而且——出乎意料地常常——在實務上夠用。
强化学习循环示意图:智能体执行动作,环境返回新的状态和奖励。
# Independent Q-learning: every agent learns alone,
# treating the others as 'just part of the environment'.
for episode in range(N_EPISODES):
obs = env.reset() # one local observation per agent
done = False
while not done:
acts = [agent[i].act(obs[i]) for i in range(N)]
next_obs, rewards, done = env.step(acts)
for i in range(N):
agent[i].update(obs[i], acts[i], rewards[i], next_obs[i])
obs = next_obs這是正確的起點,也是個強勁的基線。但它依賴一個如今已不成立的假設,而理解為什麼不成立,是後續一切的關鍵。
非平穩性:地板一直在動
單智能體學習假設一個平穩的環境:在相同狀態下採取相同動作,隨時間會有相同的結果分布。正是這個假設讓價值估計得以收斂。但在馬可夫賽局中,當一個智能體把它的共同學習者當成「環境」時,這個環境是在變化的,因為其他者正在學習、並更新自己的策略。這就是非平穩性,MARL 的核心痛點。
Q 学习的更新只有在结果平稳时才会收敛,但其他正在学习的智能体会不断改变这一分布。
具體來說:智能體 A 學會了對智能體 B 當前行為的絕佳回應。與此同時 B 也在進步,所以 B 的行為漂移了——而 A 辛苦學來的回應,瞄準的已是一個早已移位的標靶。在固定環境下成立的收斂保證,根本無法直接搬過來。更糟的是,經驗回放(replay buffer)會讓問題更尖銳:儲存下來的轉移,是由舊策略產生的,因此它們描述的是一個已不復存在的世界。
多智能體信用分配:到底是誰幫了忙?
單智能體 RL 本就要對付跨時間的信用分配問題:是哪一個較早的動作賺得了這個較晚的獎勵?MARL 又加上第二個維度——跨智能體。當一支隊伍共享一份獎勵並獲勝時,是哪個智能體的選擇造成了關鍵差別?這就是多智能體信用分配問題。
可交互的网格世界,Q 学习智能体将奖励反向传播到较早的状态。
想像一場五人遊戲,全隊得分。共享的獎勵告訴每個人「做得好」——包括那個閒站著、沒做任何有用之事的智能體,它如今卻因偷懶而被強化。這就是懶惰智能體的病態。若沒有辦法把每個智能體的貢獻拆解開來,學習就會混濁不清:一記精彩的妙招和一個無用的動作,得到的信用一模一樣。乾淨地解決這件事,正是下一篇價值分解方法的全部動機。
為何均衡如此滑溜
連我們的球門柱本身都很麻煩。納許均衡不一定唯一——一個賽局可能有許多個,而不同智能體可能瞄準著不同的均衡,導致協調失敗。它可能很難計算。而在競爭式賽局中,最佳回應的動態可能永遠循環下去,就像一場沒完沒了的剪刀石頭布:每個新策略都打敗前一個,卻又輸給更前一個。
這裡還有一個價值陷阱:「沒有人能單獨改善」並不代表「對所有人最好」。囚徒困境就有一個雙方都背叛的納許均衡——它很穩定,卻比相互合作對雙方都更糟。所以 MARL 不只是最佳化;它繼承了策略互動的深層微妙之處。診斷既已在手,本系列接下來談的就是藥方。