通過一段時間的論文閱讀,我覺得閱讀必須要有輸出,不然理解的很難深刻,本文借鑑「一文七問」的解讀角度,結合自己調整,將從以下7個角度解讀這篇多智能體領域的經典大作:QMIX(被引293):
背景動機、現有方法及問題、本文提出方法、實驗方法及結果、結論、創新點及相關工作
論文簡介標題《QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning》
QMIX: 一種多智能體深度強化學習的 單調值函數分解方法
作者Tabish Rashid 、 Mikayel Samvelyan 、 Christian Schroeder de Witt 、Gregory Farquhar 、Jakob Foerster 、Shimon Whiteson
相關下載arxiv: QMIX(paper) (https://arxiv.org/abs/1803.11485)
github: Code (https://github.com/oxwhirl/pymarl)
導讀:單智能體強化學習搭載上深度神經網絡在遊戲、自動駕駛等諸多場景取得了很多大的成功。但是現實生活中多智能體的場景是一個更加有趣的場合,團隊內協作、團隊間競爭的場景是現在很多研究人員關注的問題。
本文就是一篇,如何將強化學習應用到多智能體場景中的經典論文。方法類型是CTDE(集中訓練、分布執行)
在該應用背景下的一個難點就是如何評價agent個人對整體的貢獻,即不讓老實人吃虧,防止「濫竽充數」
本文提出的QMIX算法,就是將所有agent的Q值用一個神經網絡混合起來去表示全局整體的Q值(就是進行了一個非線性組合),同時將額外的狀態信息融合到了計算中。該團隊在StarCraft II平臺上進行了實驗驗證,實驗結果表明,效果和勝率都優於其前輩 -- 2017年deepmind發表的VDN算法(value-decomposition networks for cooperative multi-agent learning)
7個角度展開
1 研究背景(動機)這篇文章就是想對VDN算法進行一個改進
因為VDN在將每個agent的價值Q混合成整體價值Q-total時,僅僅採用了簡單的累加,這種簡單的線性組合不足以反應出複雜的信息,故本文採用一個MIX混合網絡來近似其非線性關係,使其具有更強的關係表現能力。
2 現有方法及問題在QMIX前主要是有VDN算法,還有一些其他對比的方法如下
independent Q-learning(IQL-1993) 極端分散思想:不用全局價值,僅使用單個agent的價值學習問題:無法明確表示agent之間的互動影響,也可能無法收斂,因為每個agent的學習環境都被他人的學習影響著,環境就不是靜態的了(DQN等單智能體算法都要求環境是靜態的)counterfactual multi-agent(COMA-2017/2018) 極端集中思想:僅學習和使用一個全局價值,用其去生成每個智能體的策略問題:需要on-policy學習,使得樣本變得低效。而且當智能體數量很少時,很難學習一個the fully centralised criticvalue decomposition networks (VDN-2017) 折中方案思想:每個agent訓練一個Q,並且用其訓練自己policy。再將所有的Q累加和作為整體Q-total,來表示全局的價值問題:VDN簡單的加和限制了全局價值可以表示的複雜度,並且忽略了訓練過程的額外狀態信息3 本文提出的方法QMIX,和VDN類似也是一種居於IQL和COMA之間的以一種折中方案。
特點: 可以表示更多更複雜的全局值函數。
關鍵貢獻: 不需要對VDN進行完全分解就提取出分布式策略(滿足前提即可)
方法闡述:
基於前提:對全局價值提取最優策略等價於對單個智能體價值提取最優策略式(4),即保證下式(5)成立
QMIX組成:
下圖(b),表示了整體結構,流程如下:
agent局部觀測和上一時刻動作 --> agent networks --產生單Q--> mixing network -->全局Q-total
agent networks:每個agent的評價網絡 [圖右(c)]mixing network:將所有agent價值混合起來的網絡 [圖左(a)]QMIX結構圖QMIX結構詳解
總體就是兩層(與圖a一致) :看下代碼實現,也是非常簡潔(為了閱讀方便省略了調整size的代碼)
# First layer
'''
agent_qs:所有agent的Q值
self.hyper_w_1 = nn.Linear(self.state_dim, self.embed_dim * self.n_agents)
self.hyper_b_1 = nn.Linear(self.state_dim, self.embed_dim)
'''
w1 = th.abs(self.hyper_w_1(states))
b1 = self.hyper_b_1(states)
hidden = F.elu(th.bmm(agent_qs, w1) + b1)
# Second layer
'''
self.hyper_w_final = nn.Linear(self.state_dim, self.embed_dim)
# V(s) 代替最後一層的偏置
self.V = nn.Sequential(nn.Linear(self.state_dim, self.embed_dim),
nn.ReLU(),
nn.Linear(self.embed_dim, 1))
'''
w_final = th.abs(self.hyper_w_final(states))
v = self.V(states)
y = th.bmm(hidden, w_final) + v
q_tot = y.view(bs, -1, 1)
PS:網絡的參數w、b均由全連接網絡構成(hypernetwork),不是一個簡單變量
對比VDN,這部分僅僅是一個簡單的求和
訓練方法:中心化訓練網絡,降低loss 即可
4 實驗方法及結果小測試:two step game說明:遊戲總共分兩步
第一步:agent_1選擇一個動作A或B,當選擇動作A時,進入State_2A的獎勵表格,反之進入State_2B,此時agent_2的動作對環境沒有影響
第二步:根據agent_1、agent_2的動作給出表格上的獎勵值
最佳策略:
第一步agent_1選擇動作B,第二步agent-1和agent_2都選擇動作B
實驗結果:
在第二步。QMIX對獎勵值的預測也更加精確(是QMIX能對複雜函數進行表示的一種證明)大測試:StarCraft II星際爭霸Ⅱ平臺,本是一個即時策略遊戲,於2017年在《 StarCraft II: A New Challenge for Reinforcement Learning》一文中作為一種多智能體合作對抗平臺公布,並且開源在github,後繼成為一種流行的多智能體算法驗證平臺。平臺有很多的人物角色和遊戲場景。本文著重關注遊戲的分布式管理。
使用到的場景有:
單角色場景:3 Marines (3m), 5 Marines (5m), 8 Marines (8m),多角色場景:2 Stalkers and 3 Zealots (2s_3z)3 Stalkers and 5 Zealots (3s_5z)1 Colossus, 3 Stalkers and 5 Zealots (1c_3s_5z)Marines:陸軍 | Stalkers:追蹤者 | Zealots:狂熱者 | Colossus:巨人
離散動作空間:
move[direction]:direction(東、西、南、北)attack[enemy id]:只能攻擊在輻射範圍內的敵人評分:
每個時間步,agent收到的聯合價值等於對敵人造成的傷害總值。【殺一個敵人得10分,團滅得200】
每個agent的輸入:
視野範圍內的所有敵人和隊友的以下信息:【 distance, relative x, relative y and unit type】
對方與agent的距離、對方坐標(x,y)、對方的類型(在多角色場景才有)
全局狀態信息:
每個agent的狀態信息:【coordinate, health, shield ,cooldown,allied_last_action]
全局 坐標、生命值、護盾值、冷卻值、隊友們最近一次的動作
註:不同類型的agent的生命值和護盾值不同,所以要設置不同的場景
原算法測試
將QMIX網絡布置到各個訓練場景中訓練,得分為Table7(沒有其他的參照,沒啥用)
與其他的算法效果進行勝率比對,如figure_6,由圖可知
IQL VDN QMIX算法結果對比 在單角色場景
1)隨著角色的種類和數量的增多,3中算法均有不同程度的性能損失(可見在更加複雜的場景中,算法還任重道遠)
2)VDN和和IQL很難勝任多角色場景,但QMIX仍有比較好的表現
多角色場景
1)agent數量少時較少時(a,b),VDN表現效果不佳,大幅次於QMIX
2)agent數量少時較多時(c),VDN表現效果還好,略次於QMIX
3)IQL算法在多智能體合作場合,表現效果均不太好,可見合作類場景中,agent的相互交流非常有必要
Ablations:控制變量測試
目的:為研究QMIX網絡中 1)額外狀態信息、2)非線性擬合 的必要性,以下採用控制變量法,拿掉相關部分進行實驗來驗證其作用和效果
QMIX-NS:分析extra state information(額外狀態信息的重要性)
方法:拿掉hypernetwork,即權重不用神經網絡而是普通的變量
拿掉綠色框部分,W1,2直接用普通變量代替,所以紅框的額外狀態S也不用輸入到混合網絡中
QMIX-Lin:分析non-linear mixing (非線性混合的重要性)
方法:拿掉混合網絡的hidden layer(隱藏層)
就是去掉兩層mix網絡,用狀態S做一個權重將Q進行累加求和(相當於VDN的一個變式)
VDN-S:分析是狀態和mix網絡的影響誰佔主導地位
方法:直接給VDN累加求和後再加一個和狀態相關的量
模仿QMIX-Lin,將狀態輸入hypernetwork產生一個量,將這個量加和到原來的累加和中去
結果圖如下,可見1. QMIX的兩種消融(拿掉部分功能)的方案表現均遜於原QMIX,證明了原方案結構的必要性2. 其中QMIX-Lin、VDN-S表現雖然不如QMIX,但是也是有著不錯的效果,可見將額外狀態信息納入考慮是非常有必要的5 結論QMIX可以使用分解式表示來表示複雜的集中式值函數,該表示式可以很好地縮放代理的數量,並允許使用argmax操作在線性時間內提取分散式策略。
在絕對性能和學習速度方面,QMIX均優於IQL和VDN,特別的,該方法在使用異構代理(heterogeneous agents)的任務上顯示出可觀的性能提升。同時消融實驗也證明了狀態信息條件和Q值混合的必要性。
6 創新點就是將VDN簡單Q值的相加和改成了用一個MIX網絡,這個網絡有兩個特點
神經網絡的參數由與額外狀態做輸入的hypernetwork生成7 相關工作多智能體的一個核心問題就是智能體間的通訊,這裡列出一些相關的研究
CommNet:(Sukhbaatar et al., 2016) 使用一種中心化的網絡結構在智能體之間交換信息
BicNet:(Peng et al., 2017) 在AC(actor-critic)架構中,採用bidirectional RNNs在智能體之間傳遞信息
其中經典論文:《Learning multiagent communication with backpropagation》(nips 2016)
上文提及的在完全中心化的工作:
COMA (Foerster et al., 2018) 使用中心的critic去訓練分布式的actors,給每個agent評估一個優勢函數去解決多智能體的credit分配Gupta et al. (2017)對每個agent評價都用一個AC架構單元,可以解決智能體數量太多不易訓練的問題,但同時中心化訓練的優勢也會減少Lowe et al. (2017)給每個智能體都學習一個中心化的critic,並將其成功應用於連續動作空間的多智能體競爭場景上以上工作均是要用on-policy 的方式實現,這樣可能會導致樣本使用效率低和算法陷入局部最優的問題發生
StarCraftⅡ平臺已經成為一種多智能體算法驗證的基準平臺,以下是已有的相關研究
Usunier et al. (2017) 展示了一種中心化的貪心MDP和一介優化方法Foerster et al. (2017、2018):評估 IQL 在戰鬥場景中的重播穩定方法,最多配備 5 個agent以上論文:
《Episodic Exploration for Deep Deterministic Policies: An Application to StarCraft Micromanagement Tasks》(ICLR 2017)
《Multiagent Bidirectionally-Coordinated Nets: Emergence of Human-level Coordination in Learning to Play StarCraft Combat Games. a》(arXiv 2017)
《Stabilising Experience Replay for Deep Multi-Agent Reinforcement Learning》(ICML 2017)
《 Counterfactual multi-agent policy gradients》(AAAI 2018)
關於hypernnetwork的工作
《HyperNetworks》(ICLR 2017)