AI擊敗DotA頂級選手是不是突破?OpenAI放出了更多細節
編者按:本文來自 微信公眾號“量子位”(ID:QbitAI) ,編譯:陳樺
周末,OpenAI在DotA 2全球頂級賽事TI7(The International)的 中單1v1比賽中擊敗了頂級選手Dendi 。OpenAI的發起人之一,硅谷鋼鐵俠馬斯克還順勢 連發三條twitter,贊賞OpenAI,談監管,談AI的風險 。
但關于這個參賽的AI,大家并不是非常了解,因此對于這次勝利的解讀,夸大其詞者有, 質疑其并非突破 者也有。
直到今天,OpenAI終于在官方博客上公布了人工智能打DotA技術的進化歷程、(部分)技術細節,以及和更多選手對戰的視頻,以及怎樣打敗這個AI。
成績
我們在DotA 2上取得的結果表明,只要具備足夠的計算能力,自我對抗可以使機器學習系統的水平超越人類(目前僅限于中單1v1)。
在1個月時間里,我們系統的水平從只能匹配高段玩家上升至能擊敗頂級職業選手。自那時以來,系統仍在繼續得到優化。
有監督深度學習系統的性能取決于訓練數據集,但在自我對抗系統中,隨著系統變得更強大,可用數據也會自動得到優化。
下圖是AI的TrueSkill得分:
隨著時間發展,我們最好的AI的TrueSkill得分也在線性提高。TrueSkill是通過AI之間進行模擬游戲,觀察勝率來計算的,相當于國際象棋的ELO評分。
TrueSkill得分的提高與系統各部分的改進都相關,為算法增加新功能、擴大規模都能提高得分。
AI怎樣打DotA?
完整的DotA游戲是5v5對抗,但在某些巡回賽中也可以看到中單對抗。
我們的AI按照標準巡回賽規則來玩游戲,我們沒有在1v1比賽中加入任何有利于AI的簡化。
AI通過以下界面來操作:
- 觀察:bot API功能使AI可以像人類一樣觀察,包括英雄、兵線和附近地形。游戲是部分可觀察的。
- 操作:通過bot API進行操作,操作頻率與人類選手相仿,具體操作包括移動位置、攻擊其他單位,以及使用道具。
- 反饋:在獲勝后AI可以獲得激勵。基于其他基本指標,例如血量和補刀,AI也可以獲得激勵。
我們將十余種裝備合成方式列入白名單,供AI使用,并選擇其中一種進行評價。我們還利用傳統的RL技術來訓練最初的控兵線技巧。
開發歷程
項目進程如下所示。下文提到的MMR全稱Match Making Rating,也就是比賽匹配分級,相當于天梯積分。在DotA 2中,15%的玩家天梯分低于1500,58%的玩家低于3000,99.99%低于7500。
- 3月1日:我們首個經典的增強學習系統配置于簡單的DotA環境中。
- 5月8日:天梯1500分的測試者表示,他的水平提升速度要高于AI。
- 6月初:AI擊敗了天梯1500的測試者。
- 6月30日:擊敗了大部分天梯3000分的測試者。
- 7月8日:在對抗天梯7500分的半職業選手時,取得首勝。
- 8月7日:3比0擊敗Blitz(前職業選手,天梯6200)、2比1擊敗Pajkatt(職業選手,天梯8500)、3比0擊敗CC&C(職業選手,天梯8900)。他們都認為,SumaiL知道如何擊敗這個AI。
- 8月9日:10比0擊敗Arteezy(頂級職業選手,天梯10000)。他也認為SumaiL知道如何擊敗AI。
- 8月10日:6比0擊敗SumaiL(頂級中單職業選手,天梯8300)。他認為這個AI是無法擊敗的。在與8月9日的AI對抗時,他取得了2比1的成績。
- 8月11日,2比0擊敗Dendi(前世界冠軍、天梯7300的職業選手)。在對抗8月10日的AI時,這個AI取勝概率達到60%。
TI
我們的方法是將少量的“教練訓練”與自我對抗結合在一起。這使得我們在周一到周四國際邀請賽(TI7)期間能大幅優化AI。
周一晚間,Pajkatt使用了不太常見的裝備合成方式(購買了早期魔杖),并取得了勝利。我們隨后將這種裝備合成方式加入到訓練的白名單中。
周三下午1點左右,我們測試了最新版AI。這個AI在第一波對抗中損失了相當一部分血量。我們一開始打算把代碼回滾,不過又注意到,隨后的游戲變得更有趣,而第一波對抗中的嚴重失血只是為了誘敵深入。進一步的自我對抗修復了問題,AI學會了應對誘餌策略。與此同時,我們將其結合至周一版本的AI,只用于第一波對抗。在Arteezy下午4點到達的20分鐘前,我們完成了整個流程。
在與Arteezy的賽后,我們升級了控兵線模型,這使得TrueSkill評分增加了1分。在周四與Sumail的比賽之前,進一步的訓練讓TrueSkill評分又增加了2分。Sumail指出,AI學會了在對手視野外放技能。這基于我們此前從不知道的機制:在對手視野之外放技能,對方英雄就積累不到魔棒點數。
Arteezy也和我們MMR 7.5k的半職業測試版進行了比賽,幾乎取得了勝利,但是,AI采用的一種策略令他驚訝。Arteezy隨后表示,中國頂尖職業選手、iG.V戰隊的中單Paparazi(拒絕者)曾在和他的比賽中用過一次這種策略,但這并不是常見行為。
如何擊敗AI
盡管Sumail認為這個AI是“不可擊敗的”,但在某些非常少見的情況下,AI仍有可能被迷惑。我們在國際邀請賽的一場LAN活動上搭建了AI。玩家進行了超過1000盤游戲,嘗試任何可能的方式去擊敗AI。
成功擊敗AI的策略主要包括3種類型:
- 拉兵線:玩家可以在AI的二塔和三塔之間,反復吸引剛產生的兵線來追你。最終將會有大量兵線在地圖上追你,而AI的防御塔將被磨血。
- 毒球和風靈之紋:在1級情況下,這樣的裝備組合大幅提升玩家相對于AI的移速,從而快速拿到一血。你需要利用這樣的優勢去再次擊殺AI。
- 1級強推:這需要大量技巧,但有幾名MMR 6k到7k的玩家靠在1級短時間內放3-5次技能,擊殺了AI。
解決1v1中的這些問題類似于解決Pajkatt提出的漏洞。但在5v5情況下,這樣的漏洞無法使用。我們需要一種系統,能處理從未見過的奇怪局面。
基礎設施
我們還沒有打算完整地討論這個AI的內部原理,團隊目前專注于解決5v5問題。
項目的第一步,是搞清楚如何基于實體GPU在云計算平臺上運行DotA 2。
在GPU云計算實例上,游戲顯示了出錯消息。在Greg的個人GPU臺式機上,也就是比賽中用的那臺主機運行時,我們注意到,在連接顯示器的情況下DotA可以啟動,但在沒有連接顯示器時仍然顯示出錯消息。因此,我們對云計算GPU實例進行了配置,偽裝已連接了顯示器。
DotA目前并不支持定制的專用服務器,這意味著在沒有GPU的情況下只能使用緩慢的軟件加速。我們隨后開發了一種機制,禁用大部分的OpenGL調用,僅僅保留了啟動所需要的部分。
與此同時,我們開發了腳本機器人。考慮到內置機器人在1v1情況下表現不是很好,我們需要一個基準作為參考,并理解機器人API的所有語義。
這個腳本機器人在10分鐘時間里完成了70次補刀,但仍落后于優秀的人類選手。
目前最優秀的1v1機器人能達到97次補刀(在此之前塔已經推掉,因此這個數字來自于推測),而理論最高值是101次。
如何解決5v5?
1v1很復雜,但5v5更加復雜。我們知道,我們需要進一步推動AI向前發展,解決5v5的問題。
我們可以從行為復制著手。DotA大約每天有100萬盤公開比賽,這些比賽的回放會在Valve的服務器中保存兩周。
我們下載了自去年11月份以來所有專家級的回放,積累了包括580萬盤比賽在內的數據庫(每盤比賽約45分鐘,有10名玩家參與)。我們使用OpenDota去分析這些回放,并捐出了1.2萬美元(相當于他們10年的籌資目標)去支持這個項目。
當然,在博客的最后,OpenAI再次表達了“我們要招人!”
相關鏈接
Dendi被虐全程回顧:
對戰全程視頻!頂級高手苦練DOTA半輩子,就這樣被AI擊敗
同行質疑:
擊敗DotA2頂級人類玩家,并不是AI的一次突破
博客原文: https://blog.openai.com/more-on-dota-2/
bot API: https://developer.valvesoftware.com/wiki/Dota_Bot_Scripting
OpenDotA: https://www.opendota.com/