DOTA2中打敗Dendi的AI如何練出?OpenAI公布兩周集訓細節
大數據文摘作品,編譯 | 姜范波、Aileen、寧云州
導讀:上個周末的Dota2人機大戰引起了很多討論,( 《Dota2獲勝的AI比AlphaGo厲害?還是媒體和馬斯克的聯合炒作》 )。很多人都期待著打敗人類頂級高手Dendi的OpenAI團隊可以公布更多技術細節。今天他們終于滿足了玩家和研究者的要求,更新博客的同時還公開了AI打敗另外幾個人類高手的精彩視頻。
對于DOTA2人工智能訓練的結果表明,如果計算夠充分,自我對練可以將機器學習系統的性能從遠低于人類的水平推向超越人類。 在一個月的時間里,人工智能系統從幾乎不敵高排名選手到擊敗頂級職業選手,并還在提升中。有監督的深度學習系統最多達到跟訓練數據集同等的程度,但在自我對練系統中,隨著代理程序越來越好,可用的數據水平自動提升。
TrueSkill評級(類似于國際象棋中的ELO評級)通過模擬機器人之間的比賽和觀察勝率的計算,對最好的DOTA機器人進行了長時間的記錄。從添加新特征并改進到算法到特征縮放,系統的每個部分都有改進。更令人驚訝的是,提升的圖形呈線性,意味著隨著時間的推移可以指數級地改善這個系統。
項目的時間表如下:從某種角度看,15%的玩家低于1.5K MMR; 58%的玩家低于3k; 99.99%低于7.5k。
- 3月1日:完成第一個經典強化學習,在一個簡單的DOTA環境中,讓Drow Ranger(卓爾游俠)可以學習風箏一個硬編碼的Earthshaker(撼地神牛)。
- 5月8日:1.5k MMR測試員說他的速度比機器人要快。
- 6月初:擊敗1.5k MMR測試員。
- 6月30日:與3k MMR測試員的對抗中,贏得大多數比賽。
- 7月8日:幾乎贏得所有與7.5K MMR半專業測試員的比賽。
- 8月7日:擊敗Blitz(6.2k前職業)3-0,Pajkatt(8.5k pro)2-1,CC&C(8.9k pro)3-0。 所有人都說,Sumail總能找到擊敗他們的方法。
- 8月9日:擊敗Arteezy(10k pro,頂級選手)10-0。 他說Sumail可以搞定這個機器人。
- 8月10日:擊敗Sumail(8.3k職業,頂級1對1選手)6-0,他說機器人是“無與倫比”的。而8月9日的比賽,得分為2-1。
- 8月11日:擊敗Dendi(7.3k職業,前世界冠軍,老玩家的最愛)2-0。 與八月十號機器人相比,這個機器人有60%的勝率。
機器人對抗SumaiL.(視頻鏈接: https://youtu.be/IbaHI38Ewws)
任務
完整的比賽是5v5,但一些錦標賽也會出現1v1的情況。 機器人遵守標準的錦標賽規則——并沒有將AI特有的簡化添加到1對1中。
機器人在如下界面上進行操作:
- 觀察:機器人的 API特征,英雄、小兵、信使以及任務附近的地形,被設計為與人類可以看到的相同。?并且機器人的視野也與人類相同。
- 操作:機器人 API可訪問的操作,也與人類相似,包括移動到某個位置,攻擊某個單位或使用某個道具。
- 反饋:機器人以贏得基本的參數作為獎勵,如健康和最后命中。
我們把機器人可以使用的幾十個項目列入白名單,并從中選擇一個進行評估。 還使用傳統的RL技術單獨訓練初始小兵模塊,這個時候我們假設對手還沒有出現。
機器人對戰Arteezy。(視頻鏈接https://youtu.be/rNSH8CviQQw)
備戰國際邀請賽
訓練這個機器人的方法,是結合少量的“教練”與自我對練,這樣可以大大改善代理在國際邀請賽上星期一和星期四之間的表現。 星期一晚上,Pajkatt通過使用不尋常的出裝方式(購買早期魔術棒)獲勝。 我們就將這個行為添加到訓練的白名單中。
星期三下午1點左右,最新的機器人得到了測試。 機器人在第一波小兵中失去了大量生命值。 我們認為也許需要取消計劃,但接下來的游戲讓我們改變了這個看法,這個機器人第一波的行為是誘使其他機器人對其進行攻擊。 進一步的自我對抗解決了這個問題,因為機器人學會了抵制誘餌策略。 同時,研究者將它與星期一的機器人拼接在一起,僅用于第一波小兵中,并在Arteezy下午四點出現之前的二十分鐘完成了這個過程。
在與Arteezy比賽之后,研究人員更新了蠕變塊模型,這增加了一個點的TrueSkill評分。 在星期四與Sumail比賽之前的進一步訓練中,TrueSkill評分又增加了兩個點。 Surmail指出,機器人已經學會了將暴牙扔出敵人的視野。 這是由于我們不知道的策略:這樣可以防止敵人獲得魔杖。
Arteezy也與7.5k半專業測試員打了一場比賽,在這場比賽中?Arteezy獲得了勝利,但是測試人員仍然對他從機器人那里學到的策略感到驚訝。 Arteezy后來表示,這是一個帕帕拉齊曾經用過一次的策略,并不常見。
Pajkatt與星期一的機器人打了一場。 請注意,他誘騙機器人進行與他交戰,并使用再生(精靈之火和魔術棒)來治愈。?在一次遭遇戰中,機器人通常非常善于決定誰將贏得一場戰斗,但是從來沒有與在早期就擁有魔杖的人玩過。
(視頻鏈接:https://youtu.be/BBUiwCEmrxU)
機器人的短板
雖然Sumail稱機器人是“無與倫比的”,但在一個它從來沒有見過的環境下,機器人仍然可能犯暈。?研究人員在國際的網絡中中部署了機器人,選手們可以通過任何方法來打敗機器人。
成功者可以分為三種類型:
- 拖拉小兵:當小兵的通過二級和三級塔之間時,可以通過反復攻擊它們,吸引它們追逐你。 最終會在地圖上會有數十個小兵追逐你,而機器人則會因為塔磨損了太多血量而死亡。
- 毒球 風杖:這使得你會擁有一個比1級機器人大得多的移動速度優勢,并能通過這個戰術獲得第一滴血。
- 1級交戰:這需要很多技巧,但是幾個6-7k的MMR玩家能夠在短時間內成功擊中機器人3-5下,從而在1級殺死機器人。
解決這些1對1的問題類似于修復Pajkatt漏洞。 但是對于5對5來說,這樣的問題根本就不是漏洞,我們需要一個可以處理各種特殊情況的系統。
基礎框架
研究團隊的重點是首先解決5v5問題。該項目的第一步是弄清楚如何在物理GPU上運行云上的DOTA2。 該游戲在GPU云實例上經常出現錯誤消息。 但是,當在Greg的個人GPU桌面(就是展示會上的臺式機)上啟動它時,我們注意到Dota在顯示器插入時啟動,但在拔下電源時發出了相同的錯誤消息。 所以研究團隊配置了他們的云GPU實例,假裝那里連接著一個真的顯示器。
DOTA當時不支持自定義專用服務器,這意味著想要可拓展運行又沒有GPU的話,只有使用非常慢的軟件渲染。?然后,我們創建了一個墊片來存儲大多數的OpenGL調用 (除了需要引導的調用)。
同時,我們寫了一個腳本機器人?——?我們需要一個基準來進行比較(特別是因為內置機器人在1v1上不能很好的工作),并且了解了bot API的所有語義(https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting)。 腳本式機器人在空路上達到了十分鐘70次補刀的成績,但這仍然輸給了任何一個正常的人類。 當前最好的1v1機器人可以達到十分鐘97次補刀,理論上的最大值是101。(視頻鏈接:https://youtu.be/1SjcXSgeOPg)
5v5
1對1已經頗繁雜,而5對5可以說是各種復雜問題的聚合體。為了解決這個問題,我們需要進一步提升AI的極限。
行為克隆可能是一個不錯的起點。 DOTA每天有大約一百萬場公開賽。 這些比賽的視頻被存儲在Valve的服務器上兩周。 自從去年11月以來,研究人員一直在下載每個專家級別的視頻,并且已經收集了5.8M場游戲的數據集(每個游戲與10個人約45分鐘)。?他們使用OpenDota來挖掘這些視頻,并花費了12,000美元(10年的籌款目標)來支持該項目。
素材來源