多智能体强化学习_基于多智能体强化学习主宰星际争霸游戏
大家好,今天我們來介紹基于多智能體強化學習主宰星際爭霸游戲這篇論文
Grandmaster level in StarCraft II using multi-agent reinforcement learning?doi.org從Alphastar以后 利用強化學習的方法進行星際爭霸2AI的又一大突破。
Part1 前言
游戲介紹(Introduction to the Game)
游戲簡介
? 既然是打星際爭霸的論文,那么我們首先看下什么是星際爭霸
《星際爭霸II》是一個實時進行的戰略游戲。你可以從上帝視角觀察和指揮部隊,爭奪戰場的控制權,并最終擊敗你的對手。游戲的單人游戲戰役主要聚焦于人類種族,但你可以在多人游戲比賽中使用以下三個《星際爭霸II》的種族的任意一個:人類、星靈和異蟲。
每個種族都擁有其獨特的單位;這些單位在戰場上各自有其特定的角色。結合不同的單位來組成一支多功能的部隊,是走向勝利的常規道路之一。
你能指揮的最基礎的單位是工人。他們會采集資源,讓你用來擴張基地,以及為你日漸龐大的部隊招兵買馬,同時他們也能建造新的建筑。一些高級單位在你的基地達到特定要求之后就會解鎖,你需要建造特定建筑,或者研究相應的科技。
在多人游戲比賽中,如果你將地圖上敵人的所有建筑都摧毀,或者敵人向你投降,那么你就贏得了比賽。
視頻介紹
星際爭霸介紹https://www.zhihu.com/video/1200527176032047104總結來說:
1.《星際爭霸2》是一款RTS(即時戰略)游戲,說白了就是造農民采礦、造建筑、造兵、攀科技,最后派兵拆光對手的建筑。
2.與圍棋相比,雖然都屬于零和博弈,但還多了不完全信息(比如對手的信息是看不到的)、輸入輸出狀態空間更龐大、存在海量先驗信息、游戲預測困難的問題。
重大挑戰與解決方案(Major challenges and solutions)
下面我們分別從游戲層面和算法層面解釋這篇論文之前,強化學習解決星際爭霸2AI遇到了哪些問題,以及這篇論文所做出的改進,箭頭前面表示問題后面就是該論文的解決方案與改進。
游戲層面
- 群體博弈 -> League Learning
- 不完全信息 -> LSTM
- 長期規劃/回報稀疏 -> TD(λ) & UGPO
- 實時控制(APM有限值)-> Monitoring layer
- 超大狀態空間 -> self-attention & scatter connection
- 超大動作空間 -> auto-regressive policy
算法層面
- 自博弈循環 ->PFSP
- 自博弈偏移 ->baseline condition (z)
模型構建(Model Building)
先來給大家一個直觀的感受,我們的智能體到底輸入了(看到了什么)以及它是怎么認知的,以及最后他輸出了什么。
下面我們來看一下整個模型的網絡結構。
Part 2 網絡結構
網絡結構介紹
網絡結構- 整體上使用AC框架,與強化學習中使用AC的Cartpole對比,Alphastar不是一般的將輸入放在一起輸入一個CNN,而是對于不同的輸入類型,進行不同的操作,經過不同的網絡輸出。
- 總的來看,輸入有基準特征(baseline features),標量特征(scaler features),實體列表(entities)和minimap組成。
- 值函數網絡輸出數值,而策略網絡輸出了五項內容。他們具體是什么,我們接下來具體分析。
- Alphastar的網絡結構設計的很精妙。我認為他的設計思路是
- 對于一般特征的提取就用多層感知器
- 對于圖像信息的處理,它使用計算機視覺中常用的特征提取網絡比如殘差網絡
- 在所有用到了entities list的地方,它很巧妙的利用了entities序列和句子序列的相似,使用NLP中處理句子的模型提取實體列表的特征。
價值函數網絡
價值網絡- z:論文中稱它為statistic vector,從代碼來看應該是從不同人類玩家l歷史數據中抽取出來的建造順序,以及單位、建筑、升級的順序等信息。
- Sc2的特點是Long term strategy 對于初始狀態很敏感,聯系密切。單獨學習人類前20個建造物順序可以大大減小可能的狀態動作空間,加速收斂。
- 此外,從結果分析可以看出,加入觀測的對手信息效果提升明顯。
- Baseline feature的概念受限于本人水平有限,加上論文中并沒有詳細說明。我認為有兩種解釋
- 引用的是Counterfactual Multi-Agent Policy Gradients論文中的反事實基線的概念,具體可以參見PPT中的COMA論文
- baseline中的base是指以人類為基礎進行學習
策略函數網絡
策略網絡- 注意:Alphastar不看主屏幕,只看小地圖!
- 小地圖+單位列表+標量信息(時間,種族,科技情況,人口情況)已經包含了所有信息
- 不同于Alphago只有前幾手的棋盤。Alphastar存儲過去的所有信息,將每一個time_step輸入到LSTM,賦予各個時間段observation和action時序性。
- 論文中的提到的 包含過去所有時刻的obs和action信息 就是 每個time step都按次序輸入LSTM
- LSTM使得這個模型可以記住過去做的事情
- Eg: 一些建筑物只需要在初期建造, 即使它以后被拆除,(有了LSTM)即使entity list里面沒有了,也不再建了
- 時間序貫性很重要
- Transorformer:不必多說,BERT肯定大家都聽說過,非常火。在這里可以認為是輸出了一個考慮了各個元素之間依賴的新的list。List的成員和輸出詞匯表(數據庫)有關,沒有查到相關資料
動作屬性
動作屬性表查閱開源的Pysc2平臺文檔,得知動作class下有5個屬性。框架總覽
總體框架首先根據所有信息
? 也就是說傳統帶有注意力機制的seq2seq模型輸出的是針對輸出詞匯表的一個概率分布,而Pointer Networks輸出的則是針對輸入文本序列的概率分布。
? 對于施法者選擇,因為candidates是inputs的子集,選擇pointer Network更加高效。
下面我們來介紹該模型訓練的方法
Part 3 訓練部分
? AlphaStar的訓練過程最概括的表示是:先進行基于人類數據的監督學習,然后再進行使用聯盟方法的強化學習。
聯盟學習圖解全圖流程:監督學習
通過匹配對抗(聯盟學習)進行強化學習 AlphaStar。后文會對此進行更詳細解釋說明。
監督學習
AlphaStar的監督學習目標是:學習人類對單位的操作以及建筑建造的操作。其中建筑建造的單元和順序需要單獨列出來訓練,因為很多情況下,一些操作必須要有一些建筑作為前提。
監督學習上圖為論文給出的訓練結構圖。其中:
- 表示人類的觀察數據(小地圖數據)
- 代表著建筑操作的建造單元和建造順序(閱讀其偽代碼可以發現,對于建筑單元和順序的學習是有選擇性的學習,在下文會對此進行解釋)。
- 代表人類的實際操作動作。
可以看出,AlphaStar會根據小地圖數據
和建造操作數據 行學習,并且以人類的操作 作為標簽進行訓練,得到合適的輸出 的神經網絡。經過訓練后,其得到的是三個種族的神經網絡各一個。通過閱讀偽代碼,我們還了解到一些新的細節。
每個智能體的強化學習
首先要注意的是,此部分所介紹的是每個智能體的強化學習。
AlphaStar的強化學習目標是:基于AC框架,通過不斷的與其他玩家(實際上是其他智能體或者自身,后面會有詳細介紹)的對抗來進行學習。
強化學習上圖為給出的訓練結構圖,其中:
- 代表人類的建造單元和建造順序(防止智能體的建筑操作偏離人類情況)。
- 代表智能體觀察到的信息(小地圖圖片)。
- 代表對手的一些信息(用于輔助訓練,防止偏差過大)。
- 代表用于訓練獎勵(由 與 組合而成)。
- 代表偽獎勵(其基于人類數據 生成,在后面會對其作用進行詳細介紹)。
- 代表最終的勝利/平局/失敗的獎勵(對抗結果)。
訓練流程如下:AlphaStar會將自身觀察的數據信息
輸入AC框架下的神經網絡(為了降低方差,其也會將對手的信息 輸入網絡),輸出策略 和值函數 。- 對于策略,其通過以相比監督學習網絡輸出的策略 的 散度、基于R_t使用V-Trace和UPGO的方式更新。
- 對于值函數,其通過基于 的TD( )方式更新。
其中細節性的技術內容將在后文有詳細介紹。
AlphaStar的群強化學習
個人認為,群強化學習思想是AlphaStar最為核心的思想。
群強化學習
群強化學習的核心思想是:創建一個聯盟League,聯盟內有很多個體;通過不斷的讓聯盟內部的個體之間相互對抗來進行強化學習訓練,使得每個個體都能得到提升。經過不斷的內部對抗,其得到的不是一個極度強大的個體,而是一個十分強大的群體。
AlphaStar的聯盟智能體
在AlphaStar的訓練中,其創建了四類個體。四類個體分別為:主探索智能體(Main Agents)、主探索者(Main Exploiters)、聯盟智能體(?League Exploiters)和歷史參數個體(Past Players)。
聯盟智能體- 主智能體
- 意義:最核心的智能體,是最終輸出的AlphaStar。
- 特征:
- 對抗對手:全部歷史個體、主探索者、主智能體。
- 定期存儲自身參數為一個player并加入到?Past Players中。
- 使用PFSP的方式匹配對手。
- 主探索者
- 意義:用于尋找主智能體的弱點。
- 特征:
- 定期存儲自身參數為一個player并加入到Past Players中。
- 每存儲一次自身參數,就會把自己還原為監督學習的參數。
- 對抗對手:主智能體、主智能體的歷史個體。
- 聯盟智能體
- 意義:用于尋找整個群體的弱點。
- 特征:
- 定期存儲自身參數為一個player并加入到Past Players中。
- 沒存儲一次自身參數,就有25%概率將自己還原為監督學習的參數。
- 對抗對手:全部歷史個體。
- 歷史個體
- 意義:用于存儲智能體的歷史參數。
通過對偽代碼的閱讀,我們對聯盟學習的框架進行了進一步的總結(實際上與上文中的框架圖表達意義一致):
- 每個智能體的大小可以代表其強度(也可以理解為時間先后關系,越早越小)。
- 每個主智能體都會向Past Players中添加自身的歷史參數。
- 主智能體會與主探索智能體、主智能體、全部歷史參數個體對抗。
- 主探索者會與主智能體、主智能體的歷史參數對抗;并且其每次存儲參數都會還原自身參數為監督學習參數。
- 聯盟探索者會與權力歷史參數個體對抗;并且每次存儲參數都有25%概率回還原自身參數為監督學習參數。
AlphaStar聯盟學習的技巧解釋
聯盟學習中的匹配的方式是為了更高效的學習而不是簡單的隨機。比如,主探索者在匹配對手時,會先觀察其對主智能體的勝率——如果較低,則其余主智能體對抗;否則其會選擇主智能體的歷史中勝率較低的個體對抗。
下面我們來介紹一下本文的技術細節與成果分析
Part 4 技術細節 & 成果分析
首先我們回到論文中強化學習的流程示意圖,看看這上面都寫了哪些高級的技術:
KL散度
首先論文中用了KL技術來將人類策略和智能體學習到的策略來進行比較。那么什么是KL呢?一下摘自百度百科:
相對熵(relative entropy),又被稱為Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(information divergence),是兩個概率分布(probability distribution)間差異的非對稱性度量。在在信息理論中,相對熵等價于兩個概率分布的信息熵(Shannon entropy)的差值。還是不太懂。那么看一下KL散度的公式:
離散形式與連續形式
結合百科上面的介紹,我們可以知道P(x)和Q(x)是兩個分布,KL散度就是通過上面這兩種形式的公式來衡量P(x)和Q(x)這兩個分布的差異性。另外,KL散度還有一個性質:非負性,所以我們可以通過在數值上盡量減小KL散度的方式來使理論分布去逼近真實的分布。在AlphaStar中,理論分布是指通過神經網絡輸出的分布,真實分布是指人類的策略分布。
TD(λ)
在得到累積回報之后,智能體是如何利用這些累積回報來更新值函數的呢?由流程圖所示,論文中用了TD(λ)算法。TD(λ)的更新算法如下所示:
其中
可以看到,TD(λ)實際上是傳統時間差分方法與蒙特卡洛方法的融合,當λ=0時,只有當前的狀態值更新:
當λ=1時,值函數的更新總量與蒙特卡洛方法相同:
偽獎勵
圖中的立即回報(Rewards)經過求和等操作后變成累積回報,然后經TD(λ)方法去更新值函數。實際上這里的立即回報不僅僅是真實的獎勵,而且包括偽獎勵(Pseudo Rewards,圖中沒有寫,但是論文里有提及)。 什么是偽獎勵呢?我翻遍了全網也沒見到有很多大神講解這一塊兒。按照我對原論文的理解,大概可以這么想:
如圖所示,智能體在狀態St下選擇了動作a(紅色的那條線),到達了后繼狀態St+1并獲得回報Rt+1。實際上從狀態St可以轉到四個不同的后繼狀態,但是在一次試驗中智能體只能轉到這后繼四個狀態中的一個,所以只能利用一個后繼狀態St+1和回報Rt+1去更新當前狀態St。 從利用狀態和回報的角度來看,上述的指利用真實回報的更新方式似乎有些浪費,沒有充分利用上下文信息。從AlphaStar的角度來看,缺少偽獎勵的設置可能會使得智能體的神經網絡參數偏離人類的大方向,并且過早地收斂。如果可以通過某種方法,使得智能體在一次實驗中同時得到這四個后繼狀態的反饋,豈不是能大大增加對狀態和回報的利用效率? 這就是設置偽獎勵的出發點:在更新值函數v(St)時,不僅利用真實的獎勵,同時為其他幾個沒有經過的狀態設置偽獎勵,讓真實獎勵和偽獎勵一起去更新值函數。偽獎勵的設置一般會稍大于真實的獎勵,從而鼓勵探索,避免過早的收斂。至于偽獎勵的細節,請參閱Pseudo-reward Algorithms for Contextual Bandits with Linear Payoffff Functions這篇論文。
V-trace & IMPALA
智能體利用累積回報去更新策略π和值函數v的框架是IMPALA框架。什么是IMPALA呢?IMPALA是一個深度強化多任務學習架構,是A3C框架的一個改進版。IMPALA使用收集經驗的體系結構,并將收集到的經驗進一步傳遞給計算梯度的中央Learner,從而形成一個完全獨立的行為和學習模型。同時,這種簡單的架構,也使學習者能夠加速使用顯卡。如圖:
IMPALA圖(已更正)圖中有8個Actor和2個Learner。Actors并行地根據他們自己的策略進行采樣,采樣得到的數據到達一定量之后就將他們傳輸給中心的Learner,由Learner來利用這些數據進行策略梯度的計算以及策略的更新。每隔一段時間,Actor們將Learner的策略參數復制過來變為自己的參數。 這樣一來,讀者可能會問了:在學習過程中Actor和Learner的策略并不完全相同,如何解決這種Off-policy的問題呢?別急,論文中的V-trace方法就是用來解決這個問題的,即減小行為動作產生的時間與Learner估計漸變時間之間的誤差。V-trace的公式比較復雜,詳細的分析可以參見專欄。個人覺得V-trace的主要特點是里面兩個類似于重要性因子的選取,其中一個決定收斂到什么樣的值函數,另外一個決定收斂的速度。另外,為了防止過早收斂,V-trace方法里在Actor的梯度公式中加了一個熵作為懲罰,即
UPGO
最后一個要介紹的技術是UPGO(upgoing policy upgrade)。UPGO是策略更新的一種方法,在該方法中,策略更新的方向為
其中
分析這個回報G的分段函數形式,不難看出,只有當行為動作值函數優于當前的值函數時才去更新它,否則就還是使用原來的值函數,通過這樣的方法來保證回報的選取是一致朝著更好的方向的,并且反向傳播時不會太容易衰減掉。
結果分析
上圖是論文中智能體Elo值(衡量智能體能力的數值,通過和歷史策略打循環賽得到的分數)隨學習的進行而變化的圖。 從左到右,第一個紅線AlphaStar Supervised表示只進行監督學習,沒有進行強化學習時的水平;第二個紅線AlphaStar Mid表示進行了一半強化學習時的水平(32塊TPU上學習27天);第三個紅線AlphaStar Final表示強化學習完成后的水平(32塊TPU上學習44天)。 從上到下,Main agents是我們所訓練的主體,其分數隨學習的進行而升高;League Agents由于每過一段時間都有一定的幾率還原為人類策略模型的參數,因此策略的水平比較分散,總體上在Main agents和Main exploiters之間;Main exploiters由于每過一段時間也是會被還原為人類策略模型參數,因此一直保持在相對低的水平。
這兩張圖不是很好理解,以下分析摘自知乎專欄:
文章還弄了一個遵循特殊策略的 held-out 策略集合,main agents 和該集合中策略比賽的結果如圖 b 所示。這反映了策略學習的絕對效果。圖 c 反映了不同 agent 對應的不同納什均衡分布,這個圖有點不好理解:比如 ID=40 的 agent 在大概第 25 天被造出來之后,在大概之后的五天里面都還會經常能夠戰勝后面新學到的策略,但是大概在 30 天之后,新產生的所有策略都完全戰勝 ID=40 的策略。這說明了整個策略集合的學習過程中,新的策略能夠完全戰勝以前的所有策略,而沒有出現前面提到的訓練過程中的循環(不穩定)的情況.上圖是為了說明學習到的策略具有比較高的多樣性。同時可以發現Main agents的多樣性其實是少于League exploiters和Main exploiters的。
上圖定量分析了各個技術的作用。有趣的是,在直覺中我們以為,在其他條件相同的條件下,更高的手速會給智能體帶來更高的分數。但根據圖g,我們發現并非如此,智能體的水平隨著APM限制的放寬先升高后降低;同時,論文所設置的手速限制恰恰落在了智能體水平最高峰附近。為什么手速限制的放寬反而可能導致智能體水平降低呢?論文給出的解釋是,APM限制的放寬使得智能體需要在相同時間內做出更多的決策,這使得智能體需要學習更多的“微決策”“微操作”,從而可能放慢了智能體的學習速度,拉低了(訓練時間不變的條件下)智能體的水平。
總結
以上是生活随笔為你收集整理的多智能体强化学习_基于多智能体强化学习主宰星际争霸游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 劳动合同没有备案有效吗(备案有效吗)
- 下一篇: sqlserver如何定义一个静态变量_