伯克利星際爭霸II AI「撞車」騰訊,作者:我們不一樣
來自加州大學伯克利分校的研究者在星際爭霸 II 中使用了一種新型模組化 AI 架構,該架構可以將決策任務分到多個獨立的模組中。在蟲族對蟲族比賽中對抗 Harder(level 5)難度的暴雪 bot,該架構達到了 94%(有戰爭迷霧)和 87%(無戰爭迷霧)的勝率。只是 ofollow,noindex">騰訊等近期也在星際爭霸 II 的 AI 架構上提出了模組化方法 ,而伯克利研究者甚至也發現二者是同期進行的研究。至於有沒有撞車,看看他們怎麼解釋~
深度強化學習 已經成為獲取有競爭力遊戲智慧體的有力工具,在 Atari(Mnih et al. 2015)、Go(Silver et al. 2016)、Minecraft(Tessler et al. 2017)、Dota 2(OpenAI2018)等許多遊戲中取得了成功。它能夠處理複雜的感覺輸入,利用大量訓練資料,通過自己摸索在不借助人類知識的情況下發展自身技能(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 上能完成全場遊戲的工作。