多智能體對抗作為決策 AI 中重要的部分,也是強化學習領(lǐng)域的難題之一。為豐富多智能體對抗環(huán)境,OpenDILab(開源決策智能平臺)開源了一款多智能體對抗競技游戲環(huán)境——Go-Bigger。同時,Go-Bigger 還可作為強化學習環(huán)境協(xié)助多智能體決策 AI 研究。
與風靡全球的agar.io、球球大作戰(zhàn)等游戲類似,在 Go-Bigger 中,玩家(AI)控制地圖中的一個或多個圓形球,通過吃食物球和其他比玩家球小的單位來盡可能獲得更多重量,并需避免被更大的球吃掉。每個玩家開始僅有一個球,當球達到足夠大時,玩家可使其分裂、吐孢子或融合,和同伴完美配合來輸出博弈策略,并通過 AI 技術(shù)來操控智能體由小到大地進化,憑借對團隊中多智能體的策略控制來吃掉盡可能多的敵人,從而讓己方變得更強大并獲得最終勝利。
四類小球,挑戰(zhàn)不同決策路徑
Go-Bigger 采用 Free For All(FFA)模式來進行比賽。比賽開始時,每個玩家僅有一個初始球。通過移動該球,玩家可吃掉地圖上的其他單位來獲取更大的重量。每個隊伍都需和其他所有隊伍進行對抗,每局比賽持續(xù)十分鐘。比賽結(jié)束后,以每個隊伍最終獲得的重量來進行排名。
在一局比賽中共有分身球、孢子球、食物球、荊棘球四類球。分身球是玩家在游戲中控制移動或者技能釋放的球,可以通過覆蓋其他球的中心點來吃掉比自己小的球;孢子球由玩家的分身球發(fā)射產(chǎn)生,會留在地圖上且可被其他玩家吃掉;食物球是游戲中的中立資源,其數(shù)量會保持動態(tài)平衡。如玩家的分身球吃了一個食物球,食物球的重量將被傳遞到分身球;荊棘球也是游戲中的中立資源,其尺寸更大、數(shù)量更少。如玩家的分身球吃了一個荊棘球,荊棘球的大小將被傳遞到分身球,同時分身球會爆炸并分裂成多個分身。此外,荊棘球可通過吃掉孢子球而被玩家移動。
分身球
團隊緊密配合,實現(xiàn)合理重量傳遞
在 Go-Bigger 中,團隊內(nèi)部的合作和外部的競技對于最終的成績至關(guān)重要。因此,Go-Bigger 設(shè)計了一系列的規(guī)則來提高團隊所能帶來的收益。由于玩家的分身球重量越小,移動速度越快,更多的分身可以保證快速發(fā)育,但是會面臨被其他玩家吃掉的風險。同時,冷卻期的存在使得玩家無法靠自身擺脫這樣的風險。因此,同一隊伍中不同玩家的配合尤為關(guān)鍵。
為便于團隊內(nèi)玩家的配合,Go-Bigger 設(shè)置了玩家無法被同隊伍完全吃掉的規(guī)則。Go-Bigger 還設(shè)置了單個分身球的重量上限和重量衰減,使得單一分身球無法保持過大重量,迫使其分裂以減少重量損失。在游戲后期,團隊內(nèi)部的重量傳遞會顯得至關(guān)重要,合理的重量傳遞可以保證團隊在與其他隊伍對抗時獲得更大的優(yōu)勢。
支持 RL 環(huán)境,提供三種交互模式
此外,為幫助用戶在強化學習領(lǐng)域的多智能體策略學習,Go-Bigger 也提供了符合 gym.Env 標準的接口供其使用。在一局游戲中,Go-Bigger 默認設(shè)置含有 20 個狀態(tài)幀和 5 個動作幀。每個狀態(tài)幀都會對當前地圖內(nèi)所有單位進行仿真和狀態(tài)處理,而動作幀會在此基礎(chǔ)上,附加對單位的動作控制,即改變單位的速度、方向等屬性,或使單位啟用分裂、發(fā)射或停止等技能。
為了更方便地對環(huán)境進行探索,Go-Bigger 還提供了必要的可視化工具。在與環(huán)境進行交互的時候,可以直接保存本局包含全局視角及各個玩家視角的錄像。此外,Go-Bigger 提供了單人全局視野、雙人全局視野、單人局部視野三種人機交互模式,使得用戶可以快速了解環(huán)境規(guī)則。
三步走,快速搭建強化學習 baseline
算法 baseline 的目的是驗證某個問題環(huán)境使用強化學習算法的初步效果,對各個環(huán)節(jié)的信息做簡單梳理和分析,熟悉之后便可輕松上手比賽,在環(huán)境、算法、算力上逐步增加復雜度,設(shè)計迭代效果更強的智能體。
Go-Bigger 環(huán)境的強化學習算法 baseline 主要分為環(huán)境瘦身、基礎(chǔ)算法選擇、定制訓練流程三部分。其中,環(huán)境瘦身即將原始游戲環(huán)境簡化成適用于強化學習的標準環(huán)境格式;基礎(chǔ)算法選擇指根據(jù)環(huán)境的基本信息選擇合理的基礎(chǔ) RL 算法;定制訓練流程指根據(jù)環(huán)境的特殊特征定制訓練流程。
這些人理解起來很簡單的數(shù)據(jù)表示,對計算機和神經(jīng)網(wǎng)絡(luò)卻非常不友好,因此需要專門對這些信息做一定的加工,并根據(jù)強化學習的特性設(shè)置成標準的強化學習環(huán)境觀察空間。
直接將原始的 RGB 2D 圖像信息輸入神經(jīng)網(wǎng)絡(luò),盡管結(jié)果尚可,但需要更多的數(shù)據(jù)、更長的訓練時間,以及更復雜的訓練技巧。更為簡明并有效的方式是進行 “升維”,即將耦合在一起的圖像信息離解成多個分離的特征圖像層。最終根據(jù)游戲內(nèi)容定義出具體的特征圖像層,并區(qū)分各個玩家的局部視野,拼接后構(gòu)成總體的特征圖像層。下圖為一玩家視野中食物球的特征圖像層:
Go-Bigger 環(huán)境中存在很多可變維度的地方,為了簡化,baseline 環(huán)境中強行截斷了單位數(shù)量,用統(tǒng)一的方式來規(guī)避可變維度問題。
Go-Bigger 對于人類來說操作起來十分簡單,包括上下左右 QWE,這些基本的按鍵組合起來便可以誕生出許多有趣的操作,如十面埋伏、大快朵頤等。但是,游戲引擎中實際的動作空間是這樣的(動作類型 + 動作參數(shù)):
游戲引擎的這種形式在強化學習中被稱作混合動作空間,也有相應的算法來處理該問題。但基于 baseline 一切從簡這一核心,通過使用比較簡單粗暴的離散化處理,將連續(xù)的動作參數(shù)(x,y 坐標)離散化為上下左右四個方向。針對動作類型和動作參數(shù)的組合,也簡單使用二者的笛卡爾積來表示,最終將環(huán)境定義為一個 16 維的離散動作空間。
獎勵函數(shù)定義了強化學習優(yōu)化的目標方向。Go-Bigger 是一項關(guān)于比誰的隊伍更大的對抗游戲,因此獎勵函數(shù)的定義也非常簡單,即相鄰兩幀整個隊伍的大小之差。
如下圖所示兩張表示相鄰兩個動作幀,右側(cè)計分板顯示各個隊伍實時的大小數(shù)值,將當前幀的大小減去上一幀的大小,就定義得到了獎勵值。而對于整場比賽,則使用每一步獎勵的累加和作為最終的評價值。評價值最大的隊伍,將贏得本局比賽。此外,在訓練時,還通過縮放和截斷等手段將獎勵值限制在 [-1, 1] 范圍內(nèi)。
在完成對 RL 環(huán)境的魔改之后,會呈現(xiàn)如下基本信息:
對于這樣的環(huán)境,可用最經(jīng)典的 DQN 算法 + 多模態(tài)編碼器神經(jīng)網(wǎng)絡(luò)來實現(xiàn)。對于各種模態(tài)的觀察信息,使用數(shù)據(jù)對應的經(jīng)典神經(jīng)網(wǎng)絡(luò)架構(gòu)即可。例如,對于圖像信息,選擇一個帶降采樣的卷積神經(jīng)網(wǎng)絡(luò)將 2D 圖像編碼為特征向量;對于單位屬性信息,需要建模各個單位之間的聯(lián)系,獲得最終的單位特征向量;對于全局信息,則使用由全連接層構(gòu)成的多層感知機。在各部分編碼完成之后,將三部分的特征拼接在一起,將構(gòu)成時間步的觀察特征向量,以復用最經(jīng)典的 Dueling DQN 結(jié)構(gòu)。以特征向量為輸入,輸出這一步選擇 16 個動作的 Q 值,并使用 N-step TD 損失函數(shù)即可完成相應訓練的優(yōu)化。完整的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。
DQN 通常只用來解決單智能體的問題,而在 Go-Bigger 中一支隊伍會存在多個玩家,且一局比賽為多個隊伍混戰(zhàn),因此會涉及多智能體之間合作和對抗等問題。在多智能體強化學習領(lǐng)域,針對該問題可展開諸多的研究方向,但為簡化設(shè)計 Go-Bigger 使用了 Independent Q-Learning(IQL)+ 自我對戰(zhàn)(Self-Play)的方式來實現(xiàn)訓練流程。
例如,對于一個隊伍中的多個智能體,團隊的最終目標是讓整個隊伍(總體積/總體量/總重量)的大小最大,因此在 baseline 中可使用 IQL 算法來實現(xiàn),以高度并行化地實現(xiàn)整個優(yōu)化過程;對于實際一局比賽中存在多個智能體的情況,則可使用樸素的自我對戰(zhàn)(Self-Play)這一相當簡單且非常節(jié)省算力的方式來參與比賽。評測時,會將隨機機器人和基于規(guī)則的機器人作為比賽的對手,測試驗證目前智能體的性能。
Tips:
從零開始實現(xiàn)上述算法和訓練流程非常復雜,而通過決策智能框架 DI-engine(https://github.com/opendilab/DI-engine)可大大簡化相應內(nèi)容。其內(nèi)部已經(jīng)集成了支持多智能體的 DQN 算法實現(xiàn)和一系列相關(guān)訣竅,以及玩家自我對戰(zhàn)和對抗機器人的訓練組件,只需實現(xiàn)相應的環(huán)境封裝,神經(jīng)網(wǎng)絡(luò)模型和訓練主函數(shù)即可(詳細代碼參考https://github.com/opendilab/GoBigger-Challenge-2021/tree/main/di_baseline)。
幾個有意思的發(fā)現(xiàn)
通過上述簡單基線算法訓練出來的初級 AI 在在發(fā)育階段會將球盡量分開,以增大接觸面加快發(fā)育;在面對潛在的危險時,會避開比自身大的球,并使用分裂技能加快移動速度,防止被吃掉。這些操作都是在人類玩家的游戲過程中經(jīng)常用到的小技巧。
為了進一步推動決策智能相關(guān)領(lǐng)域的技術(shù)人才培養(yǎng),打造全球領(lǐng)先的原創(chuàng)決策 AI 開源技術(shù)生態(tài),OpenDILab(開源決策智能平臺)將發(fā)起首屆 Go-Bigger 多智能體決策 AI 挑戰(zhàn)賽(Go-Bigger: Multi-Agent Decision Intelligence Challenge)。本次比賽將于 2021 年 11 月正式啟動,使用由 OpenDILab 開源的 Go-Bigger(https://github.com/opendilab/GoBigger)游戲環(huán)境。希望集結(jié)全球技術(shù)開發(fā)者和在校學生,共同探索多智能體博弈的研究。歡迎對 AI 技術(shù)抱有濃厚興趣的選手踴躍參加,和全球的頂尖高手一決勝負!
2022-04-08 動點科技發(fā)布了 《區(qū)塊鏈安全公司 CertiK 完成 8800 萬美元 B3 輪融資,估值達 20 億美元》的文章
2022-04-08 動點科技發(fā)布了 《理想汽車回應裁員傳聞:不實消息》的文章
2022-03-25 動點科技發(fā)布了 《蘋果將 47 億美元綠色債券用于支持綠色技術(shù)創(chuàng)新》的文章
2022-03-25 動點科技發(fā)布了 《技術(shù)引領(lǐng)未來,德國航空航天中心展示電動汽車概念》的文章
2021-12-23 動點科技發(fā)布了 《高田生物完成過億元 B 輪融,晨壹投資領(lǐng)投》的文章