COMA(一): Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解
Learning to Communicate with Deep Multi-Agent Reinforcement Learning 論文講解
論文鏈接:https://papers.nips.cc/paper/6042-learning-to-communicate-with-deep-multi-agent-reinforcement-learning.pdf
(這篇論文是COMA三部曲中的第(一)篇:讓Agent學會如何去通信)
1. 問題提出(解決了什么問題?)
該論文主要解決了在多智能體和每個智能體只能部分觀測情況下,各個智能單位間如何通信的問題。通過強化學習的方式最終使得智能體能夠學會如何進行通信(即學出一種通信協議)。最終學習出的協議其實是一個|m|維的向量,添加到Q網絡的輸入中起到影響決策的作用。
2. 介紹
2.1 論文結構
整個論文分為三個部分:
- 假設出一些需要通訊和多智能體協同的任務
假設出的任務必須具備以下3個條件:需要個體之間配合完成、 個體觀測不完整(即單個個體無法感知環境中所有信息)、個體決策帶有時序性。所有Agent都有共同的學習目標:采取不同的行為使得一個Reward總值最大化,這個總值是所有Agent全局共享的。
在學習場景中,每個Agent不僅可以采取一個與環境互動的行為,還可以采取一種”通訊“行為——通過一個有帶寬限制的通道告訴其他Agent一些自身觀測到的環境信息。由于部分可觀測性和通訊受限性,Agent需要學習出一種通訊協議來規劃協同他們的自身行為。
- 提出適用于以上場景的幾個學習算法 —— RIAL / DIAL
該論文使用中心式學習-去中心式執行的方法,即訓練過程中各單位之間可以進行無限制通訊,學習完成后最終應用時會受到通訊限制。論文中一共提出了兩種approach:
1- Reinforced Inter-Agent Learning (RIAL)
用一個循環的Deep Q-Learning網絡(RNN + DQN)來解決部分可觀測問題,其中,RIAL又有2種不同的變種方法:
(a) 每一個agent單獨學習一個屬于自己的Neural Network,將其余agent看作是環境的一部分。
(b) 只訓練一個global的Neural Network,所有agent共享這個網絡的參數。
2- Differentiable Inter-Agent Learning (DIAL)
盡管在RIAL的第二種變種方法中,通過參數共享的方式模擬了agent之間的信息共享,但是卻沒有很好的模擬agent與agent之間"通訊"的過程。DIAL的設計思路中使得在訓練過程中,不同agent之間可以傳輸真正的”梯度消息“,在原文中被稱為"real-valued message"。
- 分析這些算法是怎樣進行通訊協議的學習的
3. 相關知識背景
閱讀本論文需要用到以下幾個知識背景:
4. 論文實驗環境設定
論文的環境設定概括為以下幾個規則:
(1) 自身對環境的私有觀測otao_t^aota?
(1) 用于與環境交互的行為utau_t^auta?,該行為會影響環境并獲得一個reward值。
(2) 用于通訊的“通訊行為”,該行為可被其他agent觀測到,但并不會對環境造成影響,也沒有reward值。
5. 算法講解
5.1 Reinforced Inter-Agent Learning (RIAL)
在每一個agent上訓練一個DRQN網絡,每個agent的Q-network可以表示為
Qa(ota,mt?1a,ht?1a,ua)Q^a(o_t^a, m_{t-1}^a, h_{t-1}^a, u^a) Qa(ota?,mt?1a?,ht?1a?,ua)
其中:
ota→o_t^a \qquad \rightarrow \qquadota?→ agent當前的環境觀測
mt?1a→m_{t-1}^a \qquad \rightarrow \qquadmt?1a?→來自其他agent在上一時刻觀測到的消息
ht?1a→h_{t-1}^a \qquad \rightarrow \qquadht?1a?→ agent自身的hidden state,hidden state取決于該agent之前遇到的state history
ua→u^a \qquad \rightarrow \qquadua→ 當前agent采取的行為u
將整個 QQQ-NetNetNet 網絡劃分為兩個QQQ網絡 QuQ_uQu? 和 QmQ_mQm?,u網絡是用來評價環境的Q-value,m網絡用來評價通信行為的Q-value,也就是說,QQQ-NetNetNet 會有兩個輸出|U|和|M|,動作選擇器(Action Select)會根據這兩個值分別選擇“環境行為”和“通訊行為”。在training過程中,會調整網絡參數使得U值最大,然后才是使M值最大,這意味著“環境行為”要比“通訊行為”更值得關注。RIAL整個示意圖如下:
圖中是兩個不同的agent,上層是Agent 2,下層是Agent 1,橫軸是時間軸。紅色箭頭代表計算的梯度信息。Agent 1觀測到環境信息ot1o_t^1ot1?,并接收到來自上一個時刻Agent 2發來的通訊信息mt?12m_{t-1}^2mt?12?,以及自身的隱藏狀態信息ht?11h_{t-1}^1ht?11?,將這3個參數輸入到QQQ-NetNetNet中會得到兩個output值|U|和|M|,這兩個值輸入Action Select模塊中選擇出兩個行為mt1m_t^1mt1?(通訊行為)和ut1u_t^1ut1?(環境行為)。注意:通訊行為mt1m_t^1mt1?是沒有reward,也沒有梯度信息;只有環境行為ut1u_t^1ut1?與環境交互之后才能夠獲取一個來自環境的reward并計算梯度,回傳到 QQQ-NetNetNet 更新網絡參數。
因此,在RIAL中,參數更新只是在單agent網絡上進行更新,由于mtm_tmt?行為沒有reward,梯度無法在多個agent中間傳遞,所以無法給出agent做出這一次通訊行為后效用評判。RIAL模型更像是在訓練agent“我接收到的來自其他agent的通訊信息在我這次決策中所占的比重是多少”。也就是說,這樣的訓練模型只能教會agent“信不信”來自其余agent的通訊信息,而無法教會agent在這一時刻應不應該“發送”通訊信息。
訓練所使用的模型
QuQ_uQu? 和 QmQ_mQm?兩個模型都使用DQN網絡模型,但是做了以下兩個變動:
參數共享的變種方法
RIAL的一種參數共享的變種方法中提到,讓所有Agent共享一個神經網絡,利用參數共享的方式來加快收斂速度。這種情況下,agent一共需要學習兩個Q網絡這兩個網絡的輸入一樣,只是最后訓練的時要擬合的target值不一樣。
Qu(ota,mt?1a,ht?1a,ut?1a,mt?1a′,a,uta)Q_u({o_t^a, m_{t-1}^a, h_{t-1}^a, u_{t-1}^a, m_{t-1}^{a'}, a, u_t^a }) Qu?(ota?,mt?1a?,ht?1a?,ut?1a?,mt?1a′?,a,uta?)
Qm(ota,mt?1a,ht?1a,ut?1a,mt?1a′,a,uta)Q_m({o_t^a, m_{t-1}^a, h_{t-1}^a, u_{t-1}^a, m_{t-1}^{a'}, a, u_t^a }) Qm?(ota?,mt?1a?,ht?1a?,ut?1a?,mt?1a′?,a,uta?)
Note: aaa 是該agent在所有agent隊伍中的索引值(編號)
兩個Qfunciton的接收相同的Input值,但在訓練的時候一個最大化|U|值,一個最大化|M|值。
5.2 Differentiable Inter-Agent Learning (DIAL)
在5.1中也提到了,DIAL方法的缺點在于無法在不同agent中傳遞梯度。DIAL方法允許agent在采取一次通訊行為mtm_tmt?之后得到一個回報值,以此來告訴agent這一次采取通訊行為的效用。DIAL將“通訊行為”直接替換成了“把一個agent網絡的輸出直接傳輸到另一個agent網絡的輸入”,這樣就為通訊行為建立了一個可以反向傳播reward的通道。為了實現這個方法,該方法把原來的QQQ網絡改為了一個名叫 CCC-NetNetNet 的網絡。
C網絡接收2個input:
- 來自環境的觀測信息oto_tot?
- 來自另一個agent傳來的通訊消息,該消息是一個連續型變量(非離散值,可理解為是一個分布函數)
C網絡輸出2個output:
-
Q(·),這是state-action的Q值,用于輸入action select進行行為的選擇。
-
mtam_t^amta?,這是一個實數向量 (real-value vector),這個向量不會傳入action select模塊,而是轉換成消息直接傳遞給下一個agent。怎么轉換成消息呢?這個向量從C-Net輸出后會經過DRU(discretise/regularise unit,離散合法化單元)進行數據處理,DRU(mta)=Logistic(N(mta,σ))DRU(m_t^a) = Logistic(N(m_t^a, \sigma))DRU(mta?)=Logistic(N(mta?,σ)),其中σ\sigmaσ是這個模型的標準差。這一步的主要作用是將離散的信息向量轉換成一個連續的分布。以上是在做中心式學習的時候的步驟,在最終去中心式執行(即模型訓練好后要用于實際實驗的時候)又需要將連續的分布做離散化處理。
以下是DIAL的數據傳輸示意圖:
圖中是兩個不同的agent,上層是Agent 2,下層是Agent 1,橫軸是時間軸。紅色箭頭代表計算的梯度信息。可以看到C-Net有兩個輸出,一個輸出Q(·)輸出了Action Select模塊用于選擇環境行為ut1u_t^1ut1?,與環境互動后會得到一個reward返回給C-Net網絡;另一個輸出mt1m_t^1mt1?(離散的實數向量)直接輸入到DRU模塊進行”離散轉連續“變換后(變成了連續型的變量)輸入到Agent 2的C-Net中,當Agent 2的C-Net得到了來自環境的回報 rt+12r_{t+1}^2rt+12? 后會回傳給C-Net并去計算mt1m_t^1mt1?的梯度信息,這樣就能夠將通訊行為所產生的梯度信息回傳給Agent 1,用于通訊行為的梯度更新了。
Note:為什么要進行DRL(離散轉連續)這一步?這是因為,C-Net只能產生離散的向量信息(把輸出層的所有神經元的輸出值并在一起時一個離散的向量),但是離散的向量是無法進行梯度更新的(離散的數根本無法求導),因此將離散的數字想辦法變成一個連續的分布,這樣就可以進行梯度更新了。因此,要想建立兩個Agent之間C網絡的通信信道,并且能夠通過計算行為的梯度進行更新,“離散-連續”轉換是非常重要的一步,也是該論文的核心創新思想。
5.3 Comparation of two methods
在RIAL和DIAL都是基于DQN的Loss來進行通訊行為的學習(環境行為兩種方法都一樣的),但學習的方式有以下幾處不同:
-
DIAL中由接收方直接傳遞給發送方的誤差梯度信息,這樣能夠更明顯的建立“通訊”的行為相關性;而RIAL中沒有建立“通訊行為”的“通道”,DQN誤差是由“環境行為”和“通訊行為”共同導致的,最終“環境行為”導致的誤差也會被看作是“通訊行為”的選擇錯誤,但很有可能此時“通訊行為”并沒有任何問題。
-
在RIAL中,直接使用DQN的Loss來進行學習,得到reward始終是一個一維非零的數值;而DIAL中回傳的是一個|m|維的梯度信息,多維度比單維度能夠包含更多的行為信息,可以學習到的知識更豐富。
-
在DIAL中可以處理連續型action問題,而RIAL只能處理離散型action問題。
6. 實驗
6.1 實驗環境
在論文中使用了一個囚犯通信的場景進行算法實驗,場景故事如下:
有n個囚犯被關在監獄中,他們每個人都被獨立關在自己的小房間內,彼此間不能通信。每天監獄長會挑選其中一個囚犯來到審問室,審問室中只有一盞燈泡,被挑選的囚犯可以選擇點亮或熄滅這盞燈泡。此外,在審問室中的囚犯可以擁有一次“猜測”的機會,猜測所有的囚犯都已經來過審問室了,如果發出猜測后確實所有囚犯都來過審問室了,那么所有囚犯被釋放;如果猜測是錯誤的,則所有囚犯被處死。
在這個故事中,在審問室的囚犯擁有觀測ota∈o_t^a \inota?∈ { 0,10, 10,1 },0代表燈是滅的,1代表燈是亮的,其余囚犯沒有observation。在審問室的囚犯的環境動作空間uta∈u_t^a \inuta?∈ {"Tell","None""Tell","None""Tell","None"},通訊行為$m_t^a \in $ { 0,10, 10,1 },即打開/關閉燈泡;而其他囚犯的動作空間只有{"None""None""None"}。通常情況下reward都是0,直到有人發起“猜測”行為,猜對則+1,猜錯則-1。
6.2 實驗結果
下面是實驗結果,其中n代表囚犯數。-NS代表不使用參數共享時的結果,即每個囚犯訓練自身單獨的網絡。NoComm代表不加入通信因素的結果。
值得注意的是(b)圖中的RIAL-NS的方法效果還沒有不加入通信協議時好,這充分說明了要想讓每一個agent獨立學習一個屬于自己的網絡模型是相當困難的。
總結
以上是生活随笔為你收集整理的COMA(一): Learning to Communicate with Deep Multi-Agent Reinforcement Learning 论文讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王道408数据结构——第八章 排序
- 下一篇: COMA(二):Counterfactu