騰訊:首個在一場完整星際Ⅱ比賽中擊敗作弊級Bot的AI

來源:arXiv

編譯:Bot

公衆號:論智

編者按:19日,來自騰訊AI Lab、羅切斯特大學和西北大學的研究人員發表了一個預印本《TStarBots: Defeating the Cheating Level Builtin AI in StarCraft II in the Full Game》,文章介紹了兩個AI:TStarBots1和TStarBots2,它們首次在完整的蟲族VS蟲族比賽中擊敗了星際爭霸Ⅱ的內置AI Bot,是研究史上的又一大壯舉。雖然不是嚴格意義上的“自學”,AI還高度依賴人爲歸納的信息,但迄今爲止,這是我們在星際Ⅱ項目上見到的最有建樹的成果,值得期待。

譯者注:星際2的內置AI難度分爲“新手”“簡單”“普通”“困難”“艱難”“極難”“專家”“作弊一(擁有全視野)”“作弊二(後期全視野+額外資源)”“作弊三(全視野+額外資源)”十個等級,越高越難。論文中會出現等級1~10的AI,請對照分辨。此外,下文涉及的人口單位稱呼以玩家習慣爲準。

簡介

近年來,深度學習和強化學習的結合爲學界帶來了諸多進展。從頭訓練、只提供遊戲原始特徵,這些嘗試爲我們帶來了無數令人稱奇的“自學”AI,比如圍棋、各種雅達利遊戲、Dota2等等。但是,作爲RTS遊戲難度標杆的星際2還未被AI攻陷。

星際2截圖

上圖是星際2遊戲內的截圖。就資源來看,星際2有晶體礦(藍色晶柱)和氣礦(晶柱兩側綠色建築)兩種,不同建築需要的資源數不同;從人口單位上看,圖中有工蜂(農民)、王蟲(房子)、跳蟲(小狗)、毒爆蟲、蟑螂、火蟑螂。

這還只是剛開局的情形,比起控制5個英雄的OpenAI Five,這個時間點星際2 AI需要控制的單位已經高達35個,隨着局勢逐漸展開,它還要開礦、攀科技樹、建造更多建築、孵化更高級的蟲子,最終操作上百人口拉扯陣型、和敵方交換戰損並最終依靠混合策略獲得勝利。

圖片左下角是玩家擁有的視野,這時除了基地,地圖其他區域都是黑的,這意味着如果想要“刺探敵情”,AI就得派遣農民/房子/狗等單位進行戰略性偵查,面對未知環境中的各種可能性,所有決定都必須是實時做出的。

巨大的觀察空間、龐大(連續的、無窮的)的動作空間、受限的觀察視野、多人同步遊戲模型、長期決策……這些因素使星際2成爲現在最具挑戰性的AI遊戲目標,沒有之一。

去年,爲了推動AI研究邁向新的前沿,DeepMind聯合暴雪發佈了星際2 AI學習環境SC2LE——一個用於設計複雜決策系統的測試平臺。雖然它提供了不少迷你遊戲,比如MoveToBeacon、CollectMineralShards和DefeatRoaches(對應“放置信標”“拾取晶體礦”和“消滅蟑螂”等基礎遊戲操作),部分AI也在遊戲中達到了職業級玩家水平,但它們都沒法真正打贏一局完整遊戲。

爲了對完整遊戲做一些初步研究和探索,騰訊攜美國兩所大學的研究人員開發了兩個AI:基於扁平化動作結構的深度強化學習智能體TStarBots1和基於分層動作結構規則控制器的智能體TStarBots2。經過多次實驗,現在,這兩個AI都能在完整對戰中擊敗等級1~10的遊戲內置機器人(1v1蟲族對抗,地圖:深海暗礁?),其中等級8、等級9和等級10的機器人都是作弊級AI,它們享有額外的視野和晶體礦、氣礦資源。

這是首個能在正式比賽中擊敗內置機器人的AI系統,堪稱研究道路上的一大突破。

具體來說,TStarBots1擁有一系列扁平化的大型操作,在這個基礎上,它用強化學習訓練智能體採取策略;而TStarBots1的操作控制也是人爲編碼的,但它有可以自行組合的大型、小型混合層次化操作集。

研究人員希望這個框架能從以下幾方面對未來的研究做出貢獻:

  1. 成爲混合系統的基準:越來越多的學習模塊,和用規則來表達難以學習的邏輯
  2. 爲模仿學習提供軌跡
  3. 成爲“自學”AI的對手

讓AI學會“操作”的取巧做法

之前我們提到了,星際2之所以那麼難以學習,是因爲它存在巨大的觀察空間、龐大(連續的、無窮的)的動作空間、受限的觀察視野等暫時無法解決的問題。騰訊的這項研究主要針對動作空間過大,他們認爲動作空間內部存在複雜結構,而這主要體現在以下幾方面:

層次結構的本質

複雜的層次結構似乎總是伴隨着RTS遊戲中的長期決策問題,當人類玩家玩星際2時,他們進行判斷主要依賴以下三個思維層次:宏觀戰略、局部策略和單位微操。如果AI無法理解這三個層次(也是操作層次),它就不可避免地會在強化學習期間陷入無盡訓練和探索。

例如,在SC2LE的迷你遊戲中,有一個名爲PySC2的AI表現出色。它依靠在界面上建立低級動作空間,座標涉及上百個熱鍵和上千次鼠標點擊。迷你遊戲只是最基礎的操作,它的動作空間完全沒法和完整對戰相比,因此這種做法是行不通的。用層次結構縮小動作空間,減小探索範圍,這是一種比較可行的方法。

星際2裏的硬性規則很難學習

設計基於學習的智能體的另一個挑戰是星際2裏存在大量硬性規則,它們就像自然界的物理法則,絕對不能違反。如果要爆蟑螂(蟲族兵種?),玩家首先得用工蜂拍下蟑螂溫室,然後把蟲卵孵化成蟑螂。人類玩家在接觸遊戲之初就從文字資料裏學到了這些內容,但這對AI來說並不容易。

硬性規則出現在星際2裏的方方面面,爆兵、拍建築,而其中最重要、也最困難的是攀科技樹,這不僅是個多項選擇,還涉及根據局勢判斷優先級,需要設置額外的輸贏獎勵。因此,在RTS遊戲中,比起寄期望於讓AI自己學習,不如設法把這些複雜硬性規則編碼到先驗知識中。

“殺雞得用牛刀”

值得注意的是,儘管星際2的決策空間很大,但並非所有決策都很重要。換句話說,有相當多的決定是多餘的,因爲它們對遊戲最終結果的影響幾乎可以忽略不計。還是以蟑螂爲例,當人類玩家決定孵蟑螂時,他會思考這幾個問題:

  • 什麼時候拍蟑螂溫室?
  • 用哪隻工蜂拍溫室?
  • 拍在哪兒?

其中第一個問題最關鍵,它直接決定整體運營進度,這對比賽輸贏至關重要;第二個問題最不重要,任何工蜂都能造建築,選哪隻根本無所謂;第三個問題有一定影響,造得近肯定比造得遠好,但這涉及建築的相對位置,也就是AI得在數千個二維座標中進行選擇,它耗費的計算資源和效果完全不成正比。

針對上述問題,研究人員最終決定還是爲智能體提供手動調整的規則,對動作結構進行建模,這可以大大簡化遊戲的動作空間,更易於設計決策系統。

第一個AI:TStarBot1

下圖是TStarBot1的工作原理示意圖。它的頂部有一個單獨的全局控制器,負責把強化學習算法應用於各個大型操作,訓練智能體學習致勝策略。每一個大型操作都由一系列實現它的小型操作構成,如建造蟑螂溫室=移動視野窗口+隨機挑選工蜂+選取界面座標位置+建造。

研究人員一共總結了165個大型操作,其中建造13個、爆兵/補農民22個、科技樹27個、採礦/採氣3個、對抗100個。圖片底部是人爲編碼的遊戲規則先驗知識(如科技樹)和如何進行操作(巢穴造哪兒),也就是說,它幫控制器省去了不少決策過程和操作細節。

通過使用這個架構,TStarBot1在1個GPU上訓練了1~2天,就擊敗了最高難度的遊戲內置機器人。

雖然大大縮小了動作空間,但這種做法也存在不少問題。由於智能體是基於大型操作集學習的,一旦做出決策,它就要完整執行完大型操作裏的所有動作,但有時其中的一些動作在每個決策步驟中是互斥的。此外,由於會不可避免地大範圍引入不必要的操作,這會帶來許多不必要的觀察值,冗餘信息會干擾模型訓練。另一方面,這個AI註定無法在小操作上學到東西。

第二個AI:TStarBot2

爲了解決上面的問題,研究人員又設計了第二個AI。這次,他們結合大型操作和小型操作,用雙層結構組織它們。如下圖所示,上層是代表高級戰略/戰術的大型操作,例:在主基地附近造蟑螂巢穴;讓這個編隊去攻擊敵方基地。下層是代表每個單元低級控制的小型操作,例:在具體某位置造蟑螂巢穴;讓某隻蟲在某個位置進行攻擊。

整個動作集被分爲水平子集和垂直子集。對於每個動作子集,研究人員又爲其分配一個單獨的控制器。它只能看到本地動作集,以及與其中的動作相關的本地觀察信息。在每個時間步,同一層的控制器可以同時採取行動,而下游控制器必須以其上游控制器爲條件

這個設計有兩大優點:1.每個控制器都有自己的觀察/動作空間,排除了無關信息;2. 層次結構更好地捕獲動作結構,尤其是它們的組合效果。這可以被視爲是原始動作空間的更精細的建模。理想情況下,兩個控制器應該用強化學習算法進行聯合訓練,但目前研究人員還沒有實現這一點。

實驗:AI之爭&人機大戰

TStarBot VS 內置Bot

上表是TStarBot1、TStarBot1和星際2內置機器人的比賽結果統計。其中,TStarBot1和每個等級的機器人各進行了200場對戰,勝率取平均值。用單個GPU和3840個CPU進行了約1~2天的訓練後,面對等級1~9的機器人,AI的勝率超過90%;面對等級10的機器人,它的勝率也超過70%。

而TStarBot2的表現似乎更好,它和每個等級的機器人各進行了100場比賽,勝率取平均值(平局0.5)。數據結果顯示了分層結構的有效性。

注:兩個AI在訓練/測試時均未作弊,即無全視野,也無額外資源。

TStarBot VS 人類玩家

在非正式內測比賽中,兩個AI和天梯等級爲白金/鑽石的幾名人類玩家進行過切磋。比賽結果如上表所示,雖然數據量有點少,但它還是透露了一個信息:AI已經有可能在比賽中擊敗白金甚至鑽石級別的二五仔。

星際2天梯等級(從低到高):青銅<白銀<黃金<白金<鑽石<大師<宗師

TStarBot1 VS TStarBot2

研究人員還測試了TStarBot1和TStarBot2相互對抗,出人意料的是,獲勝者始終是TStarBot1,因爲它已經掌握簡單、殘暴、有效的蟲族戰術之一:Zergling Rush。即開局就爆小狗(甚至到敵方臉上拍基地),快攻推平敵方基地。TStarBot2沒有學會應對方法,所以屢戰屢敗。

值得注意的是,雖然TStarBot1在AI內戰中“百戰百勝”,但它在應對人類時戰術單一。一旦人類玩家發現它只會用Zergling Rush,TStarBot1就再也無法獲勝了。而導致這個問題的原因可能是以下兩個:1.缺乏多樣性的隊手——雖然遊戲內置機器人已經很完善,但它們的動作空間還比不上人類。2.缺乏深度探索——更先進的戰術藏於科技樹中,TStarBot1這樣樸素的探索行爲註定沒法成長。

論文地址:arxiv.org/pdf/1809.07193.pdf

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