Dota2冠軍OG如何被AI碾壓?OpenAI累積三年的完整論文終于放出
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
Team OG,Dota2世界冠軍戰(zhàn)隊(duì)。
在人工智能OpenAI Five面前,OG不堪一擊。五個(gè)人類組成的戰(zhàn)隊(duì),此前全程毫無懸念地以0:2敗下陣來,兩局加在一起,OG只推掉了兩座外塔。
不過,這還不是AI的巔峰。
現(xiàn)在OpenAI又訓(xùn)練出了一個(gè)全新的AI,名叫Rerun。面對(duì)碾壓OG的OpenAI Five,Rerun的勝率達(dá)到了……呃……98%。

聽到這個(gè)消息,一位推特網(wǎng)友發(fā)圖明志。

主要依靠自學(xué),就能在Dota2這么復(fù)雜的游戲中稱雄,人工智能是怎么做到的?今天,有關(guān)于此的答案揭曉。
沒錯(cuò),OpenAI不單發(fā)布了Rerun,還把自己三年多來對(duì)于Dota2項(xiàng)目的研究,通過一篇論文,正式公布出來。
在這篇論文中,OpenAI解釋了整套系統(tǒng)的原理、架構(gòu)、計(jì)算量、參數(shù)等等諸多方面的內(nèi)容。OpenAI指出通過增加batch size和總訓(xùn)練時(shí)間等方法,擴(kuò)展了計(jì)算規(guī)模,進(jìn)而表明當(dāng)今的強(qiáng)化學(xué)習(xí)技術(shù)可以在復(fù)雜的電子競(jìng)技游戲中,達(dá)到超越人類的水平。
這些研究,可以進(jìn)一步應(yīng)用于各種兩個(gè)對(duì)手持續(xù)的零和博弈中。

(可能是閱讀之后)OG戰(zhàn)隊(duì)發(fā)推:“Wow!這篇論文看起來太棒了!”
此情此景,有網(wǎng)友無深情的感嘆道:Wow!OG戰(zhàn)隊(duì)夸了一篇論文好看?真是活久見……
這篇論文到底說了什么?
我們總結(jié)了幾個(gè)要點(diǎn)。
要點(diǎn)一:Dota2比下圍棋更復(fù)雜
與棋類對(duì)弈相比,電子競(jìng)技游戲要更復(fù)雜。
攻克這一難題的關(guān)鍵是,把現(xiàn)有的強(qiáng)化學(xué)習(xí)系統(tǒng)規(guī)模,擴(kuò)展到前所未有的水平,這耗費(fèi)了數(shù)千塊GPU和好幾個(gè)月的時(shí)間。OpenAI為此構(gòu)建了一個(gè)分布式的訓(xùn)練系統(tǒng)。
訓(xùn)練中的一個(gè)挑戰(zhàn)是,環(huán)境和代碼會(huì)不斷變化。為了在每次更改后無需從頭開始,OpenAI開發(fā)了一套工具,可以在不損失性能的情況下恢復(fù)訓(xùn)練,這套工具稱為:surgery。

每局Dota2比賽時(shí)長(zhǎng)大約45分鐘,每秒鐘會(huì)生成30幀的游戲畫面。OpenAI Five每4幀做出一個(gè)動(dòng)作。國(guó)際象棋一局下約80步,圍棋下一局約150步,作為對(duì)比,Dota2打一局,AI需要“下”大概20000步。
而且由于戰(zhàn)爭(zhēng)迷霧的存在,Dota2中對(duì)戰(zhàn)的雙方,只能看到全盤游戲中的局部情況,其他部分的信息都是隱藏狀態(tài)。
與下圍棋的AlphaGo相比,打Dota2的AI系統(tǒng),batch size要大50-150倍,模型大20倍,訓(xùn)練時(shí)間長(zhǎng)25倍。
要點(diǎn)二:AI如何學(xué)會(huì)打Dota2
人類玩Dota2通過鍵盤鼠標(biāo)等,實(shí)時(shí)作出決定。剛才提到,OpenAI Five每4幀做出一個(gè)動(dòng)作,這被稱為一個(gè)timestep。每個(gè)timestep期間,OpenAI會(huì)接收血量、位置等數(shù)據(jù)。
同樣的信息,人類和OpenAI Five接收的方式完全不同。

人工智能系統(tǒng)發(fā)出動(dòng)作指令時(shí),大概可以想成這個(gè)樣子。
AI背后是一套神經(jīng)網(wǎng)絡(luò)。policy (π) 被定義為從觀察數(shù)據(jù)到動(dòng)作概率分布的函數(shù),這是一個(gè)有1.59億個(gè)參數(shù)的RNN神經(jīng)網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)主要由一個(gè)單層、4096-unit的LSTM構(gòu)成。
結(jié)構(gòu)如下圖所示:
LSTM貢獻(xiàn)了這個(gè)模型中84%的參數(shù)。
選手們的訓(xùn)練,使用的是擴(kuò)展版的近端策略優(yōu)化(PPO)方法,這也是OpenAI現(xiàn)在默認(rèn)的強(qiáng)化學(xué)習(xí)訓(xùn)練方法。這些智能體的目標(biāo)是最大化未來獎(jiǎng)勵(lì)的指數(shù)衰減和。
在訓(xùn)練策略的過程中,OpenAI Five沒有用到人類游戲數(shù)據(jù),而是通過自我博弈。在圍棋、象棋等問題上,也應(yīng)用了類似的方式訓(xùn)練。
其中,80%的戰(zhàn)斗中對(duì)手是使用了最新參數(shù)的分身,而20%的對(duì)手是老參數(shù)的分身。每經(jīng)過10次迭代之后,新訓(xùn)練出的分身就被標(biāo)為老前輩。如果當(dāng)前正訓(xùn)練的AI擊敗了新秀或者老前輩,系統(tǒng)就會(huì)根據(jù)學(xué)習(xí)率更新參數(shù)。
按照OpenAI CTO此前的說法,擊敗OG前OpenAI Five已經(jīng)練習(xí)了相當(dāng)于45000年Dota。AI每天的訓(xùn)練量相當(dāng)于人類打180年游戲。
要點(diǎn)三:計(jì)算量和超參數(shù)
訓(xùn)練這么復(fù)雜的AI系統(tǒng),肯定要耗費(fèi)大量的資源。
OpenAI預(yù)估了用于優(yōu)化的GPU消耗量,最后的結(jié)論,OpenAI Five的GPU計(jì)算用量在770±50~820±50 PFlops/s·days左右,而今天新提到的、更強(qiáng)的Rerun,在隨后兩個(gè)月的訓(xùn)練中,GPU計(jì)算量消耗大概是150 ± 5 PFlops/s·days。
再說一下,OpenAI公布的只是用于優(yōu)化的計(jì)算量,只是訓(xùn)練中所有開銷的一小部分,大約占30%。
此前,OpenAI也曾透露過OpenAI Five的日常訓(xùn)練,需要256塊P100 GPU和12.8萬個(gè)CPU核心。
至于整個(gè)神經(jīng)網(wǎng)絡(luò)的超參數(shù),在論文中,OpenAI表示在訓(xùn)練Rerun的時(shí)候,已經(jīng)根據(jù)經(jīng)驗(yàn)進(jìn)一步簡(jiǎn)化了超參數(shù)。最后,他們只更改了四個(gè)關(guān)鍵的超參數(shù):
• Learning Rate
• Entropy penalty coefficient
• Team Spirit
• GAE time horizon
當(dāng)然,OpenAI也表示這些超參數(shù)還有進(jìn)一步的優(yōu)化空間。
要點(diǎn)四:并不全是自學(xué)
最后,還有一點(diǎn)需要強(qiáng)調(diào)。
OpenAI在論文中明確指出,AI系統(tǒng)在學(xué)習(xí)Dota2的過程中,并非完全依靠強(qiáng)化學(xué)習(xí)自學(xué),啟示也使用了一些人類的知識(shí)。這跟后來的AlphaGo Zero有所區(qū)別。
有一些游戲機(jī)制是腳本編寫好的程序。比方,英雄購(gòu)買裝備和學(xué)習(xí)技能的順序,信使的控制等等。OpenAI在論文中表示,使用這些腳本有一些歷史原因,也有成本和時(shí)間方面的考慮。不過論文也指出,這些最終也可以通過自學(xué)完成。
論文全文
在這篇名為Dota 2 with Large Scale Deep Reinforcement Learning的論文中,OpenAI公布了更多的詳細(xì)信息,如果你感興趣,下面是傳送門:
https://cdn.openai.com/dota-2.pdf
對(duì)戰(zhàn)回顧
最后,我們回顧一下OpenAI Five連下兩局擊敗OG的比賽全程吧。
第一局
AI(天輝):火槍、飛機(jī)、冰女、死亡先知、斯溫
人類(夜魘):小牛、巫醫(yī)、毒龍、隱刺、影魔
選完陣容,OpenAI Five認(rèn)為自己有67.6%的勝率。
剛剛開局,OpenAI Five拿下一血,而人類軍團(tuán)也很快殺掉了AI方的冰女。之后,雙方前期在人頭數(shù)上一直不相上下。AI一直在經(jīng)濟(jì)上保持總體領(lǐng)先,但最富有的英雄,卻一直是人類的大哥影魔。
這也能看出雙方策略上的明顯區(qū)別:OG是3核心+2輔助的傳統(tǒng)人類打法,而AI的5個(gè)英雄經(jīng)濟(jì)分配相對(duì)平均,比較“大鍋飯”。
經(jīng)過幾番激烈的推進(jìn)和團(tuán)戰(zhàn),游戲進(jìn)行到19分鐘左右,AI對(duì)自身勝率的預(yù)測(cè)已經(jīng)超過了90%。自信心爆棚的AI一鼓作氣攻上了人類的高地。
OG緊接著選擇了分路推進(jìn),幾位解說推測(cè),這是為了盡可能分散AI,防止它們抱團(tuán)推進(jìn),然而并沒有奏效太長(zhǎng)時(shí)間。
然而,堅(jiān)持到38分鐘,人類方的小牛剛剛買活,AI的最后一波總攻已經(jīng)推掉了人類的基地。
OpenAI Five贏下第一局。現(xiàn)場(chǎng),也是一片掌聲。
這場(chǎng)比賽中,AI展現(xiàn)了清奇的思路:出門裝就選擇兩個(gè)大藥,后續(xù)的裝備也更傾向于買補(bǔ)給品,而不是提高自身屬性。
另外,我們前邊提到的“大鍋飯”政策,以及在比賽前期就頻繁買活,都和人類職業(yè)選手的習(xí)慣大不相同。
第二局
AI(天輝):冰女、飛機(jī)、斯溫、巫醫(yī)、毒龍
人類(夜魘):火槍、小牛、死亡先知、小魚人、萊恩
選完英雄,AI對(duì)自身勝率的預(yù)測(cè)是60.8%,略低于上一局的陣容。
比賽前兩分鐘,雙方都在一片祥和中各自帶線,然而沒想到,人類中單Topson很快就送出了一血。
之后,人類代表們以驚人的速度潰敗。
5分鐘時(shí),AI的信心就已經(jīng)大幅上升,預(yù)測(cè)自己有80%的勝率;7分鐘,AI推掉了上路一塔;10分鐘,AI就已經(jīng)領(lǐng)先人類4000金幣,多推了兩座塔,還為自己預(yù)估了95%的勝率。
11分鐘,AI已經(jīng)攻上了OG的高地。
僅僅21分鐘,OG的基地被推掉,OpenAI Five輕松拿下第二局。直到比賽結(jié)束,OG拿下人頭還是個(gè)位數(shù),被AI打成了46:6。
雖然這一局贏得異常輕松,不過對(duì)局過程中還是能看出AI在細(xì)節(jié)上有一些不足。比如說面對(duì)在復(fù)雜樹林中繞來繞去的人類,AI就無能為力。今天的比賽中,Ceb就靠繞樹林救了自己一命。