Dota 2被攻陷!OpenAI 人工智能5V5模式擊敗人類玩家(4000分水平)

選自OpenAI,機器之心編譯。算法

2017 年,OpenAI 在 Dota2 TI 決賽現場以 1 對 1 solo 的方式擊敗了「Dota 2」世界頂級玩家。通過一年的發展,OpenAI 於昨日宣佈他們的 AI bot 在 5 v 5 團隊賽中擊敗業餘人類玩家,並計劃以後可以擊敗頂級專業團隊。機器之心對OpenAI的博客內容進行了編譯介紹。

咱們團隊構建的模型,OpenAI Five,已經擊敗業餘 Dota2 團隊了。雖然現在是在有限制的狀況下,但咱們計劃到 8 月份在有限英雄池下擊敗 TI 賽中的一支頂級專業隊伍。咱們可能不會成功,由於 Dota2 是當前最流行也最複雜的電子競技遊戲之一,一批有激情與創造力的玩家經年訓練,想要瓜分 4000 萬美金的獎金池。後端

經過自我對抗學習,OpenAI Five 天天至關於玩 180 年的遊戲。訓練上,它使用 256 塊 GPU、12 萬 8000 個 CPU 核心使用近端策略優化(Proximal Policy Optimization)方法進行訓練,這是在咱們去年創建的 solo Dota2 系統上的擴增。當咱們爲每一個英雄使用單獨的一個 LSTM,模型就能夠在沒有人類數據的狀況下學到可識別的策略。這代表強化學習即便沒有根本性的進步,也可以產生大規模但也可接受的長期規劃。這出乎了咱們剛開始時的預料。api

問題

人工智能的一個里程碑就是在星際爭霸或者 Dota 這類複雜的電子遊戲中超越人類的水平。相比於上一個里程碑,即國際象棋與圍棋,複雜電子遊戲開始反映真實世界的混亂與連續的本質。所以咱們但願,可以解決複雜電子遊戲的系統能夠成爲通用的、在遊戲以外有廣闊應用場景的系統。markdown

Dota2 是一個實時的 5 v 5 策略遊戲,每一個玩家控制一個英雄。而玩 Dota 的 AI 須要掌握如下技能:網絡

  • 長線策略。Dota 遊戲平均每秒 30 幀,一場時常 45 分鐘,大概 8 萬 tick。大部分操做(例如操縱英雄移動)都有單獨的小影響,但一些個體行爲可能會影響到遊戲戰略,例如 TP 回家。此外,還有一些策略可能會終結整場遊戲。OpenAI Five 每 4 幀觀察一次,產生了 2 萬個決策。相比之下,國際象棋通常在 40 步以前就結束了,圍棋大概 150 步,但這些遊戲每一步都頗有策略性。
  • 局部可觀測狀態。己方單位和建築的視野都有限。地圖的其餘部分是沒有視野的,可能藏有敵人和敵方策略。高玩一般須要基於不完整數據作推理,以及建模敵方意圖。而國際象棋和圍棋都是徹底信息博弈。
  • 高維、持續的行爲空間。在 Dota 中,每一個英雄能採起數十種行爲,並且許多行爲要麼面向敵方單位,要麼點地移動位置。咱們把這個空間離散到每一個英雄 17 萬種可能的操做(不是每 tick 都有效,例如在技能冷卻時放技能就是無效操做);不計算連續部分,每 tick 平均 1000 個可能有效行爲。國際象棋的行爲數量大概是 35,圍棋 250。
  • 高維、連續的觀察空間。Dota 是在一張包含 10 個英雄、20 幾個塔、數十個 NPC 單位的地圖上操做的遊戲,此外還有神符、樹、眼衛等。經過 Valve(Dota 2 的運營公司)的 Bot API,咱們的模型把 Dota 遊戲視爲 2 萬個狀態,也就表明人類在遊戲中可獲取到的全部信息。國際象棋表明大概 70 個枚舉值(8x8 的棋盤,6 類棋子和較小的歷史信息)。圍棋大概有 400 個枚舉值(19x19 的棋盤,黑白 2 子,加上 Ko)。

Dota 規則也很是複雜,這類遊戲開發了十幾年,成百上千的代碼行實現遊戲邏輯。並且遊戲每兩週更新一次,環境語義一直在變。架構

方法

咱們的系統使用一個高度擴展版本的近端策略優化(Proximal Policy Optimization)算法進行學習。OpenAI Five 和以前的 1v1 機器人都是經過自我對抗進行學習的。他們從隨機參數開始,並不從人類玩家的方法中進行搜索或者自舉。函數

強化學習研究人員(包括咱們本身)過去廣泛認爲,進行長時間範圍的學習須要根本性的算法突破,例如層級強化學習(hierarchical reinforcement learning)。而咱們的結果顯示,咱們並無充分信任現有的模型——至少當他們以足夠的規模和合理的探索方式運行的時候。oop

咱們的智能體被訓練以最大化將來獎勵的指數衰減和,其中指數衰減因子被稱爲 γ。在 OpenAIFive 最新一輪的訓練中,咱們將 γ 從 0.998(以 46 秒爲半衰期)調整到了 0.997(以 5 分鐘爲半衰期)。相比之下,OpenAI 的近端策略優化(PPO)論文中最長的時間跨度爲半衰期 0.5 秒,DeepMind 的 Rainbow 論文中最長的時間跨度爲半衰期 4.4 秒,Google Brain 的 Observe and Look Further 論文中則使用了 46 秒的半衰期。學習

雖然當前 OpenAI Five 的補兵能力略差(看咱們的測試賽,專業 Dota 解說員 Blitz 估計它的補兵能力只有職業玩家的中值水平),但它在選擇優先攻擊目標上能達到專業水平。獲取長期獎勵(例如插眼控圖)一般須要犧牲短時間獎勵(例如發育後的金錢),由於團推時要也要耗費時間。這一觀察增強了咱們的信念:系統會隨長時間而有優化。測試

模型架構

每一個 Open AI Five 網絡包含一個單層、1024 個單元的 LSTM 網絡,它能觀察當前的遊戲狀態(從 Valve 的 Bot API 中抽取)並經過一些可能的行動 Head 發出下一步採起的行動。每個 Head 都包含語義信息,例如延遲該行動的時間值、選擇哪個行動和其 X 與 Y 的座標軸。

OpenAI Five 使用了觀察空間和行動空間的交互性演示。它將世界表徵爲一個由 2 萬個數值組成的列表,並經過發出一個包含 8 個枚舉值的列表而採起行動。咱們能夠在 OpenAI 網站上選擇不一樣的行動和目標以理解 OpenAI Five 是如何編碼每個行動,以及如何觀察世界的。下圖展現了人們可能會觀察到的場景:

Necrophos

OpenAI Five 能夠對其丟失的狀態片斷做出反應,這些狀態片斷可能與它所看到的相關。例如,直到最近 OpenAI Five 的觀察尚未包含彈片落下的區域,而人類能夠在屏幕上輕鬆觀察到這些落彈區域。然而,咱們觀察到 OpenAI Five 能夠學習走出活躍的落彈區域,由於在這樣的區域中智能體會發現它們的生命值在降低。

探索

儘管構建的學習算法能處理較長的視野,但咱們仍然須要探索環境。即便咱們已經限制了複雜度,但遊戲仍然有數百種物品、幾十種建築、法術、單位類型以及須要長時間慢慢學習的遊戲機制,這些變量將組合成極其巨量的狀況。所以,有效地探索這一巨大的組合空間是很是困難的。

OpenAI Five 經過自我對抗(self-play)從隨機權重開始學習,這爲探索環境提供了一個天然的 curriculum。爲了不「策略崩壞」,智能體在 80% 的遊戲中經過自我對抗進行訓練,而在 20% 的遊戲中與過去的智能體進行對戰。在第一場遊戲中,英雄漫無目的地在地圖上探索,而在幾個小時的訓練後,出現了規劃、發育或中期戰鬥等概念。幾天後,智能體能一致地採用基本的人類策略:試圖從對手偷財富、推塔發育、在地圖旋轉控制英雄以得到線路優點。經過進一步的訓練,它們變得精通 5 個英雄一塊兒推塔這樣的高級策略了。

在 2017 年,咱們第一個智能體擊敗了機器人,但仍然不能打敗人類。爲了強制在策略空間中進行探索,咱們有且僅在訓練期間對這些單位的屬性(生命、速度和初始等級等)進行了隨機化,而後它開始與人類對戰。隨後,當一名測試玩家不停地擊敗咱們的 1V1 機器人時,咱們增長了訓練的隨機性,而後測試玩家就開始輸掉比賽了。此外,咱們的機器人團隊同時將相似的隨機技術應用到物理機器人中,以便從模仿學習遷移知識到現實世界中。

OpenAI Five 使用咱們爲 1V1 機器人編寫的隨機化,它還使用一個新的「lane assignment」。在每次訓練遊戲開始時,咱們隨機「分配」每個英雄到線路的一些子集,並在智能體發生偏離時對其進行懲罰,直到遊戲中的隨機選擇時間才結束懲罰。

這樣的探索獲得了很好的獎勵。咱們的獎勵主要由衡量人類如何在遊戲中作決策的指標組成:淨價值、殺敵數、死亡數、助攻數、最後人頭等。咱們經過減去每個團隊的平均獎勵之後處理每個智能體的獎勵,所以這能防止智能體找到正項和(positive-sum)的狀況。

合做

OpenAI Five 沒有在各個英雄的神經網絡之間搭建顯式的溝通渠道。團隊合做由一個咱們稱之爲「團隊精神」的超參數控制。團隊精神的取值範圍爲從 0 到 1,表明了 OpenAI Five 的每一個英雄在多大程度上關注本身的我的獎勵函數以及在多大程度上關注團隊平均獎勵函數。在訓練中,咱們將其值從 0 逐漸調整到 1。

Rapid

咱們的系統是用通用的強化學習訓練系統 Rapid 來實現的。Rapid 能夠被應用到任何一個 Gym 環境。在 OpenAI,咱們也用 Rapid 來解決其餘問題,包括競爭性自我對抗訓練(Competitive Self-Play)。

訓練系統示意圖

咱們已經在 IBM Kubernetes,微軟 Azure,谷歌 GCP 後端上實現了 Rapid。

遊戲

到目前爲止,咱們與這些隊伍進行了對戰:

  1. 最強的 OpenAI 職員團隊: 匹配分 2500
  2. 觀看 OpenAI 職員比賽的觀衆玩家 (包括 Blitz 等):匹配分 4000-6000,他們此前從沒有組隊參勝過。
  3. Valve 公司團隊: 匹配分 2500-4000
  4. 業餘團隊: 天梯 4200, 做爲一支隊伍來進行訓練。
  5. 半職業團隊: 天梯 5500, 做爲一支隊伍來進行訓練。

在與前面三支隊伍的比賽中,OpenAI 取得了勝利,輸給了後面的兩隻隊伍(只贏了開場前三局)。

咱們觀察到 OpenAI Five 具備如下幾個特色:

常常來犧牲本身的優點路(夜魘軍團的上路,天輝軍團的下路),以壓制敵人的優點路,迫使戰鬥轉移到對手更難防護的一邊。該策略在過去幾年的專業領域出現過,如今已經成爲了流行戰術。Blitz 說他在打 DOTA 8 年後才學到了這個戰術,當時是 Liquid(一支職業隊伍)告訴了他。

比賽初期到中期的轉換比對手更快。它是這樣作到的:1)在人類玩家走位出問題時,進行屢次成功 gank,2)在對方組織起反抗前,去組隊推塔。

在一些領域機器有時也會偏離主流打法,例如在前期將錢和經驗讓給輔助英雄(這些英雄通常不優先獲取資源)。OpenAI Five 的優先級使它得到的傷害更快達到頂峯,從而創建起更大的優點,贏得團戰以及利用對方的錯誤來確保快速取勝。

和人類的差別

OpenAI Five 得到的信息和人類是同樣的,但前者能夠實時看到位置、生命值和裝備清單等,而這些信息都須要人類選手去手動查看。咱們的方法從根本上就沒有依賴於(實時)觀察狀態,但從遊戲中渲染像素就須要成千上萬塊 GPU。

OpenAI Five 平均每分鐘可進行 150-170 次操做(APM=150-170,由於每四幀觀察一次,因此理論峯值爲 450)。熟練的玩家有可能掌握完美捕捉畫面的時機,但這對機器來講垂手可得。OpenAI Five 的平均反應時間爲 80 毫秒,比人類更快。

這些差別在 1V1 中影響最大(當時咱們機器人的反應時間爲 67 毫秒),但競技是相對公平的,由於咱們已經看到人類在學習和適應機器人的打法。在去年 TI 以後,不少專業選手使用咱們的 1V1 機器人進行了爲期數月的訓練。William *"Blitz"* Lee(前 DOTA2 專業選手和教練)表示,1V1 機器人已經改變了咱們對單挑的傳統見解(機器人採起了快節奏的打法,如今每一個人都已經試着去跟着這個節奏)。

使人驚訝的發現

二元獎勵能夠給予良好的表現。咱們的 1v1 模型具備形狀獎勵,包括上次命中獎勵,殺戮等。咱們進行了一個實驗,只獎勵代理的獲勝或失敗,而且讓它在中間訓練了一個數量級較慢而且稍微平穩的階段,與咱們日常看到的平滑學習曲線造成對比。該實驗在 4500 個核心和 16 個 k80 GPU 上進行訓練,訓練至半專業級(70 TrueSkill,而非咱們最好的 1v1 機器人的 90 TrueSkill)。

咱們能夠從頭開始學習卡兵。對 1v1 來講,咱們使用傳統的強化學習和一個卡兵獎勵(a creep block award)來學習卡兵。咱們的一個同事在去度假前(去和未婚妻求婚!)留下了 2v2 模型,打算看看須要多久的訓練能才提升表現。令他驚訝的是,這個模型在沒有任何指導或獎勵的狀況下學會了卡兵。

咱們仍在修復系統漏洞。下圖顯示了擊敗業餘玩家的訓練代碼,相比之下,咱們只是修復了一些漏洞,好比訓練期間的罕見崩潰,或者致使達到 25 級的巨大負面獎勵的錯誤。事實證實咱們能夠在隱藏嚴重漏洞的狀況下,依然擊敗優秀的人類玩家!

Open AI Dota 的一個子團隊手託去年在 Dota 2 國際邀請賽 1v1 上擊敗世界頂級專業玩家的筆記本電腦。

下一步計劃

Open AI 的團隊專一於達成八月份制定的目標。咱們不知道它是否能夠實現,可是咱們相信經過自身的努力(和運氣),機會仍是很大的。

原文地址:blog.openai.com/openai-five…

相關文章
相關標籤/搜索