如何設計星際爭霸2等遊戲AI?解密決策AI的應用及其在遊戲中的設計!
- 2021 年 11 月 17 日
- AI

編輯 | 青暮
影片回放鏈接://live.yanxishe.com/room/972
人工智慧技術已經進入從感知智慧到決策智慧演變的關鍵節點,決策AI技術的前沿進展和突破也到了在實際場景部署和應用的階段。決策AI技術應用的成功與否直接決定了這一技術在產業界的認可程度和決策AI技術的發展方向,應用領域的難題也可以反過來指導決策AI理論的發展和創新。另一方面,建立成熟的,有一定規模的應用生態成為了決策AI技術應用的另一個重要議題,生態構建的成功與否體現了決策AI技術的應用門檻、其通用能力和泛化能力以及對不同任務的適應能力。應用生態也可以更加廣泛地拓展決策AI的應用領域,打通不同應用領域所面臨的問題和挑戰。
此外隨著人工智慧技術的發展,從atari到go再到星際爭霸2,結合深度學習、強化學習以及大規模分散式平台訓練出來的AI已經在各個競技項目的水平已經比肩甚至超越了人類,但在複雜場景下AI仍然面臨著巨大挑戰,遊戲AI落地還需解決訓練成本,模型的泛化性和魯棒性等多個難題。

決策AI是一類不同於感知性AI的人工智慧方法,它更側重的是在動態環境中進行決策和交互的策略網路。
決策AI的難點與挑戰

決策AI主要包括以模仿學習、強化學習為主的策略搜索方法的技術。目前,它主要應用於自動駕駛、城市交通控制、遊戲AI、和推薦系統等領域。
決策AI在學術和應用層面面臨著三個主要的難點和挑戰:
a) 環境側的多模態輸入
在環境中,模型的輸入通常是多模態的。比如右上角的圖片所示的典型樣例:自動駕駛場景。與學術界的前提不同,實際應用中的自動駕駛模型自身無法僅僅通過一張圖來獲取所有的複雜環境資訊輸入。在當前的技術中,如果想在自動駕駛領域對周圍環境進行完整的表徵,則需要若干中感測器的輸入,如影像、雷達等。
多模態輸入的問題對於有監督學習可能相對容易,但是對於強化學習來說是一個難點。
b) 環境的動態特性和不確定性
學術界中常用的強化學習方法中,其底層模型和引擎相對簡單,但對於自動駕駛或巨大的城市流模型來說,其中的動態性和不確定性是非常多的。這便會對模型的泛化和策略訓練時的魯棒性提出巨大的挑戰。
c) 環境中的資訊密度低問題
低密度資訊是所有強化學習方法都會遇到的通用問題。與監督學習相比,強化學習需要和環境進行交互來指導網路的優化方向,因此其所能提供的資訊密度相對較低。在實際的應用中這種問題會被放大。因為,在一般的情況下,對於應用環境的交互是無法做到和學術界中一樣敏捷與快速的。比如在學術界的場景中,我們可以同時啟動幾百個進程採集數據供給一個網路訓練。但是應用級別的環境,我們無法做到如此恐怖的並發量。
此外,從策略的角度出發,決策AI也存在著三大問題:
a) 模擬器和實際中的差異距離
我們知道,模擬環境無法做到與實際情況完全相同的結果。我們如果將僅僅使用模擬器所訓練出來的結果不加修飾的生搬硬套於實際,可能會產生性能上的巨大偏差。
b) 安全性提升問題
在現實環境中,不論在訓練還是測試的場景中,都有一些無法接受的失敗場景,這些場景一旦發生,則會產生巨大的損失。比如自動駕駛或者線上部署運行的推薦服務等等。在這些場景中,除了需要考慮模型的性能外,還需要保證演算法的穩定性。但是對於策略模型,其本身可是做一個黑箱,因此我們無法保證和證明其安全性。
c) 模仿機器學習中的數據位移問題
數據位移是指,人們所設計的策略網路(通常是從專家策略或從數據中學習到的策略),與實際應用中的輸出無法做到完全一致,加之模型在環境中的運行具有持續性的特點,因此它們通常會產生累計誤差。而累計誤差在數據集中通常難以體現,因此會導致累計誤差的總體偏移量逐漸加大,最終會達到模型無法學習或容忍的程度。這個問題可能會導致策略網路輸出一些原數據集中不存在的、危險的結果動作。

在此處,我們以自動駕駛為例,介紹決策AI在其中所面臨的一些問題。
a) 模仿學習
首先我們介紹一個模仿學習的例子:條件模仿學習Conditional Imitation Learning.
條件模仿學習的目標是實現端到端的模仿機器學習模型。其輸入端所接入的輸入數據是例如影像等觀察數據Observation Data,其輸出是駕駛的動作Action,即控制訊號。
條件模仿學習提出,模型應該在輸入感測器訊號的同時,輸出一個離散的駕駛的控制訊號Command,這個控制訊號可以用於控制車輛的動作。
據此,網路可以分成兩個部分。
第一個部分為主幹部分,此處所使用的是一個ResNet網路,當然也可以是CNN、Transformer等其他結構。
第二個部分則需根據Command的不同分成不同的分支,每個分支負責對Command產生不同的實際操控動作。
因此,模型可以實現對當前環境的解讀工作,也可以將駕駛所需要的部分放在模型前面,並且共享參數。最後,隨著操控指令Command的不同,駕駛車輛可以做出不同的動作。
條件模仿學習是一個具有代表性的模仿機器學習工作。很多後續工作借鑒該方法的設計語言和模型結構。
上圖的第二張是條件模仿學習的一個變種形式,CIRLS。它在原始結構的基礎上,使用了更深的Resnet,並且在輸入端考慮了車輛的速度。此外,它的輸出端也有一個branch分支,來負責速度的輸出。網路中還有速度輸出的loss函數。這樣做是為了讓模型能夠在輸入觀測數據的同時,考慮車輛的速度因素。

b) Learning by Cheating
第二個例子,Learning by cheating,欺騙式學習。它要求在原始的基礎上進一步強化模仿學習的性能。它提出,如果我們希望模型根據輸入的RGB影像直接學習出一個動作,其難度較高,但是如果能夠得到一些具有privileged特權特點的資訊,這些資訊是從輸入中無法得到的,那麼在訓練中,演算法就可以將這些privileged特權模型當做欺騙模型,並且在訓練中使用在線的目標模型,從而避免模仿學習的偏移問題。
它的具體做法是,首先訓練欺騙模型,然後在線地訓練目標模型。也就是說目標模型在訓練的過程中,演算法可以直接將其輸入分給另外的模型,從而得到兩個模型的動作結果。如此一來,即使目標模型在運行中出現一些偏移,演算法也可以直接反映到目標模型應該如何改進的方向上從而取得更好的效果。
它的另一個提升在於,模型不會直接輸出動作訊號,而是將其輸出分拆。模型首先輸出一條預測的行進軌跡,具體來說,此軌跡是5個預測的駕駛點。有了駕駛點後,模型便可以通過一些傳統的控制方法,如PID控制器來得到最終的在汽車上執行的控制訊號。因此,即使我們的預測軌跡有一些偏差和誤差,演算法也可以對其加以限制。如此一來,我們的PID控制器得到的駕駛訊號的安全性就能得到提升,PID控制器對雜訊輸入也就更加魯棒了。

LBC相對於前文的CIL方法,具有大幅的性能提升。在最高版本的模擬器上,LBC在有行人和無行人的場景中都能獲得更高的模擬成功率。

在這裡,他們做了一些錯誤分析。
從圖中我們看到,在各種場景中,LBC犯錯的次數比CIL方法低的多。其中我們主要看一下交通燈場景,如果模型的輸入只有影像資訊,那麼它的交通燈資訊只能佔到很少的部分,因此學習困難較大。但如果我們有了特權模型,其中交通燈訊號就能通過較容易的方式交給策略網路,也就能實現十分明顯的性能的提升了了。
c) Affordance Learning

對於強化學習方法,文章也進行了若干嘗試。對於強化學習,如果演算法直接使用強化學習訓練具有大量參數的模型時,如ResNet,那麼模型可能會無法收斂。因為其輸入資訊源的資訊密度較低。因此我們需要通過一些手段來降低最終收斂所需的數據量和抽象難度,以此來滿足強化學習的數據需要。其中第一解決方法是啟示學習Affordance Learning。
啟示學習(Affordance Learning)方法假設學習空間中存在一種表示,它能夠從輸入的數據中得到一個包含所有駕駛資訊的全量表達資訊Latent Representation,我們只需要將全量資訊作為強化學習的輸入,就可以降低表達的維度、降低強化學習所需的複雜度和收斂所需的數據量和計算次數。
此時的輸入仍然是感測資訊,它首先通過有監督的方式預測此時交通燈的狀態以及距離等標籤資訊。然後演算法將Head去掉,將骨幹凍結,再將前面的輸出作為強化學習環境的輸入,從而觀察數據,並進行強化學習。通過這樣的方式,演算法就能在計算複雜度可以允許的情況下獲得較好的收斂效果。
d) Latent Reinforcement Learning 潛在強化學習

第二個思路與第一個思路類似,但是它不再需要感知的標籤。它只需要一個變分編碼器VAE來重構模型的輸入觀察資訊本身。
如圖所示,在輸入了RGB影像後,模型能夠通過訓練變分編碼器,輸出與輸入相同的RGB影像。那麼此時,我們可以通過網路中的編碼器Encoder得到低維度的駕駛相關資訊。然後模型可以再使用編碼器的輸出作為強化學習的觀測輸入,從而訓練強化學習相關的部分。這種方法也取得了不錯的效果。
e) Transformer

最新的方法則是借鑒了Transformer的設計思想。Transformer的強大需要龐大數量的帶標籤數據集合。因此,對於Transformer的成功應用,也能直接將其作為網路的直連部分使用。
比如在這篇論文的工作中,它將Transformer用作多模態融合資訊。從圖中我們可以看到模型由兩個模組組成,它們的輸入分別是RGB的影像以及雷達二值圖。這兩類輸入資訊的處理流結構互相獨立,並分別得到輸出。在模型的中間部分,演算法使用了Transformer結構來融合兩者的特徵圖Feature Map。在融合層的選擇上,該模型使用了Attention注意力機制,並在融合後,將特徵圖送回網路,得到下一層的結果。
該文章認為,如果只使用RGB的原始輸入,則演算法對於「其他車輛突然出現在攝影機範圍內」的行為事件的感知能力差,因此需要雷達數據的多模態輔助。但是雷達訊號僅在距離較近的時候具有較強的資訊密度;當距離較遠時,其感知能力和感知效果較差。值得注意的是,雷達對於交通紅綠燈訊號是沒有感知能力的。因此,作者通過多模態輸入以及基於Transoformer的融合結果,實現對這兩者輸入處理能力的加和。
此外,該工作也沒有直接輸出控制訊號,而是借鑒了之前的工作,輸出預測的預測軌跡。具體來說,它沒有輸出具體的預測點,而是通過一個循環網路(門控循環單元GRU)結構來迭代地輸出若干個坐標點,再通過將這些坐標映射到頻率坐標系中,然後將頻率坐標系中的結果輸入給PID控制器,並最終得到最終的輸出給汽車的動作控制訊號。因此我們看到,這種方法融合了模仿學習的優點,還加上了Transformer的交互能力,實現了目前模仿學習領域中最好的效果。

在這裡他們進行了效果對比。但是其公平性有待商榷,因為其中所應用的專家策略本身,就已經在借鑒了前述方法進行了部分更新。但我們目前仍舊認為,該方法的是有效的。只不過其實際的提升不會像表中結果所示一樣誇張。
此外,他們分析了錯誤類型。從表格中我們可以看到,模型演算法的主要提升點是「它車出現Collision Vehicles」和「其他物品出現Collision Layout」場景的規避。對於交通燈場景的表現上,它也有一定的提升,但是並未從本質上解決交通燈的問題,也就是交通燈的資訊在RGB影像上本身的學習難度仍舊很大。
Transformer還提供了關於Attention的可視化解讀。該工作將中間層所屬楚的特徵圖Feature Map進行了可視化處理,並發現Transformer可以學習到對當前駕駛最關鍵的決定性資訊。比如,他們發現RGB影像中,它車和交通燈模組的關注度提高,這符合我們的預期與人類社會的基本交通經驗。該發現證明了其提出方法的有效性。
以上便是自動駕駛和決策AI的發展歷程。

我們基於決策AI構建了一項自動駕駛的決策AI平台,名叫 DI - drive。它的功能主要是將模仿學習、強化學習為代表的決策AI方法融合到一起,並且,將同步融合各種不同的模擬數據的輸入輸出。同時,它還能定義自動駕駛中的策略和環境介面。圖中展示了上述決策過程。

它的主要優點如圖所示。在這裡我們主要講其中的第四點。駕駛場景和案例。
當前學術界對於自動駕駛的評價指標,需要演算法首先給定駕駛的起點以及終點,並給出它車的數量和行人的情況,然後直接測試模型在該場景下的成功率。然而他車和行人的軌跡和行為都是隨機的。
在該種前提下,它可以較為全面的評估駕駛策略的有效性和成功率,但是它無法具體評估某項駕駛策略在具體場合中的表現。例如,某項策略在紅綠燈場景的表現很好,但是對於跟車和超車的表現則未能盡如人意。
因此,為了能夠分場景和案例的對駕駛策略進行評估,我們在AI-Drive的強化學習模型中提出了Casezoo技術。

Casezoo的主要特點是,它首先使用了很多實際採集的真實數據,即將超車和跟車等場景的數據在模擬器中進行了構建。第二點,它的每個場景都包含一個行為樹(Behaviors Tree)和駕駛標準(Criterion)。
行為樹是指:那些必須按照具體的步驟和場景完成特定的行為。比如上面的第三個圖中所示的場景中,若黃車想進行超車行為,則藍車也要跟隨其完成超車。那麼此時需要滿足基本的駕駛規範,即沒有逆行和超速等違規行為。
因此,它需要從公共的邏輯出發,但是此時的場景中會有一些雜訊影響。例如,車間距離可能有所差異。但是不論當前場景如何,它的目標都是明確的,即完成後車跟隨前車進行超車的任務,也就是以相同軌跡完成超越前車。但如果後車並沒有按照前車軌跡行進,不觸發行為樹的完整路徑,而是以其他方式完成該任務(比如用另一條車道完成超車),則此場景不會觸發。
通過這樣的方式,我們能夠對各個場景的駕駛行為進行細分和歸類。

決策AI包括很多方面。人工智慧現在已經廣泛的應用在人臉識別等感知優化的場景,但是想讓模型具有真正的智慧,則需要將其落實到一些需要進行決策的場景。遊戲AI便是其中的一部分。
在具體介紹之前,我們首先要對其提出一個問題——我們為什麼要研究遊戲AI?我們在其中投入了大量精力和計算資源,其目的如何?

AGI
首先我們介紹一個基礎名詞,Artificial General Intelligence,AGI,即通用人工智慧。
相信我們每位人工智慧的從業者都是想造出具有通用能力的人工智慧模型,並且幻想著有朝一日它能像真人一樣成為我們的朋友,和我們自然的交流、工作和生活。但是我們如實現和何達到通用人工智慧的程度呢?
其實現在人工智慧已經應用於諸多領域中了。比如在人臉識別領域,我們每天手機的解鎖或支付工作都會用到人臉識別技術;在自然語言處理領域,我們在進行自動機器翻譯、語音轉文字的識別、呼叫siri、和小愛同學交流的過程中都用到了自然語言處理技術進行文本語言處理;在推薦系統領域,我們在每天打開購物網站挑產品,或者看新聞網站的時候,應用都會給我們推薦很多可能感興趣的類似的內容——它掌握了我們的喜好,並且總能給我們推薦一些欲罷不能、流連忘返的商品和內容。
人工智慧已經深入到生活的方方面面。但是上述的應用其實都沒有達到通用人工智慧的程度。我們通過這些例子,說明AI僅能在某些領域中完成對應任務,但是無法達到通用人工智慧的高度。
我們在研究通用人工智慧效果或者能力程度的時候,通常需要對其進行評估,或者進行直觀的比較。但是目前,這些評估都是單方面針對AI程度的,我們並沒有直接將人類和機器進行直觀對比。
實際上,評估人工智慧效果的最直觀和有效的方式,是人機比較。也就是,對於同樣的任務,人類是如何進行處理的,而機器又是怎樣做的。例如,我們同時要求人工智慧程式和人執行相同的任務,並直觀地比較兩者的輸出結果和實現效果。
那麼對於一個複雜的任務來說,通過如此的比較,若機器能夠達到和人類相同的反應,我們就可以說機器學習模型實現了與人類相當程度的智慧。
如果要進行人機比較,最好的方法就是進行「人機對抗」。
人機對抗

人機對抗的概念大家都不陌生。從很久之前的格鬥遊戲中,比如街霸,我們就是要去挑戰人工智慧對手。相信大家在小的時候都曾經被機器人虐的體無完膚。
時間來到2016年,AlphaGo的出現可以說是人工智慧領域的一個里程碑。它第一次讓世人了解到人工智慧的強大和潛力。AlphaGo當年在圍棋遊戲上戰勝了最強人類選手之一的李世石。
到了2019年,也有兩個讓人印象深刻的人工智慧工作AlphaStar和OpenAI的遊戲人工智慧。AlphaStar是Deepmind的一項工作,他們在星際爭霸2這款遊戲上進行了挑戰;同時期,OpenAI也在Dota2上進行了人工智慧的研究。OpenAI的工作更具有代表性,因為它不再是1v1的遊戲,而是5v5的複雜擴展場景。它涉及到了隊友間的配合。這又是一項技術的突破,實現了更加複雜場景的研究。
相信大家在剛開始玩類似遊戲的時候都有點「手足無措」的感覺,或者腦子跟不上手速的情況。這是因為這些電競筆電身的難度就很高。那麼如果在這些難度天花板級別的遊戲上,AI都能達到媲美人類的效果,那就可以證明遊戲人工智慧的智慧水平已經到了較高水準。
到最後,我們相信人工智慧能實現「終結者」的程度。在電影里,終結者是穿越到未來的2029年,並在人類世界中掀起了腥風血雨。雖然我們不想發生這樣的事情,但是在看電影的時候我們還是津津樂道樂此不疲。
那麼對於人機對抗,其本身就能夠體現AI通用智慧的水平,也是衡量人工智慧程度的一種方式和呈現。因此,很多研究人員都想在較為複雜的遊戲中進行人機對抗,並在這些場景中實現技術的應用和效果的突破。如果當前的遊戲任務比較難,我們希望AI能夠像人一樣很好的分析問題、駕馭並解決該問題和關卡。這也就可以從一些方面體現模型人工智慧的發展水平和智慧程度。
AlphaStar都做了什麼

下面我用一個例子介紹遊戲AI的設計流程,即如何打造一個遊戲AI模型。這裡我們介紹AlphaStar的星際爭霸2的人工智慧模型。之所以選擇星際爭霸2,是因為它本身操作和控制難度較高,同時它也有一款相當經典的遊戲,玩家群體數量較大,熱度高。Dota2本身是「技術戰略」類的遊戲,玩家有時需要同步操控上百個多種職業的士兵對象,所以其遊戲難度呈現指數級上升。
因此,Deepmind在圍棋問題攻克之後,便以Dota2為目標設計工作布局。在Deepmind的心裡,他們也認為Dota2比圍棋在難度上高一個級別。

如何設計星際爭霸2的AI
我們首先介紹如何設計一個星際爭霸2的遊戲人工智慧模型的程式。這是一張遊戲截圖。AI在和人類競爭的時候,一個前提是公平(拒絕開掛人人有責)。如果AI在某些方面是不公平的,這樣的對抗比較是沒有意義的。例如,當我們在實際生活中,讓人工智慧機器人和人類進行賽跑或拳擊的比較對抗,這樣是沒有意義的,兩者沒有站在同一個起跑線上,具體可參考《終結者12345》。
但是在Dota和星際爭霸2這樣的遊戲中,人工智慧和人類玩家是公平的。例如,人類能夠從螢幕中看到影像,這個影像也可以以RGB影像的格式輸入給人工智慧程式。人工智慧程式可以處理的資訊(輸入)一共有三種:
空間資訊:左下角的小地圖(圖中給出了遊戲地圖的地形,以及敵方單位和主要目標位置等宏觀資訊)。這些資訊我們可以稱作空間資訊(Spatial info)。
實體資訊:另一方面是畫面中的操控單位,比如主基地採礦建築物,還有採礦工等對象。我們可以將所有操控單位資訊整合為實體資訊(Entity info)。因此,如果敵方對象出現在我們的視野範圍內,便會在Entity info實體資訊列表中的得到體現。
標量資訊:第三部分是遊戲畫面右上角的資源、水晶、礦石、人口、種族、地圖名等資訊,叫做Scalar info(標量資訊)。除了Scalar info外,其它兩種輸入是向量資訊Vector info。
在這種設定下,人工智慧程式和人類的地位相對公平。只不過AI接收的是數字和量化的值,而人類看到的是影像,聽到的是聲音。
這是我們整合遊戲輸入資訊的部分。
AlphaStar的模型結構

1) 當前幀數據的利用
AlphaStar的工作中另一個突破則是網路結構的設計。由於星際爭霸2的遊戲操控難度較高,玩家所需處理的資訊很多、所需之行的動作相對複雜,因此,演算法需要對數據也進行十分繁複和具體的處理。
因此,演算法網路的結構設計難度相應增加。Alphastar設計了如圖所示的結構,該結構融合了各種頂尖、有效的網路結構。演算法的輸入可以分成三類,這三類輸入資訊首先需要進行整合。具體來說:
對於標量資訊Scalar info,模型直接將其輸入到全連接網路中進行處理,並得到Scalar Embedding的表示向量。
而實體/對象資訊Entity info也是一項很重要的資訊,因為演算法能夠操控的己方兵力,以及需要考慮的敵軍對象的數量通常較多,那麼此類輸入的數量和複雜度則會十分龐大。因此模型使用了Transformer的結構對其進行處理,從而獲得戰局的整體把握:例如,對方有多少兵力,我們能操控的兵力如何。通過Transformer結構,模型進而可以進行兵力的部署和戰局的洞悉,從而得到Entity Embedding。
此外,二維的空間資訊Spatial info,由於在當前的研究中,對於空間類數據的處理已經相對成熟,因此模型採用了ResNet網路結構將其處理成Spatial Embedding。
值的注意的是,當我們得到了三類Embedding的處理結果後,會對他們進行離散連接Scatter connection操作。其背後的考慮是,遊戲中,我們通常會在小地圖中看到對方的大致布局(例如一個紅點可以代表一個兵,或者多個兵,它是一個較為抽象和省略的呈現)。雖然我們無法光從小地圖中看出兵力的具體數量,但是當我們將視野大圖轉移到該部分,並將大小地圖資訊綜合考慮之後,是夠推斷出其中的具體的兵力部署和敵陣形態的。
除了當前幀的資訊外,我們還要考慮時序上的資訊,比如戰略部署(俗話說就是連招):對手的之前操作組合歷史會影響當前和之後的戰局發展,因此我們需要整理歷史時序資訊。為提取時許特徵,演算法使用了LSTM網路結構。這也是自然語言處理和時序訊號處理的經典結構,它能夠整合開局以來的所有資訊。這是我們對當前幀,以及歷史資訊的利用演算法的思路。有了這些資訊之後,模型便可以操控己方兵力實施建設、攻擊、防禦和變陣等操作。
為實現操控,演算法需要進行一系列多類型的決策。因此,模型需要首先在Action動作模組中給出Action Type的動作類型,並在Delay延遲模組中給出命令的執行時間。當有多個指令頭Head等待執行的時候,模型使用了Auto Regressive Embedding自回歸嵌入的結構進行處理。當我們在第一個head中決定了要做什麼操作動作後,其結果輸出需加入LSTM輸出的Output Embedding向量中,並將其作為後續Head的輸入。
這樣的處理方式的優點是,模型在得到指令內容的時候,也可以同時獲得之前動作的所有資訊。因此,整個動作的連貫性會增強(一頓操作猛如虎,不會各個操作如夢遊)。例如,選兵、選擇攻擊方式、點擊攻擊目標等操作會很連貫,從而更好的控制。因此通過上述的模型結構,遊戲模型動作輸出序列的合理性便可以得到保障,從而進行完整的訓練。

模型的工程細節
值得注意的是,上述結構也被應用到了OpenAI5的工作中:他們的模型也擁有三類輸入,並通過類似的方式進行整合。我們發現,在類似的複雜遊戲場景中,各大公司的解決方案都很類似,他們都使用了類似的結構和方式求解。受此啟發,這個結構可以作為一個「模板」,在以後遇到類似的遊戲問題和場景時,我們也可以對其進行借鑒甚至是套用,然後根據當時模型的需求對網路結構、損失和參數進行適當調整,便可以完美適配和應用在市面上的很多種遊戲之中。
當我們完成了網路結構的設計,接下來去看一下打造AI的具體過程,也就是訓練部分。模型可以根據訓練操作分為兩個部分,監督學習和強化學習。
a)監督學習
對於監督學習,在動作空間中,我們需要決定哪個節點、在哪、執行什麼動作——其搜索貨泛化的函數空間範圍較大。表格中是統計的不同遊戲的狀態空間。從中可以看到,由於星際爭霸2的遊戲難度很大、自由度高、操作的可選擇性和策略的種類多樣,所以其動作空間範圍龐大,與其他遊戲不處於一個量級。
那麼在如此大的狀態空間中,如果我們使用強化學習進行探索,那麼如果想搜索到勝利的結局,其探索所需的計算和存儲消耗將會驚人的龐大。因此我們最好對模型進行初步的初始化,讓其具有初步的能力,也就是利用有監督學習訓練出一個「湊合能用的」模子,然後再基於這個人類經驗起點利用強化學習進行搜索。因此有監督的學習是個必要的前置操作。
在星際爭霸2中,監督學習的過程是暴雪的研發團隊和Deepmind研發團隊聯合完成的。在這個過程中,他們錄製了來自人類玩家幾百萬、上千萬的優質遊戲錄像。然後讓模型利用其進行監督學習,從而初始化模型的基礎參數。在實際的工程實現中,DeepMind篩選出來了97萬的訓練數據。這些入選的訓練數據代表了當前最強的戰鬥力(利用評分機制,尋找高於3500分的錄像,也就是前20%人類玩家的數據)。

b)強化學習
在強化學習的數學本質上,它已經日益成熟和完善(其所基於的數學理論已經完善、自洽,並且得到廣泛的認可和應用),因此最近的若干項突破大多是集中在其在大規模工程應用上的研究之中。例如,AlphaStar用到的Active Greative策略,OpenAI 5利用的PPU方法都是如此。
強化學習的成功關鍵在於其所使用的訓練規模——他們有一套訓練系統環境,能夠讓AI人工智慧模型在其中進行次數龐大的模擬並發對局(類似於漩渦鳴人的影分身仙人模式訓練)。
在這裡,演算法將模型分成了個部分,Actor和Learner。一個Actor所對應的模型需要進行16000場對局,每個Actor可以使用128張GPU計算卡執行推斷。同樣的,Learner節點也使用128張GPU計算卡進行訓練(太壕橫了,這就是所謂的大力出奇蹟嗎)。
在實際的訓練過程中,Actor+Learner的結構形成一個Agent,模型一共包含了12個Agent,並將其複製16次,也就是進行了幾百萬次對局。在該工作中,訓練共用時44天。
當模型在如此規模的計算量上進行充分的訓練後,所輸出的最優模型便具有了處理如此複雜遊戲情況的能力。因此我們看到,在當前的遊戲AI領域,工程實現也是一個重要的課題。
強化學習怎麼用的呢

再來說一下強化學習的優化。在模型中,為了實現優化,演算法應用了比較原始和經典的Actor Greative的結構。但是對它進行了一些改進和當前場景的適配。
首先在策略損失函數上,他們應用了VTRACE損失。VTRACE損失的核心是解決多個Actor和Learner之間Gap的學習過程。此外,他們提出了UPGO的策略更新方式。UPGO能夠讓我們的模型避免一些「壞Action」的事件。他們在實踐中使用這兩種策略更新參數並訓練出良好的結果。
此外,對於Value的更新方面,演算法提出使用TD(λ)更新方式迭代。同時,演算法還加入了KL散度損失值。這是由於模型訓練的目的是獲得遊戲的勝利,那麼它可能在訓練之初陷入到一些局部最優陷阱中無法自拔,也就是學習到一些很極端的情況。比如在剛剛開局時只去製造低級的兵力攻擊其他玩家,並陷入到這條不歸路上跳不出來。那麼此時,應用了KL損失後,演算法就能夠限制強化學習所訓練出來的模型,與有監督模型之間相差不要太離譜,也就是別太「奇怪和極端」。此外熵損失Entropy Loss也能加大模型的探索空間和可能搜索到的行為範圍。
因此,在這樣大規模的訓練上,該方法的論文表示,模型能夠在天梯得分上得到Top 99.93%的結果。這樣的模型執行效果雖然不能像AlphaGo在圍棋遊戲中一樣擊敗人類中最強的大腦之一,並且「降維打擊」般的拉開絕對差距,但是它也能得到很好的執行效果。這也能說明了AI設計的成功性。
遊戲AI的挑戰

在AlphaStar的案例後,我們發現遊戲人工智慧模型仍然存在一些挑戰需要克服。具體來說,包括三個方面:
1) 遊戲的訓練效率Efficiency
首先是Efficiency效率。效率問題是當前遊戲人工智慧模型設計中比較常見的一個問題。整體模型的訓練過程需要佔用較多的計算、存儲和快取資源。然而,通過估計,我們發現這已經是大規模訓練的臨界點。那麼為了降低成本,在程式設計之初,我們是否能夠通過一些策略貨方法降低其訓練成本?畢竟,我們在訓練遊戲AI的時候,希望它實現成本的最低化,不要佔據我們過多的計算和存儲資源。
2) 遊戲的進化Evolution
另一個是遊戲的進化Evolution。我們知道Alphastar只在當時固定的一個天梯中進行了比較,沒有開放給公眾進行挑戰和熟悉,當時的它僅僅通過離線的方式完成訓練和評估。而且,這個人工智慧模型在製造出來後就沒有再與時俱進的實時更新和進化,這就導致了之後的玩家會熟悉程式的套路和習慣,並想出辦法將其反殺的結果。此問題是其他所有遊戲人工智慧模型的大問題——它們總是被人類找到漏洞並成功超越。
3) 遊戲的完整性Entirety
第三個問題是遊戲的完整性Entirety。雖然我們的目標是通用人工智慧,但是現在的遊戲AI只能解決一個特定的遊戲學習,無法實現多種遊戲學習間的遷移。所以它們其實只是適應了目標遊戲的數據映射,並沒有對「玩遊戲」事件的整體進行充分認知。因此如何設計人工智慧模型對遊戲的完整性進行認知和學習,是一個比較大的問題。畢竟,我們最終是想做一個通用人工智慧程式,使得它能像人類一樣對所有遊戲進行學習,而不是僅是成為某個/某方面遊戲的專家。
上述就是我們的在遊戲AI開發中遇到的難題。AlphaStar相關的前置工作也已經開源,大家如果感興趣的話,可以通過這些開源項目軟體參與模型的設計,或者體驗一下效果。我們希望大家能夠多多參與並給出自己的寶貴貢獻。後續我們也會開源訓練部分的相關內容,讓大家也能在星際爭霸2中訓練屬於自己的AI。如果大家有興趣的話,可以掃描二維碼獲取。

本次分享主要會對如何提高AI通用決策能力,泛化能力,適應能力以及複雜場景下AI魯棒性進行介紹。

陳若冰,商湯科技決策AI研究應用組研究員。主要從事決策AI演算法在應用場景的研發創新優化,負責Opendilab中基於DI-engine的決策AI應用平台開發,包括自動駕駛訓練平台DI-Drive,交通訊號控制任務,生物蛋白質、RNA序列搜索等任務。

周航,商湯科技決策智慧遊戲AI組高級研究員。主要負責遊戲AI中的技術和落地研究,他的主要的研究方向是大規模強化學習訓練系統、複雜場景遊戲AI設計,和通用遊戲AI設計。

點擊鏈接,觀看直播回放://live.yanxishe.com/room/972
雷鋒網雷鋒網

