鄧暉奕,李勇振,尹奇躍
(1.北京建筑大學 電氣與信息工程學院,北京 102616;2.廈門大學 自動化系,福建 廈門 361002;3.中國科學院 自動化研究所,北京 100190)
多智能體系統(Multi-Agent System,MAS)是在同一個環境中由多個交互智能體組成的系統,該系統常用于解決獨立智能體以及單層系統難以解決的問題。如今,現實世界大規模決策問題的建模依靠單智能體的解決方案難以滿足各種資源與條件的限制,MAS 因其較強的實用性和擴展性,能夠將大而復雜的系統建設成小而彼此互相關聯的易于管理的系統。自提出以來已經在諸多領域都得到廣泛應用[1]。
強化學習(Reinforcement Learning,RL)作為機器學習的一類,它是為了描述和解決智能體在與環境的交互過程中以最大化獎勵為目標來學習策略的問題[2]。近年來,隨著科技的發展,計算能力與存儲能力大幅提高,深度學習在諸多領域取得顯著成就。深度學習和強化學習的結合就在此背景下應運而生,產生了深度強化學習(Deep Reinforcement Learning,DRL),同時也成為眾多學者的熱門研究對象,它將感知、學習、決策匯集到一個架構中,實現了從輸入到執行動作“端到端”的感知與決策,并在游戲、機器人等領域取得了較大的突破[3-5]。
DRL 的巨大成功推動了多智能體領域的發展,研究人員為了解決環境中的眾多復雜的問題開始嘗試將DRL 方法和MAS 結合在一起,這就產生了多智能體深度強化學習(Multiagent Deep Reinforcement Learning,MDRL),科研人員研究了眾多應用于各類領域的算法、規則、框架。在機器學習甚至人工智能領域中,MDRL 由于其具有極高的研究價值正在成為當下的研究熱點之一[6]。
多智能體技術在各個領域深入應用的同時,也遇到了諸多瓶頸,典型如環境的非平穩性問題、非完全觀測問題、多智能體訓練模式問題、多智能體信度分配問題、過擬合問題等。非平穩性問題指的是在訓練過程中因智能體不斷改變其策略從而導致的多智能體環境的非平穩性。在單智能體強化學習中,智能體只需要根據自身動作和環境交互即可完成學習任務;而在多智能體環境中,每個智能體不僅要考慮自身動作對環境造成的影響和與之帶來的回報,還要觀測其他智能體的行為及其影響,由于這些交錯復雜的交互和相互聯系過程使得環境一直在動態地變化;同時,智能體間動作及策略的選擇相互影響,這使得回報函數的準確性降低,一個良好的策略會隨著學習過程的推進不斷變差。環境的非平穩性大幅增加了算法的收斂難度,降低了算法的穩定性,并且打破了智能體的探索和利用平衡[7]。
為解決多智能體深度強化學習中的環境非平穩問題,許多學者基于深度Q 學習算法提出了多種改進方案:Casta?eda[8]提出了兩種改進方法:一種是通過改變值函數的方式;二是改變回報函數的方式分別提高智能體之間的相關聯性。Diallo 等[9]將并行運算機制引入到深度Q 學習中,使多智能體可以在非平穩環境中收斂。Foerster 等[10]為了使算法適用于多智能體非平穩環境改進了記憶庫機制,同時提出了兩種方法:一是為標記記憶庫中重要的數據,丟棄之前的不適應環境的數據;二是為每個從記憶庫中取出的數據做時間標記,從而提高訓練質量。目前針對該問題的解決方法種類繁多,也是未來多智能體強化學習領域研究方向的熱點之一。
在多智能體系統中,每個智能體的策略不僅受自身的策略動作和環境的反饋獎勵所影響,也會受到其他智能體的行為和合作關系的影響。比如在對環境有完全觀測能力的條件下,全局狀態可以在每個時間步中被獲得,然后智能體能夠根據相應策略選擇執行動作;而當智能體對環境只有局部觀測能力時,智能體就只能利用局部觀測值并結合自身策略來選擇執行動作。智能體之間是合作關系時,所有智能體所獲得的獎勵相同,它們為一個相同的目標而努力;而當智能體之間是競爭關系時,由于獎勵值的多樣性會使多智能體強化學習更加復雜。
將強化學習從單智能體系統推廣到多智能體系統的兩種思路為分布式學習和集中式學習。
分布式學習方法 對每個智能體分別做強化學習算法,對智能體而言,其他智能體被視作環境的一部分。分布式學習又分為獨立式學習(Reinforcement Learning Individually,RLI)與群體式學習(Reinforcement Learning in Groups,RLG)。
1)在RLI 中每個智能體有獨立的學習過程,它不用關心其他智能體的信息,只需要考慮環境中的信息,擁有極高的獨立性,并且智能體個數的變化對學習收斂性影響很小。典型算法如獨立式Q 學習(Independent Q-Learning,IQL)[11]算法,其主要思路是將其余智能體直接看作環境的一部分,在智能體學習的過程中每個智能體獲得其局部觀測值,然后調整每個智能體的策略以達到最大化整體獎勵值。
2)RLG 中,智能體狀態和動作都是動態組合的,每個智能體的Q 函數表是組合后的映射。與RLI 不同,RLG 中每個智能體都需要考慮其他智能體的信息,所以其狀態空間和動作空間都非常大,進而導致其學習速度緩慢,所以此方法只適合智能體很少的情況,并且通常會加入加速算法進行優化。RLG 方法的限制在于其狀態和動作空間都會隨著智能體個數指數增長,需要花費大量的時間來學習[12]。
集中式學習方法 集中所有智能體的狀態空間和動作空間,再使用單智能體強化學習算法訓練,輸入是整個多智能體系統的信息,輸出是每個智能體的動作。隨著智能體的增加,勢必會造成狀態空間和動作空間過大,以致于無法進行有效的探索和訓練[13]。
目前多智能體深度強化學習算法常用的結構“集中式訓練-分布式執行”(Centralized Training with Decentralized Execution,CTDE)結合了兩者的思路,相關概念及框架敘述如下。
集中式訓練指的是在訓練中使用聯合動作行為值函數對智能體進行訓練,即將所有智能體看作一個整體,并且在訓練時,每個智能體可以無限制地獲取其他智能體的信息;而分散式執行是指智能體只能根據自身觀測到的部分信息以及其他智能體的有限信息來選擇執行動作。由于多智能體強化學習常在模擬環境中進行訓練,因此實際硬件條件不會對智能體之間的通信造成限制,這也使智能體更容易獲得額外的環境狀態,有利于CTDE 結構的實際應用。也正因為其結構擁有許多優勢,使它被認為是多智能體強化學習領域的典型學習結構之一。
2017 年,為了解決多智能體信用分配(Multi-Agent Credit Assignment)問題,DeepMind 團隊提出了一個基于CTDE 框架的值分解網絡(Value Decomposition Network,VDN)[14],其主要思路為每個智能體根據自己對團隊的貢獻,優化各自的目標函數。具體是把整體值函數Qtot(τ,u),τ∈T進行分解,其中T表示聯合狀態-動作歷史,u表示聯合動作。分解將會得到每個智能體a的值函數Qa(τa,ua;θa),并將其作為各智能體執行動作的依據,其中θa為每個智能體值函數的網絡參數。其優點在于結構簡潔,分解得到的Qa可以使得智能體可以根據自己的局部觀測值選擇動作來執行分布式策略:

對于一些簡單的任務,VDN 算法十分高效,但同樣存在對于一些大規模的多智能體優化問題,它的訓練效果會大打折扣的缺點。根本原因在于VDN 只是以簡單的求和方式分解Qtot函數,缺少值函數分解的有效的理論支持,使得多智能體Q 網絡的擬合能力很受限制。
QMIX 算 法[15]則 在VDN 基礎上采用一個混合網絡(Mixing Network)替代VDN 中直接求和的操作,該網絡對單智能體局部值函數進行合并,并在訓練學習過程中加入全局狀態信息輔助來提高算法性能:

為了能更好地利用全局狀態信息,QMIX 算法采用一種超網絡(Hyper Network),將狀態作為輸入,輸出為混合網絡的權值及偏移量;同時為了使權值不小于零,采用一個線性網絡以及絕對值激活函數保證輸出不為負數。使用相同但沒有非負性的約束的方法處理偏移量,混合網絡最后一層的偏移量通過兩層網絡以及ReLU(Rectified Linear Unit)激活函數得到非線性映射網絡。由于狀態信息是通過超網絡混合到Qtot中的,而不只是簡單地輸入到混合網絡中,所以它的優勢在于,如果輸入的狀態值均大于零,那么就無法充分利用狀態值來提升算法性能,等于舍棄了一半的數據量。相關實驗[15]表明,在星際爭霸Ⅱ學習環境(StarCraftⅡ Learning Environment,SC2LE)中的多個場景中,QMIX 算法比VDN 算法表現更優。
本文在QMIX 算法的基礎上引入通信模型以實現多智能體間的有效交流,同時引入好奇心機制,使智能體在稀疏獎勵的環境中有更好表現。算法結構如圖1 所示。

圖1 算法結構Fig.1 Algorithm structure
改進后算法引入智能體網絡[16]替代QMIX 結構中的Qa網絡,新的Qi(ot,ht-1,·)定義為:

其中:ot、ht-1分別表示智能體在t時刻的觀測值和智能體網絡隱藏層歷史信息,表示智能體j在t時刻的GRU 模塊輸出結果[16]。
這樣做能有效提高智能體訓練時有效信息的提取速度和利用率;同時,改進算法在智能體執行動作過程中加入智能體通信協議算法[16],讓智能體有條件地交流信息,雖然這種做法與傳統的“集中式訓練-分布式執行”結構有所沖突,但是在保持整體結構相對完整的情況下,在執行過程中使智能體間主動且有選擇地相互通信,能夠消除環境所帶來的噪聲和有效信息量較少的信息,得到更好的訓練效果。
為了在智能體之間通信時限制一個智能體從其他智能體得到信息的方差,算法引入了信息編碼器的輸出fenc(·)作為損失函數的一個額外損失項,算法損失函數定義為:

在這里it、rt分別表示t時刻的內在獎勵和外部獎勵,γ∈[0,1]為折扣因子,θ-為目標網絡參數。
同時,為了進一步緩解環境非平穩性問題及其所帶來的智能體探索與利用平衡問題和提高算法在稀疏環境中的魯棒性,改進后算法引入好奇心機制即內在獎勵it,其原理是當智能體訪問新穎狀態時予以鼓勵,以此提高智能體探索未知狀態的可能性,從而幫助智能體找到潛在的更好的狀態。加入內在獎勵后的算法獎勵函數定義為:

本文算法使用“端到端”的方式進行訓練,訓練過程中采用在線網絡與目標網絡兩個神經網絡的方式訓練。目標網絡用于計算Q現實,在線網絡用于計算Q估計。通過最小化Q現實與Q估計的差值訓練神經網絡參數,使其更逼近于真實的Q函數。
訓練深度神經網絡時,通常要求樣本之間是相互獨立的,這種隨機采樣的方式大幅降低了樣本之間的相關性,使算法更加穩定。基于這種原因,本文算法也采用隨機采樣的方 式,從記憶庫中隨機抽取小批量樣本(st,ot,ut,rt,st+1,ot+1),因此根據狀態s選取的相關軌跡也是具有隨機性的,這保證了算法的穩定性。算法偽代碼如下所示:
輸入 訓練輪次N,每輪訓練的長度K,觀測值的步數M。
輸出 智能體網絡參數θ。

在多智能體強化學習中,所有智能體在一個共享的環境中相互交流,但每個智能體只能獲得環境的部分觀測值,同時每個智能體需要基于這些部分觀測值和來自其他智能體的間接或直接的交流信息作出決策,這就導致復雜的交流模型面臨巨大的挑戰[7]。特別是在訓練過程中,每個智能體都在動態地調整策略,這將造成環境的非平穩性。與此同時,每個智能體可能會被其他智能體的行為所影響從而使自身策略過擬合。為了緩解此問題,本文采用了基于方差控制的有效交流通信模型(Variance Based Control,VBC)算法[16]對QMIX 算法進行改進。
VBC 算法的思想是:讓智能體在執行過程中只采用有效信息進行交流。具體做法是通過在交換的信息的方差上插入一個額外的損失項來提取信息中有意義的部分。這樣可以提高對有效信息的提取速度和利用率,有利于每個智能體的訓練;此外,與以前的傳統的通信模型不同的是,VBC 不需要一個額外的決策模塊來動態地調整通信模式,而是每個智能體先根據其自身信息作出初步決定,只有當它對這一初步決定的置信水平較低時才啟動通信,這能大幅降低模型的復雜性;同時,在收到通信請求時,智能體只在其信息有效時才回復請求。因為只在智能體之間交換有效信息,VBC 算法既提高了智能體的性能,又大幅降低了執行過程中的通信開銷。最后,從理論上證明,算法可以保證訓練的穩定性。


強化學習是通過最大化策略的預期收益來實現的。當環境中存在稠密獎勵時,強化學習可以通過隨機抽取行動序列來獲得獎勵,這種方法十分有效,但當獎勵變得稀疏且難以找到時,往往會難以獲得獎勵。在現實中,為多智能體強化學習的每項任務都設計密集的獎勵函數往往不切實際,所以有必要采用定向方式探索環境的方法[17]。為了在獎勵稀疏環境下幫助智能體探索潛在的更好的狀態,本文引入了好奇心(Curiosity)機制對算法進行改進。
本文采取了隨機網絡提煉(Random Network Distillation,RND)[18]算法,RND 算法是一種基于預測的獎勵方法,其思想是讓智能體從經驗中學習下一個狀態的預測模型,并使用預測誤差作為內在獎勵來增強智能體的“好奇心”,激勵它們探索潛在的未知狀態。具體而言,RND 算法設計了兩個神經網絡計算內在獎勵:一個是固定且隨機初始化的目標網絡,它設定了預測問題;另一個是根據智能體收集的數據訓練的預測網絡。其中目標網絡f:O →Rk將智能體觀測值ot+1作為輸入且在學習過程中不進行更新,預測網絡:O →Rk同樣將ot+1作為輸入,在學習過程中通過梯度下降進行訓練,與目標網絡f進行比較來最小化均方誤差并更新其網絡參數。
在學習過程中,隨機初始化的目標網絡將會被提煉成一個經過訓練的網絡,當遇到與預測網絡所訓練的狀態不同的新狀態時,產生的預測誤差將會變得更高,智能體內在獎勵it也隨之變大,以此來激勵智能體采取不同的動作與環境交互。RND 算法偽代碼如下所示:

實驗所采用的計算機硬件配置為NVIDIA Geforce1070 GPU,32 GB RAM,Intel Core i7-9700F CPU,操作系統為Windows 10。使用Pytorch 作為搭建算法的代碼框架,采用PyCharm 2021.1.1 x64 作為仿真工具,在星際爭霸Ⅱ學習環境(SC2LE)下對算法進行模擬測試。
所有智能體的動作空間由一組離散的動作組成:Move(Direction)、Attack(EnemyID)、Stop 和 Noop。Move(Direction)表示朝某個方向移動,其中方向只有東、南、西、北4 個選項;Attack(EnemyID)表示攻擊ID 為EnemyID 的單位,值得一提的是,只有敵人在攻擊范圍內才能執行該動作,這種做法有利于問題的離散化,并可以禁止使用游戲中一邊攻擊一邊移動的動作;Stop 和Noop 兩個動作分別表示停止行動和不采取行動。此外,實驗中單位在空閑時將禁用以下動作:對敵人射擊作出反應和對處在射程內的敵人進行射擊。這么做的原因是可以迫使智能體進行探索,從而找到最優的戰斗策略,而不是依賴SC2LE 中內置的工具。
環境的部分可觀察性體現在引入了單位射擊范圍,它限制了智能體接受超出范圍的友方智能體或敵方單位的信息。此外,智能體只能觀察到在視野中活著的單位信息,不能分辨狀態為死亡和不在視野范圍的單位。
在每個時間步中,智能體獲得的聯合獎勵等于對敵方單位的總傷害量。此外,智能體擊敗每個敵方單位都能獲得100 分的獎勵,如果擊敗所有敵軍,能獲得200 分的獎勵。最后,為了方便比較,將所獲得的獎勵轉換為上限為20 的獎勵值。
在SC2LE 中,每個智能體控制一個單獨的軍隊單位。為了驗證算法有效性,本實驗按照難度考慮了6 個不同的戰斗場景:簡單(3m、2s3z),較難(3s_vs_4z、3s_vs_5z)和極難(5m_vs_6m、6h_vs_8z),并使用兩種算法加以驗證。為了衡量每種算法的收斂速度,實驗將每隔200 個epsode 停止訓練并對訓練模型進行保存,每隔5 000 或10 000 時間步運行20個episode 測試模型勝率。
由于場景的難度不同,所以訓練的時間步數也各不相同。在每個場景中每種算法訓練了3 次,圖2 為每種算法在不同場景下訓練的平均勝率,其中陰影部分為其置信區間(95%)。

圖2 兩種算法在6個場景下的勝率對比Fig.2 Win rates of two algorithms under six scenarios
實驗結果表明,在簡單場景中,QMIX 算法與改進算法都能收斂到較高的勝率,但改進算法在執行過程中使智能體間主動且有選擇地相互通信,能夠消除環境所帶來的噪聲和有效信息量較少的信息,所以算法在收斂速度和穩定性上有更好的表現;在較難場景中,在相同的訓練步數中,改進算法訓練勝率高于QMIX 算法;在極難場景中,智能體難以擊敗對手,獎勵也難以獲取,在這種獎勵較為稀疏的環境且訓練步數有限的情況下QMIX 算法無法訓練有效的智能體,相比之下,改進后的算法引入了好奇心機制,智能體根據下一步觀測值來計算出內在獎勵,使智能體具有一定的探索性,在獎勵較為稀疏的環境下能夠提高算法的收斂速度。
為了進一步驗證算法的有效性,實驗將改進算法分別與單獨引入通信的VBC 算法和單獨引入好奇心機制的RND 算法進行對比,同時,給出原始的QMIX 算法訓練結果以作為基線參考。
具體實驗參數設置與3.3 節設置基本一致,其中不同的是此次消融性實驗在兩個極難的戰斗場景(corridor,6h_vs_8z)下進行訓練,每隔10 000 時間步運行20 個episode 測試模型勝率,同時,為了衡量每種算法的收斂速度,實驗將每隔200 個episode 停止訓練并對訓練模型進行保存。
從圖3 實驗結果可以看出,當實驗環境收斂難度較高時,除改進算法外的其他三種算法均不能收斂出很好的效果。在corridor 場景下,QMIX 算法難以訓練出有效的模型,相比之下,VBC 算法與RND 算法的實驗勝率均有小幅度提升,而改進算法所提升的性能更高,所訓練出的智能體可以大概率擊敗對手;在6h_vs_8z 場景下,RND 算法因其具有一定的探索性,在獎勵稀疏的場景中的表現比VBC 算法表現稍好,但在該收斂難度極大的場景中仍可以明顯地看出,改進算法結合了兩者特點訓練出了性能更高的模型??傊?,相較于原始的QMIX 算法,在極難環境中,引入通信的VBC 算法與引入好奇心機制的RND 算法表現更好,但所提升的幅度有限,而改進算法可以訓練出更有效的模型。

圖3 兩個極難場景下四種算法的勝率對比Fig.3 Win rates of four algorithms under two super hard scenarios
綜合3.3 節的實驗結果來看,相較于QMIX 算法,本文改進算法因引入了通信機制,加強了智能體間有效信息的交流,具有更好的性能和穩定性。此外,在VBC 算法難以收斂的獎勵稀疏環境中,本文改進算法因引入了好奇心機制,提高了智能體探索未知狀態的可能性,所以仍可以訓練出更為有效的模型,算法性能更好。
本文針對強化學習中環境的非平穩性問題,提出了一個基于多智能體間通信與探索的QMIX 改進算法。環境的非平穩性會增加算法的收斂難度,降低算法的穩定性,并且打破智能體的探索和利用平衡。本文提出的改進算法分別從智能體間通信和探索的兩個角度出發對QMIX 算法進行改進,緩解環境非平穩性問題。實驗結果表明,與原算法相比,算法性能更高。在未來研究中,將進一步在更復雜的場景下進行算法性能的驗證。