伯克利星際爭霸II AI「撞車」騰訊,作者:我們不一樣

機器之心報道

參與:曉坤、張倩

來自加州大學伯克利分校的研究者在星際爭霸 II 中使用了一種新型模塊化 AI 架構,該架構可以將決策任務分到多個獨立的模塊中。在蟲族對蟲族比賽中對抗 Harder(level 5)難度的暴雪 bot,該架構達到了 94%(有戰爭迷霧)和 87%(無戰爭迷霧)的勝率。只是騰訊等近期也在星際爭霸 II 的 AI 架構上提出了模塊化方法,而伯克利研究者甚至也發現二者是同期進行的研究。至於有沒有撞車,看看他們怎麼解釋~

深度強化學習已經成爲獲取有競爭力遊戲智能體的有力工具,在 Atari(Mnih et al. 2015)、Go(Silver et al. 2016)、Minecraft(Tessler et al. 2017)、Dota 2(OpenAI 2018)等許多遊戲中取得了成功。它能夠處理複雜的感覺輸入,利用大量訓練數據,通過自己摸索在不借助人類知識的情況下發展自身技能(Silver et al. 2017)。星際爭霸 II 被公認爲 AI 研究的新里程碑,但由於其視覺輸入複雜、活動空間巨大、信息不完整且視野較廣,星際爭霸 II 仍然是困擾深度強化學習的一大挑戰。實際上,直接的端到端學習方法甚至無法打敗最簡單的內建 AI(Vinyals et al. 2017)。

星際爭霸 II 是一款實時策略遊戲,包括蒐集資源、搭建生產設備、研究技術及管理軍隊打敗對手等。它的上一個版本(即星際爭霸)受到了衆多研究者的關注,包括分層規劃(Weber, Mateas, and Jhala 2010)和樹搜索(Uriarte and Ontan˜on 2016)(見 Ontan˜on et al. (2013) 的研究)。之前的多數方法都聚焦於大量手工設計,但因其無法利用玩遊戲的經驗,智能體還是無法打敗職業玩家(Kim and Lee 2017)。

圖 1:本文提出的針對星際爭霸 II 的模塊化架構

本文研究者認爲,適當整合人類知識的深度強化學習可以在不損失策略表達性和性能的前提下有效降低問題的複雜性。爲了實現這一目標,他們提出了一種靈活的模塊化架構,可以將決策任務分到多個獨立的模塊中,包括勞工管理、構建順序、策略、微管理及偵察等(見圖 1)。每個模塊可以手工設計或通過一個神經網絡策略實現,這取決於該任務屬於易於手工解決的常規任務,還是需要從數據中進行學習的複雜任務。所有模塊向策劃者推薦宏指令(預定義的動作序列),策劃者決定它們的執行順序。此外,更新者持續追蹤環境信息,適應性地執行由策劃者選擇的宏指令。

研究者還通過帶有自行探索能力的強化學習進一步評估了這一模塊化架構,着眼於這個遊戲中可以從大量訓練經驗中獲益的重要方面,包括構建順序和策略。智能體是在 PySC2 環境中訓練的(Vinyals et al. 2017),該環境中有個頗具挑戰性的類人控制接口。研究者採用了一種迭代訓練方法,首先訓練一個模塊,同時其他模塊遵循非常簡單的腳本化行爲,然後用一個神經網絡策略替換另一個模塊的腳本化組成,在之前訓練的模塊保持固定的情況下繼續訓練。研究者評估智能體玩蟲族 v.s. 蟲族對抗梯形圖上的內建 bot,在對抗「Harder」bot 時取得了 94%(有戰爭迷霧)或 87%(無戰爭迷霧)的勝率。此外,該方法的智能體在延伸測試圖中泛化良好,並且取得了類似的性能。

本文的主要貢獻在於展示了深度強化學習、自行探索與模塊化架構及適當人類知識相結合可以在星際爭霸 II 上取得有競爭力的表現。雖然本文聚焦於星際爭霸 II,但將該方法泛化至其他現有端到端強化學習訓練範式無法解決的複雜問題也是可能的。

論文:Modular Architecture for StarCraft II with Deep Reinforcement Learning

論文鏈接:https://arxiv.org/pdf/1811.03555.pdf

摘要:我們在星際爭霸 II 中使用了一種新型模塊化 AI 架構。該架構在多個模塊之間分割責任,每個模塊控制遊戲的一個層面,例如建造次序選擇或策略。有一個集中策劃者會審查所有模塊的宏指令,並決定它們的執行順序。有一個更新者會持續追蹤環境變化並將宏指令實例化爲一系列可執行動作。該框架的模塊可以通過人類設計、規劃或強化學習獨立地或聯合地進行優化。我們應用深度強化學習技術的自我對抗來訓練一個模塊化智能體六個模塊中的兩個,在蟲族對蟲族比賽中對抗"Harder"(level 5)難度的暴雪 bot,達到了 94%(有戰爭迷霧)或 87%(無戰爭迷霧)的勝率。

模塊化架構

表 1 總結了每個模塊的作用和設計。在以下部分中,我們將詳細描述我們實現的蟲族智能體。請注意,此處介紹的設計只是實現此模塊化體系架構的所有可能方法的一個實例。只要能與其他模塊協同工作,就可以將其他方法(例如規劃)合併到其中一個模塊中。

表 1:在當前版本中每個模塊的作用以及設計。FC=全連接網絡。FCN=全卷積網絡。

更新者

更新者作爲記憶單位、模塊的通訊樞紐以及 PySC2 的入口。

爲了保證 AI 和人類的公平比較,Vinyal 等人(2017)定義了 PySC2 的觀察輸入,使其和人類玩家看到的相似,包括屏幕的圖像特徵地圖以及小地圖(例如單位類型、玩家身份等),和一系列非空間特徵,如收集礦物的總數量。由於過去的動作、過去的事件和視野外的信息對於決策很重要,但不能直接從當前觀察獲取,智能體需要發展高效的記憶。儘管從經驗中學習這樣的記憶是可能的,我們認爲適當手工設計的記憶也能達到類似的目的,同時也降低了強化學習的負擔。表 3 列出了更新者維護的示例記憶。一些記憶(例如構建隊列)可以從過去採取的動作推斷出來。一些記憶(例如友好單位)可以通過檢查所有單位名單推斷出來。其它記憶(例如敵對單位)需要進一步處理 PySC2 觀察,並與偵察模塊協作才能推斷出來。

表 3:更新者維護的示例記憶。

宏指令

在玩星際爭霸 II 時,人類通常從一系列的子程序中選擇動作,而不是從原始環境動作選取。例如,爲了構建一個新的基地,玩家識別到一個未被佔領的中立基地,選擇勞工,然後構建基地。這裏我們將這些子程序命名爲宏指令(如表 2 所示)。學習策略來直接輸出宏指令可以隱藏更高級命令的一般執行細節,因此允許更高效地探索不同策略。

表 2:對每個模塊可用的示例宏指令。一個宏指令(斜體字)由宏指令序列或 PySC2 動作構成(非斜體字)。更新者提供 base.minimap location、base.screen location 和 bases hotkey 等信息。

構建順序

星際爭霸 II 智能體必須平衡我們在許多需求之間的資源消耗,包括供應(人口容量)、經濟、戰鬥單位、升級等。構建順序模塊在選擇正確的構建策略方面起着至關重要的作用。例如,在遊戲早期,智能體需要專注於創建足夠的勞工來收集資源;而在遊戲中期,它應該選擇能夠擊敗對手的正確類型的軍隊。儘管存在由專業玩家開發的許多有效構建順序,在沒有適應的情況下簡單地執行一種順序可能帶來高度可利用的行爲。智能體的構建順序模塊可以從大量的遊戲經驗中獲益,而不是依賴複雜的 if-else 邏輯或規劃來處理各種場景。因此,我們選擇通過深度強化學習來優化該模塊。

圖 2:構建順序模塊的細節。

該部分還包括了策略、偵察、微管理、勞工管理、策劃者模塊,詳情請參見原論文。

圖 3:我們的智能體在面對不同難度的對手時的勝率。星號表示在訓練過程中沒有見過的內建 bot。1 epoch = 3 × 10^5 策略步。

表 4:不同訓練過程下和不同難度內建 bot 的最終勝率(3 個種子,每個種子 100 場比賽的平均值)。

表 5:和不同對手的勝率對比(100 場比賽)。括號裏寫的是預訓練部分。「V」表示「非常」。從表中可以看出,我們的方法能超越簡單的腳本智能體。

圖 4:學習的軍隊組成。顯示每種單位類型的總產出與戰鬥單位總數量的比值。

表 6:我們的智能體在不同地圖面對不同對手時的勝率(100 場比賽)。我們的智能體僅在 AR 上訓練。AR=深海礁岩(Abyssal Reef),DS=黑暗避難所(Darkness Sanctuary),AP=強酸工廠(Acid Plant)。

表 7:我們的智能體在深海礁岩中使用戰爭迷霧得到的勝率高出 10%(100 場比賽),這可能是因爲學習到的構建順序和戰術可以更好地泛化到不完美信息,而內建智能體依賴於具體觀察。

討論

本研究與騰訊、羅切斯特大學和西北大學的聯合研究《TStarBots: Defeating the Cheating Level Builtin AI in StarCraft II in the Full Game》同時期開展,他們也提出了分層、模塊化架構,並手工設計了宏指令動作。Berkeley 的研究者解釋道,二者不同之處在於,本研究中的智能體是在模塊化架構下僅通過自我對抗及與幾個腳本智能體對抗來訓練的,直到評估階段才見到內建 bot。

上圖是 TStarBots 的評估結果(有戰爭迷霧)。通過和表 4 對比我們可以發現,智能體在 L-4 到 L-7 級別的蟲族對蟲族對抗中取得的勝率普遍高於本文的研究。此外,Berkeley 的研究者並沒有讓智能體和作弊級別(L-8、9、10)的內建 bot 比賽。

不過,僅僅是這種表面的比較有失公允,它們還存在很多訓練設置上的區別。例如,TStarBots 使用了單塊 GPU 和 3840 塊 CPU,而 Berkeley 在該研究中使用了 18 塊 CPU;它們使用的強化學習算法也不同。關於兩項研究中使用的方法,TStarBots 的論文中提出了兩種架構:TStarBot1 和 TStarBot2,它們都包含了手工定義的宏操作,並且後者還擁有雙層結構,可以兼顧微操層面的訓練。其中 TStarBot1 定義了 building、production、upgrading、resource、combating 等宏操作。但是,TStarBot1 並沒有類似本文中提出的更新者、策劃者等模塊,這些模塊發揮的作用有更加廣泛的含義,估計這也是研究者聲稱其方法具備更好泛化性能的原因。

TStarBot2 雙層結構。論文地址:https://arxiv.org/pdf/1809.07193.pdf

此外,南京大學近期也在星際爭霸 II 上取得了不錯的成績。研究者讓智能體通過觀察人類專業選手遊戲錄像來學習宏動作,然後通過強化學習訓練進一步的運營、戰鬥策略。他們還利用課程學習讓智能體在難度漸進的條件下逐步習得越來越複雜的性能。在 L-7 難度的神族對人族遊戲中,智能體取得了 93% 的勝率。這種架構也具有通用性更高的特點。

結合分層強化學習、自動生成宏動作和課程學習的架構。論文地址:https://arxiv.org/abs/1809.09095

總之,三項研究各有千秋,對架構設計的考量圍繞着通用-專用權衡的主題,並且都抓住了宏指令(宏動作)定義的關鍵點,展示了分層強化學習的有效性。值得一提的是,這三項研究都是目前在星際爭霸II 上能完成全場遊戲的工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章