- +1
OpenAI公開Dota2論文:勝率99.4%
選自OpenAI
作者:Berner等
機器之心編譯
參與:熊貓
OpenAI 的 Dota 2 人工智能智能體項目 OpenAI Five 已經經歷了三年的發展。在 2019 年 4 月 13 日,OpenAI Five 成為了首個戰勝了世界冠軍戰隊的 AI 系統,但是當時 OpenAI 沒有公開相關的論文和算法細節。近日,OpenAI 終于發布了描述該項目的論文《Dota 2 with Large Scale Deep Reinforcement Learning》。

相比于國際象棋或圍棋等之前的 AI 里程碑,復雜視頻游戲更具備現實世界問題那樣的復雜性和連續性。而 Dota 2 是 Valve Corporation 于 2013 年發行的一款多人實時戰略游戲,該游戲在 2013 年到 2019 年之間的同時在線玩家數在 500 000 到 1 000 000 之間。
該游戲也有很多全職的職業玩家;其 2019 年國際冠軍賽的獎金池已經超過了 3500 萬美元(這是全世界電子競技游戲中最多的)。該游戲由于一局時間較長、部分可觀測性以及高維度的觀察和動作空間,這些給強化學習帶來了嚴峻的挑戰。另外,Dota 2 的規則也很復雜——該游戲已經歷經超過十年的活躍開發,其游戲邏輯使用了數十萬行代碼來實現。
要為這樣復雜的環境創造合適的智能體,關鍵是要將現有的強化學習系統擴展至前所未有的規模,這需要在數以千計的 GPU 上執行幾個月的訓練。為了實現這一目標,OpenAI 構建了一個分布式的訓練系統,訓練出了名為 OpenAI Five 的 Dota 2 游戲智能體。2019 年 4 月,OpenAI Five 擊敗了一支 Dota 2 世界冠軍戰隊(OG 戰隊),這是首個擊敗電子競技游戲世界冠軍的 AI 系統。OpenAI 也將該系統開放給了 Dota 2 社區進行對戰試玩;在超過 7000 局游戲中,OpenAI Five 的勝率為 99.4%。
論文地址:https://cdn.openai.com/dota-2.pdf
OpenAI 表示,訓練過程還面臨著另外一個難題:游戲環境和代碼一直在不斷升級和變化。為了避免在每次變化之后再從頭開始訓練,他們開發出了一套工具,能以最低的性能損失繼續完成訓練——OpenAI 將其稱之為「手術(surgery)」。在超過 10 個月的訓練過程中,OpenAI 大約每兩周執行一次手術。這套工具讓 OpenAI 可以經常改進他們的智能體,這只需要很短的時間——比典型的從頭開始訓練方法要短得多。隨著 AI 系統解決的問題越來越大,越來越難,進一步研究不斷變化的環境和迭代開發就顯得至關重要了。
Dota 2 難在哪兒?
Dota 2 游戲對戰發生在一個方形的地圖中,兩支隊伍各自保衛位于對角線上的己方基地。每支隊伍的基地都有一個遠古遺跡(ancient);
當某方的遠古遺跡被敵方摧毀時,游戲便宣告結束。每支隊伍由 5 位玩家組成,每位玩家控制一個英雄單位,每個英雄都有自己獨特的技能;
游戲期間,每方都有持續派出的「小兵(creep)」單位,但這些小兵不由玩家控制,它們會按路徑向敵方基地前進,并會攻擊任何出現在其攻擊范圍內的敵方單位和建筑;
玩家可從小兵收集金幣和經驗等資源,然后可通過購買物品和升級來提升英雄的戰斗力。
為了玩 Dota 2,AI 系統必須解決多種難題:
長時間對局。Dota 2 游戲一般會以 30 幀每秒的速度持續大約 45 分鐘。OpenAI Five 每 4 幀選擇一個動作,則每局比賽需要執行大約 20000 步。比較一下,國際象棋一般持續 80 步,圍棋是 150 步。
部分可觀察的狀態。每支隊伍都只能看見己方單位和建筑附近的部分游戲狀態;地圖中的其余部分都是隱藏起來的。如果要玩得好,需要基于不完整的數據進行推斷以及建模敵方的行為。
高維度的動作和觀察空間。Dota 2 有一個很大的地圖,地圖中有 10 個英雄、幾十個建筑、幾十個非玩家單位,另外還有神符、樹和偵查守衛(眼)等長尾的游戲特征。
OpenAI Five 每個時間步驟會觀察大約 16 000 個值(大部分是浮點數和有數百種可能性的類別值)。同時,OpenAI 對動作空間進行了離散化處理;其模型在每個時間步驟從 8000 到 80000(具體數量取決于英雄)個動作選擇一個。相比之下,國際象棋每次觀察需要大約 1000 個值(這些值大都是有 6 個可能性的類別值),圍棋大約需要 6000 個值(全都是二元值)。圍棋的分支因子(branching factor)大約是 35 個可行動作,圍棋的大約是 250。
另外需要說明,OpenAI Five 在玩常規模式的游戲時還有兩個限制條件:
英雄池只有 17 個英雄——在常規游戲時,玩家是在比賽前從 117 個英雄中選擇一個,而 OpenAI Five 目前只支持其中 17 個;
不支持能讓玩家同時暫時控制多個單位的物品(幻象神符、支配頭盔、幻影斧、死靈書)。OpenAI 移除這些物品的原因是控制多個單位會引入額外的技術復雜性。
訓練系統
讓 AI 玩 Dota
為了將「以超人級水平玩這個復雜游戲」的模糊問題轉換成一個可以優化處理的詳細目標,OpenAI 提出了以下框架。
盡管 Dota 2 引擎的運行頻率是 30 幀每秒,但 OpenAI Five 每隔 4 幀(稱為一個時間步驟)才采取一個動作。在每個時間步驟,OpenAI Five 都從游戲引擎接收一個觀察,其中編碼了作為人類玩家可以看到的所有信息,比如單位血量、位置等。然后,OpenAI Five 向游戲引擎返回一個離散的動作,其中編碼了一個所需的移動、攻擊等。
當然,某些游戲機制是用人工編寫的邏輯控制的,而不是使用策略。這其中包括:英雄購買物品、獲得技能的指令、對獨特的信使單位的控制、英雄應當保留物品。OpenAI 表示,他們相信用 AI 方法替代人工編寫規則最終能讓智能體取得更好的表現,但即便如此,現有的智能體就已經取得了超人類的表現。
在訓練期間,環境中的某些屬性經過了隨機化處理,包括游戲中的英雄和英雄購買的物品。因為在與人類對手對戰時會出現各種不同的戰略和情況,所以為了保證穩健性,必須進行足夠多樣化的訓練。
OpenAI 將策略 π 定義為從觀察歷史映射到動作的概率分布的函數,并將其參數化為了一個有大約 1.59 億個參數(θ)的循環神經網絡。該神經網絡主要由單層的 4096 單元的 LSTM 構成(見圖 1)。給定一個策略,OpenAI 玩游戲的方式是在每個時間步驟不斷重復地將當前觀察傳遞為輸入,然后從輸出的分布采樣一個動作。

為了控制一支隊伍的五個英雄,OpenAI 為每個英雄都使用了同一策略函數(具有相同的參數 θ)的不同副本。因為 Dota 2 中的可見信息和戰爭迷霧(迷霧中友方單位附近的區域是可見的)是全隊共享的,所以每位英雄的觀察幾乎都是相同的。
不過,OpenAI Five 并不直接使用屏幕上的像素信息,而是使用了一個數據數組集來近似人類玩家可獲得的信息。這樣的近似是不完美的;人類玩家能夠獲得的很多片段信息都沒有被編碼在觀察中。另一方面,盡管 OpenAI 已經盡力確保模型獲得的所有信息都是人類可以獲得的所有信息,但人類在每個時間步不可能同時看完所有可用信息——人類必須主動點擊地圖和狀態指示器的不同部分才行。
對策略進行優化
OpenAI 的目標是找到能最大化與人類職業玩家對戰時獲勝的概率的策略。在實踐中,研究者對獎勵函數執行了最大化操作,這個獎勵函數還包含一些其它信號,比如角色死亡、收集資源等。
另外,他們還應用了多種技術以在計算獎勵函數時利用該問題的零和多玩家(zerosum multiplayer)結構。比如說,通過減去敵方隊伍所獲得的獎勵,使得智能體的獎勵被對稱化處理(symmetrize)。
OpenAI 團隊在該項目一開始就構建好了這個獎勵函數,因為團隊對游戲的有一定的了解。盡管隨著游戲版本更新,這個獎勵函數也有過些許變化,但他們發現初始的獎勵選擇效果已經很好。而之后增加的獎勵信號對訓練成功而言也非常重要。
對于策略的訓練則使用了近端策略優化(PPO),這是 Advantage Actor Critic 的一種變體。這種優化算法使用了通用優勢估計(GAE),這是一種標準的基于優勢的方差縮減技術,可穩定和加速訓練。OpenAI 使用了一個中心化的共享式的 LSTM 模塊來訓練網絡。這一模塊會向不同的全連接層提供輸入,從而得到策略和價值函數輸出。

OpenAI 使用了從 Dota 2 收集的自我博弈(self-plaer)經驗來訓練策略;在 16 個時間步的樣本上使用了帶有截斷式的反向傳播的 Adam 優化器。
系統使用「Rollout」運行自我博弈。它們以接近 1/2 的實時時間運行這些游戲,因為 OpenAI 團隊發現以這樣的速度能并行運行略多于兩倍的游戲,從而增大總吞吐量。
「Rollout」能以異步的方式發送正在進行的游戲中的數據,而不是等到整局游戲結束才發送數據進行優化。
整個系統運行在自定義的分布式訓練平臺 Rapid 上,基于谷歌的云平臺上。為了執行快速 GPU 訓練,研究者還使用了 blocksparse 軟件庫。
通過「手術」實現連續遷移
當然隨著項目推進,代碼和游戲環境也在逐漸變化。為了解決從頭開始訓練的問題,OpenAI 提出了一種名為「手術(surgery)」的新方法。
「手術」可被視為一套工具集,它能夠對舊模型執行離線操作,從而得到與新環境兼容的新模型。即便這個新模型的參數向量與舊模型的大小和語義不同,但它也仍然能以同樣的水平執行游戲策略。然后,OpenAI 使用有新參數向量的新模型開始在新環境中進行訓練。在環境、觀察和動作空間都不變的最簡單情況下,其標準簡化為:堅持讓新策略實現與舊策略一樣的從所觀察狀態到動作的概率的函數:
這是保留變換的 Net2Net 風格的函數的一個特例。OpenAI 已經開發出了能盡可能準確地實現公式(1)的工具(如添加觀察、擴展層和其它情況);而當對環境、觀察空間或動作空間的修改類型無法完全滿足準確實現的標準時,也可以近似地實現它。

「手術」能在無損性能的同時實現連續的訓練(見圖 4)。

實驗和評估
OpenAI Five 是從 2018 年 6 月 30 日到 2019 年 4 月 22 日的單次訓練過程的產物。經過十個月的 770±50 PFlops/s·days 計算量的訓練之后,其在三局兩勝制比賽中擊敗了 Dota 2 冠軍戰隊,并在持續多日的在線展示中擊敗了 99.4% 的人類玩家。
為了有效地利用這種水平的算力,整個系統進行了三個方向的擴展。第一,批大小為 100 萬到 300 萬的時間步(將其分組為長度在 16 的展開式 LSTM 窗口)。第二,使用了超過 1.5 億參數的模型。第三,OpenAI Five 的訓練用去了 180 天(由于重啟和恢復,實際時間超過 10 個月)。
相比于 AlphaGo,OpenAI Five 的批大小大 50 到 150 倍,模型大 20 倍,訓練時間長 25 倍。但同期也有另一些研究能在規模與這一項目匹敵或甚至規模更大一些,比如 DeepMind 的《星際爭霸 2》智能體研究《Grandmaster level in StarCraft II using multi-agent reinforcement learning》以及 OpenAI 的一項機器人研究《Solving Rubik's Cube with a Robot Hand》。
人類評估
在訓練期間,OpenAI Five 與許多業余玩家、職業玩家和職業戰隊進行了比賽,以便跟蹤記錄研究進展。
4 月 13 日,OpenAI Five 與 Dota 2 現世界冠軍 OG 戰隊進行了一場高水平的競技比賽,在三局兩勝比賽中獲勝(2-0),這表明 OpenAI Five 確實能學習到最高水平的操作技術。
但是,機器學習系統通常不能很好地應對意料之外的情況。盡管在展示比賽中勝過世界冠軍確實能說明 OpenAI Five 能力出色,但這不能證明其能夠廣泛地理解人類社區可能面臨的各種難題。
為了探索 OpenAI Five 能否被穩定地用于創造性或分布外的玩法,OpenAI 啟動了 OpenAI Five Arena(競技場),在 2019 年 4 月 18-21 日期間開放給公眾進行在線挑戰。OpenAI Five 與 3193 支隊伍共進行了 7257 局比賽,勝率為 99.4%。29 支隊伍在總共 42 場比賽中擊敗了 OpenAI Five。
盡管人類評估才是最終目標,但也需要在訓練期間對智能體進行自動化的評估。OpenAI 的做法是以 TrueSKill 評分系統為指標,比較一些固定的參照。圖 3 給出了 OpenAI Five 的 TrueSkill 評分隨時間的變化情況。

通過 Rerun 驗證「手術」的效果
為了驗證新提出的「手術」方法所能節省的時間和資源,OpenAI 在 2019 年 5 月 18 日到 2019 年 6 月 12 日之間訓練了另一個智能體,但僅使用了最終的環境、模型架構等。OpenAI 稱這個訓練過程為 Rerun,其沒有經歷蜿蜒曲折的游戲規則變化、對神經網絡參數的修改、對超參數的在線實驗等等。
Rerun 完成了兩個月的 150 ± 5 PFlops/s·days 計算量的訓練(見圖 4)。這個時間跨度顯著長于「手術」變化的頻率(每 1-2 周一次)。簡單比較來看,如果在 20 次重大手術之后的每一次都從頭開始訓練,則該項目需要耗時 40 個月,而不是 10 個月(在實際操作時,一般更傾向于做更少的改變)。手術的另一個優勢是總是會有能力出色的智能體可供評估,這能顯著收緊實驗改變的迭代周期。對于 OpenAI Five 的目標(探索全新任務和構建全新環境)而言,持續性的訓練具有顯著的重大優勢。

當然,在環境是預構建的和一開始就被很好理解的環境中,對「手術」的需求會很小。Rerun 消耗的資源僅有 OpenAI Five 的 20%:如果能提前獲取最終訓練環境,就沒有必要在不同的游戲版本上開始訓練。
Rerun 的最終性能比 OpenAI Five 更好,與 OpenAI Five 最終版對戰的勝率超過 98%。OpenAI 團隊的想法是希望驗證最終的代碼和超參數可以重現 OpenAI Five 的性能,因此他們就此停止了訓練。他們相信 Rerun 還能實現進一步的提升,不僅包括能夠繼續提升的性能,還有學習率和視野范圍等沒有最終確定的超參數。
「手術」過程讓 OpenAI 能成功地每周修改環境。但是,OpenAI Five 最終達到的水平還是遜于從頭開始訓練的模型所能實現的水平。學習如何在長時間訓練的同時又不影響最終性能是一個很有潛力的未來研究方向。
最后,盡管目前構想的「手術」還遠不夠完美,有了合適的工具,這種方法能在無需為重啟訓練的同時,將特定的變化整合進長時間運行的實驗中。
機器之心「SOTA模型」:22大領域、127個任務,機器學習 SOTA 研究一網打盡。

本文為澎湃號作者或機構在澎湃新聞上傳并發布,僅代表該作者或機構觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。





- 報料熱線: 021-962866
- 報料郵箱: news@thepaper.cn
互聯網新聞信息服務許可證:31120170006
增值電信業務經營許可證:滬B2-2017116
? 2014-2025 上海東方報業有限公司