《DOTA2》淺談OpenAI在DOTA2的發展過程
NGA閥木部翻譯,轉載請註明出處
前言
8月22日,當一隊穿著印有OpenAI印花T恤的科學家們登上溫哥華羅渣斯會館的主舞台時,在場的觀眾爆發出無比熱情激烈的掌聲。
他們來到這裡是為了能夠將他們研發的人工智慧在DOTA2這一開創5V5競技對抗遊戲先河的遊戲中與真人的職業選手來一場正面的比賽交鋒。
這場歷史性的比賽如果談到項目伊始得追溯到2016年的冬季,當時由CTO Greg Brockman帶領的OpenAI研究團隊正在尋找具有公平競技性且具有挑戰性的遊戲環境以便能夠測試他們的人工智慧研究技術和人類的專業項目選手的對比差距。要知道遊戲是測試人工智慧最好的對象,因為他們有著複雜的計算模式以及豐富的人機交互項,而且最關鍵的是可以在賽後生成大量的可見數據。
作為一家非盈利性的人工智慧研究機構,他們的最終目標是創造一個能在所有通用系統中執行多項複雜命令的通用型人工智慧(AGI)。而OpenAI的小組認為人工智慧如果能在複雜的電腦遊戲環境中達到人類的執行力的話將會是實現AGI的重要的第一步,更別提擊敗真正的人類也是對於人工智慧的分析處理能力的最好證明。(這就不得不提到2016年在圍棋大賽中出盡風頭的AlphaGo了,這次比賽中AI的勝利推動了人工智慧在遊戲界的發展,而且同時確保了AlphaGo在AI發展歷史上的里程碑一般的地位)
OpenAI的研究者們在選擇目標之前也調查了Twitch上和Steam上的很多其他遊戲,最終他們選擇了DOTA2的主要原因是因為DOTA2可以在Linux上運行並且本身提供外部程序介面(API),這為他們的開發提供了不小的便利性。
研究起步
然而其實讓AI去像人一樣去理解複雜的局勢是相當困難的,之前的AI只能通過輸入的指令來改變其戰略,比如如何購買物品、補刀、反補、推塔,這些全部都僅僅是已經錄入的代碼罷了,而且AI也不會根據不同的局勢變更自己的指令。
在2017年初,OpenAI的團隊在創意工坊上架了他們的第一個腳本機器人,作為試水作這個腳本擊敗了大多數的非職業玩家。然而研究人員無法繼續將這個腳本繼續編寫以達到專業比賽級別的高複雜性水準,所以他們只能拋棄了基於V社提供規則的代碼並且轉而用增強式學習能力(RL)去取代之。
基於RL的AI其實並不是在正常的5V5的環境中接受訓練的,而是被至於遊戲中某個具有簡化的規則和目標的自定義挑戰任務中。
AI的目的性很簡單,就是在一個圓形的地圖上通過操作去擊殺一個人為控制的英雄罷了,然而實現這個看上去很簡單的目標要比預想的難得多,主要的原因在於真人的操作會和按照給AI設定的訓練預測的操作不同。而為了解決這個問題,開發團隊開始在訓練中加入大量隨機化的命令從而根據當前的狀態去選擇下一步的動作而不是循規蹈矩,比如英雄會在遇到地形阻礙的時候降速或者改變行動方向。
隨機化提高了RL的策略性,並且使得AI能夠在自定義挑戰中已經可以慢慢的去學會如何擊敗當時的研究人員操作的英雄。
當研究團隊將1V1目前表現下的AI技術應用到DOTA2中的中單SOLO機器人腳本中時該腳本的智能取得了飛躍式的增長,而且在2017年的7月時在中路SOLO賽的表演中擊敗了前職業選手William「Blitz」Lee。
雖然說如果將5個這樣的AI揉在一起並且運行相同的演算法就已經可以達到正常遊戲5V5的水準。但是開發團隊仍然希望更加進一步強化他們AI的1V1的能力。
在去年在西雅圖的TI7的比賽中,在OpenAI和Dendi的中路SOLO比賽中僅僅只用了10分鐘就贏得了第一場的勝利,而第二場更是以Dendi在開局後幾分鐘就繳械投降落幕。賽後Dendi反覆強調「這個傢伙很可怕!」。
在TI7表演賽中擊敗了Dendi後,團隊宣稱該項目的下一部計劃是完整的5V5競技,所以敬請期待2018年的TI8國際邀請賽。
新型人工智慧
OpenAI利用循環神經網路(RNN)中的長短期記憶(LSTM)來構建了AI的大腦核心。它精通長時間的信息儲存記憶以及會自動根據序列進行分類處理和預測數據。其實簡單來說本質就和家長教自己的孩子如何做一些簡單的事情一樣,你得教他們分清楚不同事物的好壞,而且你還得學著怎麼教才能讓他們牢牢的記住。
每一個AI的神經網路都包含著一個單層1024單元的LSTM,可以記錄遊戲的狀態並且做出適當的動作。比如執行一個釋放技能的操作,AI需要4個指標去判斷(移動、攻擊、釋放技能、使用道具),然後AI還需要捕捉到目標的單位然後判斷和自己的距離(在AI看來這些都是映射在X、Y上的坐標),然後再去判斷技能釋放的操作和時間最後釋放該技能。OpenAI最終將整個遊戲離散化為每個英雄大約170000次可能的動作(相比國際象棋的35點簡直是天文數字,不比較就不會有傷害)
最終新一代的AI開始從自我遊戲中去學習而免去了人類的手把手教學。而為了避免可能會導致AI的訓練循環的BUG,AI在80%的時間都是在和自己相同的AI對戰,而另外20%的時間則是在和上個版本的自身對戰。
這些AI指令在128000個CPU內核和256個GPU上每天無休的反覆運行,平攤到每天遊戲中的訓練量累計大約為正常時間上的180年左右。
OpenAI還引入了一個稱為「團隊精神」的超級複雜的參數,範圍從0到1並且指定權重以確定每個OpenAI Five的英雄應該取自己的功能和在整個團隊功能的平均值。
人工智慧的學習能力
OpenAI開發辦公室的老傳統就是每周一的晚上整個團隊會聚在一起玩DOTA2(當然現在改為了和他們的AI對戰)。在今年的5月的某天,AI在一場持續了45分鐘的比賽中首次擊敗了他們。在6月時,研究團隊邀請了一隊天梯分數大約在4000-6000不等的業餘選手到他們的辦公室去打人機大戰,結果AI輕鬆取得了勝利。
比爾蓋茨在比賽結束後發布了推文「AI在電子遊戲DOTA2中擊敗了人類表現出他們已經有勝利所需的團隊合作能力,同時這也是人工智慧發展的一個重要里程碑」
根據整個研究團隊的調查發現,目前哪怕是全新的AI使用他們的演算法中也僅僅只需要2天的訓練就已經會比辦公室里的任何人都要強。所以他們帶著他們的AI將目光投向了溫哥華的DOTA2第八屆國際邀請賽,希望它能在那裡擊敗一支真正的勁旅。
AI會作弊嗎
雖然OpenAI的開發團隊態度樂觀但是仍然有很多DOTA2的玩家指責說6月AI獲得的5場勝利屬於作弊行為。他們認為這與正常的5V5遊戲完全不同,比如AI僅有5個可選英雄、沒有魔瓶和神符、沒有Roshan和眼,這種不平衡的非完整性遊戲完全是作弊一樣的行為。而開發小組也很快回應,他們增加了AI可選英雄至18位,加入了Roshan和眼等改動...
談到眼這個道具,它可以在戰爭迷霧外提供視野。真正的人類玩家可以由淺到深的去學習如何使用他們,但是AI不行,他們更加傾向於在他們的視野中插眼這樣的行為。
而Roshan作為遊戲中最重要的中立生物,如何與它交手也是一個非常複雜的團隊策略,而且還需要考慮時間和擊殺方法。而AI不會去在遊戲開局招惹Roshan,因為按照他們每個AI的個人的演算法來說開局的時候去對抗Roshan的話被擊殺的概率實在是太高了。
OpenAI的團隊已經通過對於AI的指令灌入隨機化Roshan的狀態來解決這個問題,雖然表面上看的確有鼓勵AI在裝備不成型之前就去擊殺Roshan的動作,但是現在AI似乎浪費了太多時間在監視Roshan的狀態。
時間不等人
在離溫哥華AI對決前3周的8月5日OpenAI團隊組織了一個對抗前職業MMR排名世界前99.95%選手的一個基準測試。
比賽在舊金山的一個酒吧中舉行,現場觀眾大約有300多人。其中大部分人都在AI身上押注並且表示「雖然在感情上支持真人,但是感覺他們壓根沒有勝算」
在比賽開始之前,MoonMeander發推說自己從未輸給過AI。結果是他們在前兩場比賽中僅僅堅持了20至25分鐘就敲出了GG。
這本來應該以AI的大獲全勝作為收尾,但是為了給第三場比賽加點料開發團隊讓觀眾投票AI可以使用的英雄。結果在比賽開始之前OpenAI Five就預測在這個陣容對抗中自己只有2.9%的勝率,最終結果也和它預料的一樣在35分47秒後輸掉了比賽。
與此同時離OpenAI Five登場溫哥華的舞台的日子也越來越近了,要知道這回它要面對的可是7000-8000分遠遠超過以前其他交手過的真人的高RANK選手們。而它已經沒有那麼多的訓練時間去升華自己的戰術策略了。
溫哥華:最終大戰
當他們在羅渣斯中心登台後許多當時在場的觀眾都認為OpenAI Five有很大的勝算。畢竟幾乎之前的和人類的交手歷史都是碾壓級的勝利,更別說在去年TI7中1V1中血虐Dendi的故事了。
但是事實並非如此,在第一場比賽中PainGaming在持續了52分鐘的比賽中擊敗了AI。而第二天的5個傳奇的中國老將(430、Xiao8、BurNing、ROTK、SanSheng)僅花了45分鐘就解決了AI。
其實OpenAI Five的整體團隊表現其實已經還算過的去,這歸功於他們的無差錯的微操能力,在兩場比賽中AI的人頭都比人類隊伍的多而且打贏了大多數的遭遇戰和團戰。
但是同時AI也犯了很多低級錯誤,比如在錯誤的地方開團或者沖塔以及很少會有Gank舉動等。
TI8中的結果可能和OpenAI的團隊預料的不一樣,但是也並不代表屬於OpenAI Five的凜冬已至。OpenAI Five將會很快重新開始訓練並且將會在今年下半年或者2019年使用全英雄去參加一場完完整整的DOTA2比賽。
雖然它的確輸掉了這場比賽,但是OpenAI Five和人類的鬥爭遠未結束
※古劍奇譚:咒隱奶基礎知識分享
※《爐石傳說》競技場向新卡點評第二期:戰吼召喚2個聖盾加嘲諷?
TAG:NGA玩家社區 |