Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類

格伯納發表於2018-06-27

近日,OpenAI開發了一套“OpenAI Five”演算法,他們的五種神經網路演算法已經可以在Dota 2遊戲中進行團隊協作擊敗業餘人員隊伍。

OpenAI表示,雖然今天的遊戲中仍有限制,但他們的目標是在8月份的國際比賽中擊敗一批頂尖的專業人士,當然只限於一些有限的“英雄”角色。

然而,Dota 2是世界上最流行和最複雜的電子競技遊戲之一。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


OpenAI Five每天都會玩180年的遊戲,通過自我對抗來學習。 它使用在256個GPU和128,000個CPU核心上執行的擴充套件版Proximal策略優化進行訓練 - 這是為他們去年釋出的遊戲更簡單的單人版本而設定的更大規模版本的系統。 在遊戲中,會對每個英雄使用單獨的LSTM並且不使用人類資料的情況下學習到可識別的策略。

這場比賽OpenAI Five與OpenAI員工團隊進行對戰,由專業評論員Blitz和OpenAI Dota團隊成員Christy Dennison進行了解說,不少的社群人員也相繼圍觀。

問題

人工智慧的一個里程碑是在像星際爭霸或Dota這樣複雜的視訊遊戲中超越人類的能力。相對於以前的AI里程碑,如國際象棋或圍棋,複雜的視訊遊戲開始反映現實世界的混亂和連續性的本質。能夠解決複雜視訊遊戲的系統具有很高的通用性,其應用程式不在遊戲中。

人工智慧領域的一個里程碑是在像星際爭霸或Dota這樣的複雜電子遊戲中超越人類的能力。相對於以前的人工智慧里程碑,比如國際象棋或圍棋,人們可能更為關注的是解決複雜電子遊戲的系統將是高度通用的,而不僅僅是在遊戲領域有應用。

Dota 2是一款實時戰略遊戲,由兩名玩家組成,每個玩家控制一個稱為“英雄”的角色。玩Dota的AI必須掌握以下幾點:

  • 具備長遠的規劃。 Dota遊戲以每秒30幀的速度執行,平均時間為45分鐘,每場遊戲的成績為80,000次。大多數行為(例如命令英雄移動到某個位置)單獨產生只有較小的影響,但一些個別行為可能會在戰略上影響遊戲;有些策略甚至可以在整個遊戲中產生重大影響。 OpenAI Five每四幀觀察一次,產生20,000次移動。而國際象棋通常在40步之前就結束,在150步移動之前移動,幾乎每一次移動都是戰略性的。
  • 具備推測力。遊戲中,地圖的其他部分會隱藏在霧中,那麼,對於隱藏的敵人和他們的戰略,AI就需要根據不完整的資料進行推斷,並且需要模擬對手可能在正在進行的狀態。然而,象棋和圍棋都是全資訊遊戲,相對來說容易一些。
  • 高度連續的動作空間。在Dota中,每個英雄可以採取數十個動作,許多動作都是針對另一個單位或地面上的某個位置。我們將每個英雄的空間分割成170,000個可能的行動(並非每個都有效,例如使用冷卻時間的法術)。而國際象棋中的平均動作數為35,在圍棋中的平均動作數則是250。
  • 高維度、連續的觀察空間。 Dota會在包含十個英雄、數十個建築物、幾十個NPC單位以及諸如符文、樹木和病房等遊戲特徵的大型地圖上進行,由此可見,Dota的玩耍的過程很複雜。模型通過Valve的Bot API觀察Dota遊戲的狀態,其中20,000(大多是浮點)數字表示允許人類訪問的所有資訊。國際象棋棋盤自然表現為大約70個列舉值;一個圍棋棋盤大概約有400個列舉值。

Dota規則也非常複雜。該遊戲已經被積極開發了十多年,遊戲邏輯在數十萬行程式碼中實現。這一邏輯執行的時間是幾毫秒,而對於國際象棋或圍棋則只需要幾納秒。遊戲每兩週更新一次,不斷改變環境語義。

方法

OpenAI Five的系統使用Proximal Policy Optimization的大規模版本進行學習。 OpenAI Five和早期的1v1機器人都完全依靠自我學習進行。他們從隨機引數開始,不使用來自人類的資料。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


強化學習的研究人員(包括我們自己)一般認為,長時間視野需要從根本上取得新的進展,如層級強化學習。結果表明,我們並沒有給今天的演算法足夠的信用,至少是當它們以足夠的規模和合理的探索方式執行時。

代理人經過訓練,可以最大化未來獎勵的指數衰減總和,並由稱為γ的指數衰減因子加權。在最新的OpenAI Five訓練中,從0.998(評估未來獎勵的半衰期為46秒)到0.9997(評估未來獎勵的半衰期為五分鐘)退化γ。為進行比較,近端策略優化(PPO)論文中最長的平面是0.5秒的半衰期,Rainbow 論文中最長的半衰期為4.4秒,觀察和進一步觀察紙張的半衰期為46秒。

儘管當前版本的OpenAI Five在最後一擊時表現不佳(觀察我們的測試比賽,專業Dota評論員Blitz估計它大約是Dota玩家的中位數附近),但其客觀的優先順序匹配一個常見的專業策略。獲得戰略地圖控制等長期回報往往需要犧牲短期回報,因為組建攻擊塔需要時間。這一觀察增強了OpenAI 的信念,即系統真正在長期的優化。

模型架構

每個OpenAI Five的網路都包含一個單層1024單元的LSTM,它可以檢視當前的遊戲狀態(從Valve的Bot API中提取),並通過幾個可能的動作發出對應動作。 每個動作都具有語義含義,例如延遲此動作的刻度數量,要選擇的動作數量,單位周圍網格中此動作的X或Y座標等。

互動式演示OpenAI Five使用的觀察空間和動作空間。 OpenAI Five將“世界”視為20,000個數字的列表,並通過釋出8個列舉值的列表來採取行動。 選擇不同的操作和目標以瞭解OpenAI Five如何編碼每個動作,以及它如何觀察。以下影像顯示的是我們看到的景象。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


OpenAI Five可以對丟失的相關的狀態片段做出反應。 例如,直到最近OpenAI Five的觀測並沒有包括彈片區域(彈丸落在敵人身上的區域),只是人類在螢幕上看到了這些區域。 然而,我們觀察到OpenAI Five學習走出(雖然不能避免進入)活動的彈片區域,因為它可以看到它的“健康狀況”在下降

勘探

鑑於能夠處理長期視野的學習演算法,我們仍然需要探索環境。即使有我們的限制,也有數百種物品,數十種建築物、法術和單位型別,以及需要了解的大量遊戲機制,其中許多產生了強大的組合。要有效地探索這個組合廣闊的空間並不容易。

OpenAI Five從自我對抗開始(從隨機權重開始)學習,這為探索環境提供了一個自然的課程。為了避免“戰略崩潰”,代理商訓練80%的遊戲與自己對抗,另外20%與過去的自己對抗。在第一場比賽中,英雄們漫無目的地在地圖上漫步。經過幾個小時的訓練後,出現了諸如農業或中期戰鬥等概念。幾天後,他們一直採用基本的人類戰略:試圖從對手手中奪取賞金符文,步行到他們的一級塔去種田,並在地圖上旋轉英雄以獲得通道優勢。並且通過進一步的訓練,他們就能夠熟練掌握一些高階戰略。

2017年3月, OpenAI 的第一個產品擊敗了機器人,但卻對人類無能為力。為了強制在戰略空間進行探索,在訓練期間(並且只在訓練期間),我們隨機化了單位的屬性(包括健康,速度,開始水平等),讓它與人類對戰。後來,當一名測試玩家不停擊敗1v1機器人時,增加了隨機訓練,這時候,測試玩家開始失敗。(我們的機器人團隊同時將相似的隨機化技術應用於物理機器人,以便從模擬轉移到現實世界。)

OpenAI Five使用為1v1機器人編寫的隨機資料。它也使用一個新的“車道分配”(lane assignment)。在每次訓練比賽開始時,隨機地將每個英雄“分配”給一些子集,並對其進行懲罰以避開這些車道。

可以發現,探索得到了很好的回報。獎勵主要包括衡量人們如何在遊戲中做出的決定:淨值、殺戮、死亡、助攻、最後的命中等等。我們通過減去其他團隊的平均獎勵後處理每一個智慧體的獎勵,以防止它找到積極情況。

協調

團隊合作由稱為“團隊精神”的超引數控制。團隊精神從0到1,對OpenAI Five的每個英雄都應該關心其個人獎勵功能與團隊獎勵功能的平均值有多重要。我們在訓練中將其值從0調至1。

Rapid

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


系統被實施為通用RL訓練系統Rapid,可應用於任何環境。我們已經使用Rapid解決了OpenAI的其他問題,包括競爭性的自我對抗。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


訓練系統分為執行遊戲副本和代理收集體驗的部署工作人員,以及優化器節點,這些節點在整個GPU佇列中執行同步梯度下降。部署工作人員通過Redis將他們的體驗同步到優化器。每個實驗還包含評估經過訓練的代理商與參考代理商的工作人員,以及監控軟體,如TensorBoard、Sentry和Grafana。

在同步梯度下降過程中,每個GPU計算批次部分的梯度,然後對梯度進行全域性平均。我們最初使用MPI的allreduce進行平均,但現在使用NCCL2來並行GPU計算和網路資料傳輸。

右側顯示了不同數量的GPU同步58MB資料(OpenAI Five引數的大小)的延遲。延遲低到足以被GPU並行執行的GPU計算所掩蓋。

OpenAI為Rapid實施了Kubernetes、Azure和GCP後端。

遊戲

到目前為止,OpenAI Five已經在各種限制下,與球隊進行了比賽:

最好的OpenAI員工團隊:2.5k MMR(第46百分位)

觀看OpenAI員工比賽的最佳觀眾玩家(包括評論第一場OpenAI員工比賽的Blitz):4-6k MMR(90-99th百分點),儘管他們從來沒有作為一個團隊參賽

公司員工團隊:2.5-4k MMR(第46-90百分位)

業餘隊:4.2k MMR(第93百分位),訓練為一支隊伍

半職業隊:5.5k MMR(第99百分位),團隊訓練

4月23日的OpenAI Five版本是第一個擊敗指令碼基線的。 OpenAI Five的5月15日版本與第一隊平分秋色,贏得了一場比賽並輸掉了另一場。 6月6日的OpenAI Five版本決定性地贏得了所有的比賽。與第四和第五隊建立了非正式的比賽,預計結果不會太好,但是OpenAI Five在前三場比賽中贏得了兩場比賽。

我們觀察到OpenAI Five有以下表現:

為了換取控制敵人的安全車道,反覆犧牲了自己的安全車道(可怕的頂部車道;輻射的底部車道),迫使對手向更難防禦的一邊走近。這種策略在過去幾年中出現在專業領域,現在被認為是盛行的策略。 

比對手更快的完成從比賽初期到賽季中期的轉場。它是這樣做的:(1)建立成功的ganks(當玩家在地圖上移動以埋伏敵方英雄 - 參見動畫),當玩家在他們的車道中過度擴張時;(2)在對手組織起來之前,進行組隊推塔。

與當前的遊戲風格不同的是,在一些方面,比如給予英雄(通常不優先考慮資源)大量的早期經驗和黃金支援。OpenAI Five的優先順序使得它的傷害更早達到頂峰,並使它的優勢更加強大,贏得團隊戰鬥並利用錯誤來確保快速的勝利。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


與人類的差異

OpenAI Five可以訪問與人類相同的資訊,可以立即看到諸如位置、健康狀況和物品清單等資料,這些資料是人類必須手動檢查的。我們的方法與觀察狀態沒有本質的聯絡,但是僅僅從遊戲中渲染畫素就需要數千個gpu。

OpenAI Five的平均動作速度約為每分鐘150-170個動作(理論上最大動作速度為450個,因為每隔4幀就觀察一次)。儘管對於熟練的玩家來說,框架完美的時機選擇是可能的,但對於OpenAI Five來說是微不足道的。OpenAI Five的平均反應時間為80ms,比人類快。

這些差異在1v1中最為重要(我們的機器人的反應時間為67ms),但由於我們看到人類從機器人身上學習並適應機器人,所以競爭環境相對公平。在去年的TI測試後的幾個月裡,數十名專業人士使用了我們的1v1機器人進行訓練。根據Blitz的說法,1v1機器人已經改變了人們對1v1的看法(這個機器人採用了快節奏的遊戲風格,現在每個人都已經適應了)。

令人驚訝的發現

稀疏與密集的獎勵學習曲線,顯示密集達到同等水平的效能更快。二值獎勵能帶來好的表現。我們的1v1模型有一個形狀的獎勵,包括對最後命中目標的獎勵、殺戮等等。他們做了一個實驗,只獎勵那些成功或失敗的人,它訓練了一個數量級更慢,並且在中間有一些停滯,這與我們通常看到的平滑的學習曲線形成了對比。這個實驗執行在4500個核心和16k80個gpu上,訓練到半專業級(70個TrueSkill),而不是最好的1v1機器人的90個TrueSkill。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類


可以從頭學習卡兵。對於1v1,學習了使用傳統RL的卡兵,並得到了一個獎勵。團隊的一個成員在休假時離開了2v2的模型訓練,想看看還需要多久的訓練才能提高效能。令他驚訝的是,這個模型已經學會了在沒有任何特殊指導或獎勵的情況下卡兵。

比較bug修復前後的學習曲線,顯示修復bug如何提高學習速度。該圖表顯示了擊敗業餘玩家的程式碼的訓練執行情況,與此相比,只是修復了一些bug,比如在訓練中偶爾發生的崩潰,或者一個bug,如果達到了25級,就會得到很大的負面獎勵。

Dota 2被攻陷!OpenAI Five 5V5團戰中戰勝人類



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2156722/,如需轉載,請註明出處,否則將追究法律責任。

相關文章