Dota2團戰實力蔑視人類,解剖5只“AI英雄”

Dota2團戰實力蔑視人類,解剖5只“AI英雄”

這裡寫圖片描述

去年,OpenAI 在 DOTA 的 1v1 比賽中戰勝了職業玩家 Dendi,而在距離進階版 OpenAI Five 系統戰勝人類業餘玩家不過一個月的時間,今天凌晨,它又以 2:1 的戰績再次完成對人類高階玩家的“屠殺”,GG(人類贏的最後一局純屬耍賴)。

相比之下,人類這次輸給的是怎樣的進階版“AI 英雄”?

此次,OpenAI Five 對陣 5 個高階玩家(解說員 前職業玩家)——Blitz, Cap, Fogged, Merlini 和 Moonmeander,他們的平均天梯分 7000 左右。反觀 OpenAI Five,根據公開資料,它的實力相當於人類玩了 180 年的遊戲,而且每天都與自己進行對抗學習,學習過程非常複雜,需要在 256 個 GPU 和 128,000 個 CPU 上執行擴充套件版本的近端策略優化(PPO)進行訓練。



這裡寫圖片描述

它對每個英雄使用了單獨的 LSTM(長短期記憶遞迴神經網路),並且沒有人類資料,它會學習可識別的策略,這表明強化學習可以產生可實現規模的長期規劃。

此外,就應用環境而言,不同於棋牌遊戲的固定規則,像 DOTA2 這樣的複雜視訊遊戲是 5v5 對決的戰略遊戲,況且,DOTA 遊戲已經不斷開發了十幾年,遊戲邏輯中有數十萬行程式碼,且每兩週更新一次,遊戲語義在不斷產生變化。

因此,AI 玩 DOTA 的難度可想而知,它首先需要解決以下四大問題:長時視野;區域性觀察狀態;高維、連續的動作空間;高維、連續的觀察空間。

▌模型架構

OpenAI Five 的每個網路都包含一個單層的、1024-unit 的 LSTM,它可以檢視當前的遊戲狀態(從 Valve 的 Bot API 中抓取),並通過幾個可能的 action heads 發出動作。每個 head 都具有語義含義,例如延遲動作的刻度數,選擇哪一個動作,該動作在單元周圍網格中的 X 或 Y 座標等。Action heads 是獨立計算的。

OpenAI Five 使用觀察空間(observation space)和動作空間(action space)進行互動式演示。OpenAI Five 將世界視為 20000 個數字的列表,並通過發出一個包含 8 個列舉值(enumeration values)的列表來執行操作。通過選擇不同的行動和目標,我們可以瞭解 OpenAI Five 如何編碼每個動作,以及如何觀察世界。下圖是人類會看到的場景。

這裡寫圖片描述

OpenAI Five 可以對與它所看到的相關的丟失狀態片段做出反應。例如,直到最近,OpenAI Five 的觀察區域才包括狙擊手的技能範圍(子彈落在敵人身上的區域)。然而,我們觀察到 OpenAI Five 可以學習走出(雖然不能避免進入)狙擊手的技能範圍,因為當進入這個區域時,它可以看到自己的血量是在減少的。

▌探索

就算有學習演算法能夠處理較長的視野,我們仍然需要對環境進行探索。因為即使我們設定了各種限制,仍然有數百種道具、幾十種建築、法術、單元型別、長尾遊戲機制,以及因此產生的各種組合,想要有效地探索這個巨大的空間其實並不容易。

OpenAI Five 可以從隨機權重開始,從自我博弈中學習。 為了避免“策略崩潰”,智慧體在訓練的時候,80% 的遊戲都是自我對抗, 另外 20% 則是與過去的自己進行對抗。在自我對抗時,英雄首先會漫無目的繞著地圖遊走。經過幾個小時的訓練後,智慧體開始有了一些概念,例如建造、中路對線等。幾天之後,他們始終採用基本的人類策略:試圖從對手那裡偷走 Bountyrunes等。 通過進一步的訓練,它們可以熟練掌握 5 個英雄集中推塔的高階策略。

OpenAI Five 使用了 1v1 機器人裡的隨機化的方法 。它還使用了一個新的路線分配(lane assignment)策略。 在每個訓練遊戲開始時,他們隨機地將每個英雄“分配”到一些 lane 的子集,在到隨機選擇的時間之前,如果英雄偏離這些路線,就會受到懲罰。

當然,也有獎勵來幫助智慧體探索環境,主要包括淨值(net worth)、殺敵數(kills)、死亡數(deaths)、助攻(assists)、最後一擊(last hits) 等指標。他們通過減少其他團隊的平均獎勵,來對每個智慧體的獎勵進行後續處理,以防止智慧體找到正和博弈(positive-sum)的情況。

他們也對道具和技能構建進行了硬編碼,同時,也通過指令碼基線( scripted baseline)引入了信使管理( Courier management)。

▌Rapid

這裡寫圖片描述


這個系統的實現使用了被稱為“Rapid”的通用 RL 訓練系統,它適用於任何多人模式環境。

這裡寫圖片描述

訓練系統分為 rollout workers,執行遊戲副本,智慧體(agent),用來收集經驗,優化器節點(optimizer nodes)執行跨 GPU 組的同步梯度下降。每次訓練還包括分別對訓練機器人以及樣本機器人進行評估的元件,以及監視軟體,比如 TensorBoard,Sentry 以及 Grafana。

這裡寫圖片描述

在同步梯度下降運算過程中,每一個 GPU 元件都會運算自己負責的批處理部分的梯度計算,隨後整體梯度再進行平均計算。他們原本使用訊息傳遞藉口的規約演算法進行平均計算,現在則使用英偉達的多卡通型框架 NCCL2 的封裝函式來實行 GPU 平行計算以及網路間資料傳輸。同步 58MB 大小資料(用於 OpenAI Five 的引數)的延遲顯示在表格之中,延遲時間足夠低能滿足大部分資料被進行並行運算的 GPU 標記。

▌與人類的不同

OpenAI Five 獲取的資訊和人類完全一致,但是系統能馬上反應到類似位置、生命值以及物品更新情況等等人類玩家需要定時觀察的資訊。OpenAI Five 的平均 APM 在 150-170 之間(理論上最快可以達到 450 考慮到每四幀一動),平均反應時間為 80 毫秒,比人類平均速度要快很多。

很多職業選手在去年 TI 結束後都使用 bot 進行訓練。根據 Blitz 的說法 solo bot已經改變了人們對 solo 賽節奏的看法,bot 偏向於快節奏風格,現在大多數選手也已經使用快節奏風格來和 bot 抗衡。



這裡寫圖片描述

AI 在 Dota2 中的節奏和執行力非常強了,這是不是意味著它沒有優化空間了?當然不是, 此次的 OpenAI Five 還是有諸多限制,比如系統在進行最後一擊時較弱,其客觀優先順序與一個共同的專業策略相匹配,獲得戰略地圖控制等長期獎勵往往需要犧牲短期獎勵。

Open AI 方面稱,在今年後續的 TI 表演賽上,還會有職業玩家繼續挑戰 AI,但結果想來也是實力“嘲諷”人類。或許,更讓人期待的是,在 Dota2 這樣的複雜遊戲中,是否會出現“AI vs AI”的神仙打架比賽?