剛剛,OpenAI宣布了一個大新聞——他們的一個由5個神經(jīng)網(wǎng)絡組成的OpenAI Five,已經(jīng)開始擊敗Dota 2的業(yè)余玩家隊伍。
剛剛,OpenAI 宣布了一個大新聞——還記得去年他們的AI在 Dota2 1v1 比賽中戰(zhàn)勝了人類職業(yè)玩家 Dendi嗎?現(xiàn)在,OpenAI的由5個神經(jīng)網(wǎng)絡組成的OpenAI Five,已經(jīng)開始擊敗Dota 2的業(yè)余玩家隊伍。
4月23日,OpenAI Five首次擊敗了腳本基線。5月15日,OpenAI Five與第一隊平分秋色,贏得了一場比賽并輸?shù)袅肆硪粓觥?月6日,OpenAI Five在與隊伍1、2、3的比賽中全部獲勝。之后,我們又與第4和第5隊進行了非正式的比賽,預計會輸?shù)煤軕K,但OpenAI Five在前3場比賽中贏得了兩場。
OpenAI表示,雖然他們現(xiàn)在玩的是有限制的游戲,但他們的目標是在8月份擊敗國際頂級職業(yè)團隊(不過只限于一組有限的英雄)。同時,他們也坦承這個任務艱巨——“我們可能不會成功:Dota 2是世界上最流行和最復雜的電子競技游戲之一,每年都有來自全世界最富有創(chuàng)造力和積極性的專業(yè)人員參賽,競爭Dota年度價值4000萬美元的獎金(這也是所有電子競技游戲中份額最大的獎金)。
如今,OpenAI Five每天都通過自我對戰(zhàn)(self-play)來學習,而每天自我對戰(zhàn)的量是180年的游戲——沒錯,是180年。它使用OpenAI提出的算法“近端策略優(yōu)化”(PPO)的擴展版,在256個GPU和128,000個CPU內(nèi)核上進行訓練。每個英雄都使用單獨的LSTM,不使用人類數(shù)據(jù),最終AI能夠?qū)W會識別策略。這表明,強化學習能夠進行大但卻可實現(xiàn)規(guī)模(large but achievable scale)的長期規(guī)劃,而不發(fā)生根本性的進展,這與OpenAI開始項目時的預期相悖。
為了對他們所取得的進步衡量基準,OpenAI將在7月28日舉行一場比賽,歡迎觀看直播甚至親臨現(xiàn)場。
OpenAI Five與OpenAI玩DOTA最好的團隊競賽。比賽由暴風游戲的專業(yè)評論員和OpenAI Dota團隊成員Christy Dennison進行了評論,也得到了玩家的觀戰(zhàn)。
國內(nèi)首家決策智能公司創(chuàng)始人兼CEO袁泉點評:
Dota游戲是一個典型的AI難題,它綜合了決策周期長,空間大而且敵我雙方是在非完全信息下博弈。OpenAI繼去年解決1v1的問題后,1年內(nèi)能在5v5的更復雜情況下,完全依靠自我對抗學習、無顯式通訊信道的前提下,即展現(xiàn)出了類似于人的長期規(guī)劃協(xié)作能力,代表了多智能體決策智能的國際最高水準,也體現(xiàn)了大規(guī)模算力帶來的美感。
Dota2究竟有多難?復雜程度超乎想象
玩星際爭霸或Dota,需要AI在不確定的情況下進行推理與規(guī)劃,涉及多個智能體協(xié)作完成復雜的任務,權衡短中長期不同的收益。相比下圍棋這樣的確定性問題,星際爭霸/Dota的搜索空間要高出10個數(shù)量級。
因此,攻克星際爭霸或者Dota這樣的復雜電子競技游戲,是AI的最大挑戰(zhàn)之一,也將是AI的一個里程碑式的成就。
Dota 2 是一個實時競技電子游戲,有兩支5人隊伍組成,每個人都控制一個英雄,能玩Dota的AI,必須掌握以下技巧:
很長的時間線。Dota游戲以每秒30幀的速度運行,平均時間為45分鐘,因此每場游戲的時間tick為80,000次。大多數(shù)行為(例如命令英雄移動到某個位置)單獨產(chǎn)生的影響較小,但有些個別的行為,比如在城市間移動(回城卷軸),可能會在戰(zhàn)略上影響游戲。還有一些策略,則能影響整個戰(zhàn)局。OpenAI Five每4幀觀察一次,產(chǎn)生20,000次移動。相比之下,國際象棋通常在40次移動之前就結(jié)束,圍棋則是150手移動前結(jié)束,而且?guī)缀趺恳淮我苿佣际菓?zhàn)略性的。
部分觀察狀態(tài)。在Dota過程中,隊伍(units)和建筑物只能看到他們周圍的區(qū)域。地圖的其他部分隱藏在霧中,敵人和他們的戰(zhàn)略也是隱藏的。因此,比賽需要根據(jù)不完整的數(shù)據(jù)進行推斷,并且需要對對手的最佳狀態(tài)進行建模。相比之下,國際象棋和圍棋都是信息完全顯露出來的游戲。
高維連續(xù)動作空間。在Dota中,每個英雄可以采取數(shù)十個動作,而許多動作都是針對另一個單位(unit)或地面上的某個位置。OpenAI將每個英雄的空間分割成170,000個可能的行動;不計算連續(xù)部分,每個tick平均有大約1000次有效操作。國際象棋中的平均動作數(shù)為35,在圍棋中,這是數(shù)字也只有250。
高維連續(xù)的觀察空間。Dota在包含十個英雄,幾十個建筑物,幾十個NPC以及諸如符文、樹木和病房等游戲長尾特征。OpenAI的模型通過Valve的Bot API觀察Dota游戲的狀態(tài),其中20,000(大多是浮點)數(shù)字表示允許人類訪問的所有信息。相比之下,國際象棋棋盤有大約70個枚舉值(8x8的棋盤加6種棋子類型和其他一些的歷史信息),而圍棋則有大約400個枚舉值(19x19的棋盤加黑白兩種棋子)。
Dota規(guī)則也非常復雜。這是一個已經(jīng)被積極開發(fā)了十多年的游戲,游戲邏輯在幾十萬行代碼中實現(xiàn)。這個邏輯需要幾毫秒的時間才能執(zhí)行,而對于國際象棋或圍棋引擎則只需要幾納秒。游戲也每兩周更新一次,不斷改變環(huán)境語義。
完全從自我對戰(zhàn)中學習,128000CPU+256 P100GPU
OpenAI的系統(tǒng)使用Proximal Policy Optimization的大規(guī)模版本進行學習。OpenAI Five和OpenAI早期的1v1 bot都是完全從自我對戰(zhàn)中學習。它們從隨機參數(shù)開始,不使用來自人類回放(replay)的搜索或引導。
RL研究人員(包括OpenAI自己)一般認為,長時間視野(long time horizons)需要從根本上取得新的進展,比如分層強化學習。結(jié)果表明,實際上現(xiàn)如今的算法已經(jīng)足夠,至少當它們以足夠的規(guī)模和合理的探索方式運行時。
OpenAI的agent經(jīng)過訓練,可以最大化未來獎勵的指數(shù)衰減總和,并由稱為γ的指數(shù)衰減因子加權。在最新的OpenAI Five訓練中,他們從0.998(評估未來獎勵的半衰期為46秒)到0.9997(評估未來獎勵的半衰期為五分鐘)退化γ。相比之下,PPO論文中最長的half-life是0.5秒,Rainbow論文中最長的半衰期為4.4秒。
盡管當前版本的OpenAI Five在最后一擊時表現(xiàn)不佳,但其objective prioritization已經(jīng)堪比一個常見的專家。獲得戰(zhàn)略地圖控制等長期回報往往需要犧牲短期回報,例如從農(nóng)業(yè)獲得的黃金,因為組建攻擊塔需要時間。這表明系統(tǒng)真正在進行長期的優(yōu)化。
模型結(jié)構
每個OpenAI Five網(wǎng)絡都包含一個單層的、1024-unit的LSTM,它可以查看當前的游戲狀態(tài)(從Valve的Bot API中提?。?,并通過幾個可能的action heads發(fā)出動作。每個 head都具有語義含義,例如,延遲動作的刻度數(shù),選擇一個動作時,該動作在單元周圍網(wǎng)格中的X或Y坐標等。Action heads是獨立計算的。
OpenAI Five使用觀察空間和動作空間進行交互式演示。OpenAI Five將世界視為20000個數(shù)字的列表,并通過發(fā)出一個包含8個枚舉值的列表來采取行動。選擇不同的行動和目標以了解OpenAI Five如何編碼每個動作,以及它如何觀察世界。下圖顯示了人類會看到的場景。
OpenAI Five可以對丟失的與它所看到的相關的狀態(tài)片段做出反應。例如,直到最近,OpenAI Five的觀察都還沒有包括彈片區(qū)域(彈片落在敵人身上的區(qū)域),人類在屏幕上能看到這些區(qū)域。然而,我們觀察到OpenAI Five學習走出(雖然不能避免進入)活躍的彈片區(qū)域,因為當進入彈片區(qū)時,它可以看到它的健康狀況在下降。
探索
盡管有學習算法能夠處理較長的視野,我們?nèi)匀恍枰剿鳝h(huán)境。即使我們設了限制,仍然有數(shù)百個物品,幾十種建筑,法術和單元類型,以及需要了解的復雜的游戲機制——其中許多產(chǎn)生了強大的組合。要有效地探索這個巨大的空間并不容易。
OpenAI Five從自我玩游戲(self-play)過程中學習(從隨機權重開始),這為探索環(huán)境提供了一個自然的設置。為了避免“戰(zhàn)略崩潰”,agent在80%的游戲中進行自我訓練,其余20%的游戲則與過去的自己對戰(zhàn)。在第一場比賽中,英雄漫無目的地在地圖上漫步。經(jīng)過幾個小時的訓練后,出現(xiàn)了諸如laning、farming或中期戰(zhàn)斗等概念。幾天之后,它們一直采用基本的人類策略:試圖從對手手中奪取神符,步行到一級塔去農(nóng)場,并在地圖周圍旋轉(zhuǎn)英雄以獲得lane優(yōu)勢。通過進一步的訓練,它們變得精通5-hero push 這樣的高級戰(zhàn)略了。
在2017年3月,我們的第一個agent擊敗了bot,但仍然搞不定人類。為了強制在戰(zhàn)略空間進行探索,在訓練期間(并且只在訓練期間),我們對這些單元的屬性(健康,速度,啟動級別等)進行了隨機化,然后用它開始能與人類對打。后來,當一名測試玩家一直不斷地擊敗我們的1v1 bot時,我們增加了隨機訓練,測試玩家開始出現(xiàn)失敗。(我們的機器人團隊同時將類似的隨機化技術應用于物理機器人身上,以便從模式世界轉(zhuǎn)換到現(xiàn)實世界。)
OpenAI Five使用我們?yōu)?v1 bot編寫的隨機數(shù)據(jù)。它還使用一個新的“l(fā)ane assignment”。在每次訓練游戲開始時,我們隨機地將每個英雄“分配”給一些lane的子集,并在它發(fā)生偏離是對其進行懲罰,直到游戲中隨機選擇的時間。
這樣的探索得到了很好的回報。我們的獎勵主要由衡量人類如何在游戲中做決定的指標組成:凈價值,kills,死亡,助攻,上次命中等等。我們通過減去另一組的平均獎勵后處理每個agent的獎勵,以防止agent找到 positive-sum 的情況。
我們硬編碼項目和技能構建(最初為我們的腳本基準編寫),并選擇隨機使用哪些構建。
協(xié)調(diào)
OpenAI Five不包含英雄神經(jīng)網(wǎng)絡之間的明確通信渠道。團隊合作由我們稱為“團隊精神”(team spirit)的超參數(shù)控制。team spirit的范圍從0到1,對OpenAI Five的每個英雄應該關心其個人獎勵函數(shù)與團隊獎勵函數(shù)的平均值賦予權重。我們在訓練中將它的值從0降到1。
快速
我們的系統(tǒng)是一個稱為Rapid的通用RL訓練系統(tǒng),可用于任何Gym環(huán)境。我們已經(jīng)使用Rapid解決了OpenAI的其他一些問題,包括競爭性的自我對戰(zhàn)。
訓練系統(tǒng)分為運行游戲副本的rolloutworker和收集經(jīng)驗的agent,以及optimizer節(jié)點,這些節(jié)點在整個GPU隊列中執(zhí)行同步梯度下降。 rollout worker通過Redis將它們的經(jīng)驗同步到optimizer每個實驗還包括訓練好的agent進行評估,以及監(jiān)控軟件,如TensorBoard,Sentry和Grafana。
在同步梯度下降過程中,每個GPU計算batch部分的梯度,然后對梯度進行全局平均。下圖顯示了不同數(shù)量的GPU同步58MB數(shù)據(jù)的延遲。
我們?yōu)镽apid實施了Kubernetes,Azure和GCP后端。
游戲結(jié)果
到目前為止,OpenAI Five已經(jīng)(在我們的限制下)與這些對手進行了比賽:
最佳OpenAI員工團隊:2.5k MMR(46th percentile)
觀看OpenAI員工比賽的最佳觀眾(包括第一次OpenAI員工比賽的解說員Blitz):4-6k MMR(90th-99th percentile),盡管他們從來沒有作為一個團隊參賽。
Valve employee團隊:2.5-4k MMR(46th-90th percentile)。
業(yè)余團隊:4.2k MMR(93rd percentile),訓練為一支隊伍。
半專業(yè)團隊:5.5k MMR(99th percentile),訓練為一支隊伍。
4月23日版的OpenAI Five是第一個擊敗我們的腳本基線的版本。5月15號的OpenAI Five與第一隊旗鼓相當,贏了一場比賽,又輸了一場。6月6日的OpenAI Five戰(zhàn)勝了1-3對。我們和4隊、5隊建立了非正式的比賽,預計出現(xiàn)很差的表現(xiàn),但是OpenAI Five在前三場比賽中均贏了兩場。
“機器人的團隊合作方面簡直勢不可擋,感覺就像五個無私的玩家一樣,知道一個很好的總體戰(zhàn)略?!薄?Blitz
我們發(fā)現(xiàn)OpenAI Five:
為了換取控制敵人的優(yōu)勢路safelane,多次犧牲自己的優(yōu)勢路(上路是夜魘,下路是天輝),迫使戰(zhàn)斗向敵人更難防御的一邊進行。這種策略在過去幾年出現(xiàn)在專業(yè)領域,現(xiàn)在被認為是流行的策略。Blitz說他是在經(jīng)過8年的比賽后才知道這一點的,當時Team Liquid告訴他這件事。
從比賽初期到賽季中期的轉(zhuǎn)場比對手更快。 它是這樣做的:(1)當玩家在他們路上過度擴張時,建立成功的Ganks;(2)在對手組織對抗之前組隊占領塔。
在少數(shù)領域偏離了目前的游戲風格,比如給予支持英雄許多早期經(jīng)驗和黃金。 OpenAI Five的優(yōu)先級使得它的傷害更早達到頂峰,并使它的優(yōu)勢更加強大,贏得團隊戰(zhàn)斗并利用錯誤來確??焖俚膭倮?/p>
與人類的不同之處
OpenAI Five可以訪問與人類相同的信息,但是它可以立即看到諸如位置、健康狀況和物品清單等數(shù)據(jù),這些數(shù)據(jù)是人類必須手動檢查的。我們的方法與觀察狀態(tài)沒有本質(zhì)的聯(lián)系,但是僅僅從游戲中渲染像素就需要數(shù)千個GPU。
OpenAI Five的平均動作速度約為每分鐘150-170個動作(理論上最大動作速度為450個,因為每隔4幀就觀察一次)。對于熟練的玩家來說,幀完美的時機對于OpenAI Five來說是微不足道的。 OpenAI Five的平均反應時間為80ms,比人類快。
這些差異在1v1中最為重要(我們的機器人的響應時間為67ms),但是我們已經(jīng)看到人類從機器人身上學習并適應機器人,所以競技場相對比較公平。數(shù)十位專業(yè)人士在去年TI的幾個月里使用我們的1v1機器人進行訓練。根據(jù)Blitz的說法,1v1機器人改變了人們對1v1的看法(機器人采用了快節(jié)奏的游戲風格,現(xiàn)在每個人都適應了)。
一些驚人的發(fā)現(xiàn)
二元獎勵能夠帶來好的表現(xiàn)。我們的1v1模型有一個有形的獎勵,包括對最后命中目標、殺戮等等的獎勵。我們做了一個實驗,只獎勵那些獲勝的agent或只獎勵失敗的agent,它訓練一個數(shù)量級更慢,并且在中間有一些停滯,這與我們通??吹降钠交膶W習曲線形成了對比。實驗運行在4500個內(nèi)核和16個k80 GPU上,訓練到半專業(yè)級(70個TrueSkill),而不是我們最好的1v1機器人的90個TrueSkill。
Creep blocking可以從頭開始學習。對于1v1,我們學習了使用傳統(tǒng)RL進行creep blocking并帶有“creep block”獎勵。我們的一個團隊成員在休假時離開了2v2模型的訓練,打算看看還需要多久的訓練才能提高性能。令他驚訝的是,這個模型學會了沒有任何特別的指導或獎勵的情況下creep block。
我們還在修復bug。上面的圖表顯示了擊敗業(yè)余玩家的代碼的訓練運行情況,相比之下,我們只是修復了一些bug,比如在訓練中偶爾發(fā)生的崩潰,或者達到25級時導致一個大的負面獎勵的錯誤。事實證明,這個系統(tǒng)有可能擊敗人類高手,但同時也可能隱藏著嚴重的bug!
接下來是什么?
我們的隊伍正集中精力完成我們8月份的目標。我們不知道這個目標能否實現(xiàn),但我們相信,只要努力工作(還有點運氣),我們就能實現(xiàn)。
這篇文章描述了6月6日我們系統(tǒng)的快照。在超越人類性能的過程中,我們將發(fā)布更新,并在項目完成后就最終系統(tǒng)編寫報告。請在7月28日加入我們,屆時我們將與一組頂級球員比賽!
我們的目標是超越Dota。現(xiàn)實世界人工智能的部署將需要處理Dota提出的挑戰(zhàn),而這些挑戰(zhàn)并不反映在國際象棋、圍棋、雅達利游戲或Mujoco基準測試任務中。最后,我們將衡量Dota系統(tǒng)在實際任務中的應用成功程度。
-
cpu
+關注
關注
68文章
11083瀏覽量
217183 -
神經(jīng)網(wǎng)絡
+關注
關注
42文章
4814瀏覽量
103712 -
強化學習
+關注
關注
4文章
269瀏覽量
11607
原文標題:【攻克Dota2】OpenAI自學習多智能體5v5團隊戰(zhàn)擊敗人類玩家
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論