機器之心報道,做者:Tony Peng。程序員
去年,OpenAI 的 1v1 AI 擊敗了世界頂尖選手 Denti,OpenAI CTO Greg Brockman 承諾:明年,咱們會帶着 5v5 的 AI bot 重回 TI。今天,他們履行了諾言,帶着全新的 OpenAI Five,意欲挑戰全世界最頂尖的 Dota 2 人類玩家。然而,51 分鐘的比賽以後,OpenAI 經歷了一場完敗。算法
據介紹,本屆 TI8 的不少參賽隊伍都報名想參加與 AI 的比賽,OpenAI 今天遇到了第一個對手:來自巴西的戰隊 paiN,後者也是本屆 TI8 比賽第一支被淘汰的隊伍。但不能否認,它仍然是目前爲止全球最爲強大的 18 支隊伍之一。而在此以前的公開比賽中,OpenAI Five 在 1v1 比賽中打敗了 Dendi,又在 5v5 比賽中打敗了人類前職業玩家、遊戲解說員組成的 6000 分級別戰隊。api
有 AlphaGo 圍棋的「前車可鑑」,比賽以前,人們紛紛預測 OpanAI 的人工智能穩贏。然而事實並無這麼簡單,雖然 OpenAI 的智能體在操做反應等方面比較有優點,當在總體策略與合做上仍比不上人類團隊。網絡
TI8,開局不利機器學習
今天的人機大戰僅進行一場,比賽雙方陣容以下:分佈式
OpenAI 天輝方:直升機、巫妖、死亡先知、冰女、潮汐ide
paiN 夜魘方:萊恩、死靈法師、巫醫、火槍、斧王學習
比賽一開始,OpenAI 就給了本身 97% 的勝率,然而開局就出師不利,paiN 選擇了開霧直接衝進天輝野區,四人圍攻落單的潮汐,搶到了一血。OpenAI 也展現出了人工智能「不聰明」的一面,在塔下不斷插眼。測試
paiN 開局打的不錯,遊戲進入 7 分半,OpenAI Five 落後 1000 經濟。OpenAI 逐漸在 10 分鐘時把比分掰成了 7 比 7,場面陷入了焦灼。咱們能夠看到,電腦並不注重殺人,只專一於推塔。隨後,AI 在兩撥下路團戰中抓住了機會。至 17 分鐘,OpenAI 的經濟反超人類選手。優化
21 分半,AI 拿下 Roshan,這也是 AI 首次在公開比賽中擊殺 Roshan,直升機拿盾。不過,在 25 分鐘直升機在夜魘野區被抓,盾被浪費了。AI 也沒有來救,直接拋棄大哥了。32 分鐘第二次拿下 Roshan,可是沒想到的,OpenAI 很是「自私」,誰殺掉了 Roshan 誰拿走不朽盾,就算他是輔助位!隨後,OpenAI 下路野區打出一波二換四。
人工智能對於插眼的思路異於人類,咱們最多能夠看到三個真眼被放在了 Roshan 門口!而 AI 同時還在家裏也放了三個眼,引來了解說的吐槽。在滿級以後,咱們看到了 AI 死亡先知一直在大招收野區,很強!
paiN 的玩家雖然人頭落後,在英雄操做上不佔優點,但逐漸找回了節奏,在推掉下路後佔據了場面上的優點。35 分鐘,人類玩家上了高地,此時 OpenAI 預測的勝率下降到了 67%。
固然,人類並不認爲此時 AI 還能佔據優點。在 37 分鐘,paiN 經濟已經領先了 9000。到 40 分鐘,OpenAI 在擊殺了人類兩個英雄後選擇了第三次打 Roshan,不過此時人類職業玩家彷佛已經掌握了人工智能的套路。
比賽進行到第 49 分鐘,AI 認爲本身的勝率已經下降到 20%,大局已定。
最終,paiN 的人類玩家在團滅 OpenAI 以後打爆了水晶。TI8 人機大戰第一場比賽以人類的勝利告於段落。
今天的比賽,AI 存在着三個巨大的問題:
首先,遊戲中期不會 Gank 也不會集中優點推塔了。在 20 分鐘到 35 分鐘的時候,有一段空窗期,paiN 的火槍和斧王都尚未出 BKB,這是 AI 的好機會。可是除了處處插眼,就是在 Roshan 附近晃悠,也沒有組織起像樣的抓人和推塔。等到敵方經濟打出來,BKB 出來以後,比賽呈現了一邊倒的態勢。
其次,沒有位置之分,不會合理安排資源。Dota 從來有 1-5 號位,1 號位 Carry,4-5 號位輔助。將最優資源分配給 1 號位是 Dota 多年來的經驗,本場比賽 paiN 也是將資源優先分配給火槍和斧王。反觀 AI 這邊,遵照着人人平等的原則,居然出現了讓潮汐和巫妖拿不朽盾這種「戰術安排」。
最後,出裝出現大的問題。AI 彷佛不明白什麼裝備合適,並且浪費了大量的金錢在插眼上。
OpenAI Five 項目組成員、研究科學家 Jonathan Raiman 告訴機器之心,團隊成員並無特別失望,「賽前,咱們大多數人以爲贏下本場比賽的概率大概就 30%-40%。這場比賽咱們學到了不少東西,好比 AI 擊殺了 Roshan 不少次,這些都值得咱們回去好好研究。」
Raiman 透露,這次比賽環境由於改變信鴿的設置,信鴿變得能夠被擊殺,這讓模型又要從新適應新的環境,必定程度上影響了不少因素,好比裝備的購買;此外,團隊正在反思關於將來獎勵權重的設置。OpenAI 有一套團隊協做機制(後文會詳細介紹),一切獎勵都圍繞遊戲最終勝利爲前提,但如今看來,這樣的設置下降了 AI 在前期 farm 和積累經濟的積極性。
這只是 OpenAI 在 TI8 期間的第一場比賽,以後還有兩場比賽留給 OpenAI 挽尊。只不過,從 6 月首次公開 OpenAI Five 研究成果,到一帆風順順水地在基準測試中虐殺人類隊伍,OpenAI Five 爲什麼在今日遭受當頭棒喝,或許,咱們能夠從它以前的故事裏,獲得一些啓示。
AlphaGo以後,須要接棒手
咱們將時間撥回到 2016 年……
研究遊戲中的 AI 一直是機器學習領域的熱門課題:一來,設計遊戲的初衷是娛樂和挑戰,這種複雜性和趣味性使其成爲 AI 的理想選擇;兩者,遊戲提供了豐富的人機交互機會;再者,由於遊戲很是流行,天然創造出了更多的數據做爲訓練 AI 的營養。
過去幾年,遊戲研究爲機器學習領域帶來了重大的突破:2015 年,谷歌的 DeepMind 在科學雜誌《天然》上發表了一項最新研究:他們開發出了深度強化學習(具體爲 Deep Q Network)來訓練 AI 玩家,在 Atari 2600 的一系列遊戲中,表現接近甚至超過了人類的水平。
到了第二年,DeepMind 的 AlphaGo 橫空出世,基於蒙特卡洛樹搜索和強化學習,它在和韓國圍棋大師李世乭的較量中以 4:1 勝出;又過一年,AlphaGo 進化爲 AlphaZero,不依靠人類知識,緊靠自我博弈,在國際象棋、將棋和圍棋這三種棋類遊戲中實現超過人類的水準。
一盤棋,在全世界颳起了一股 AI 熱潮,但這股熱潮早晚會冷卻。世界須要新的刺激保持對 AI 的好奇心和熱忱,從業者們也要尋求新的挑戰探索 AI 的邊界。
圍棋雖然被攻破了,但在萬千遊戲世界裏,留給研究員們的空間依然很大:從牌類遊戲,第一人稱遊戲,雅塔利遊戲系列,到賽車遊戲,策略遊戲,沙盒遊戲……DeepMind 和 Facebook 便在星際爭霸(StarCraft)上發力,星際爭霸被認爲是電子遊戲世界裏最難被攻克的遊戲之一,至今 DeepMind 的表現一直不太理想,也促使了他們在去年和暴雪公司開源了星際爭霸 2 的機器學習平臺。
在這樣的背景下,OpenAI 的 Dota AI 項目,被予以了厚望。
2016 年 11 月 5 日,OpenAI 決定開發能夠學習 Dota 2 的人工智能體。項目組由 OpenAI CTO Greg Brockman 帶領。
在此以前,OpenAI 並不知道研究什麼遊戲,只是大概有個標準:遊戲要足夠複雜,且十分流行,有豐富的 API 可使用,能在 Linux 上運行。他們在美國直播平臺 Twitch 上搜索了全部的遊戲,最終將目標落在了 Dota 2 上。
Dota,全名 Defense of The Ancients,本來是從競技遊戲《魔獸爭霸》系列孵化出的一張多人在線戰術競技地圖,如同這款遊戲的名字同樣,Dota 的勝利條件是摧毀敵方的 Ancient(水晶)。
2005 年,Dota 初版地圖 6.01 版本正式發佈,Dota 背後最核心的地圖程序員冰蛙(IceFrog)多年來維護和更新 Dota 地圖。2013 年,冰蛙聯合遊戲開發公司 Valve 發行了 Dota 2,徹底獨立於魔獸爭霸,成爲了一款真正的競技遊戲。
Dota 2 符合 OpenAI 的全部要求:
首先,它十分複雜。Dota 2 有 115 個可用英雄,每一個英雄 1-10 個技能不等(卡爾,說的就是你),上百件物品,20 幾個塔、數十個 NPC,5v5 組整天輝和夜魘兩派,在三條線路上互相博弈,從中衍生出包括對線、打野、Gank、團戰、插眼等不一樣的戰術和安排。
OpenAI 在官方博客上列出了 Dota 2 和棋類遊戲的對比數據:Dota 2 每 tick 平均產生 1000 個可能有效行爲,相比之下,國際象棋是 35 個,圍棋是 250 個;經過 Valve(Dota 2 的運營公司)的 bot API,OpenAI 把 Dota 2 視爲 2 萬個狀態,也就表明人類在遊戲中可獲取到的全部信息。國際象棋表明大概 70 個枚舉值,圍棋大概有 400 個枚舉值。
其次,Dota 2 很流行。這款遊戲在全球有上千萬的玩家,雖然數量上比不過《英雄聯盟》或者現在的「吃雞」和「堡壘」,但它因爲歷史相對久遠(Dota 在 2005 年發行),又基於魔獸爭霸的史詩背景,使得這款遊戲有着很深的底蘊和口碑。
再者,Dota 2 有專業電競賽事。每一年 8 月,全世界的頂級玩家會來到北美參加 Dota 2 國際邀請賽 The International,這是由 Valve 舉辦。去年 TI7 的獎金池高達 2000 多萬美圓。
起初,OpenAI 並不是着眼於擊敗頂尖的人類玩家,若是能使用當前最前沿的機器學習算法,開發出一個智能的、會玩 Dota 的虛擬機器人(下文用 bot 代替),就已是莫大的突破了。沒想到,路越走越遠。
咱們可能要失敗了
2017 年年初,OpenAI 開發出了他們自認爲最好的一款基於規則編寫的腳本 bot。這要多虧於項目組的前研究員、現在對衝基金 DE Shaw Group 的 SVP Rafal Jozefowicz,Rafal 從沒有打過 Dota,但他天天都看比賽回放,和其餘成員聊 Dota 2 英雄是怎麼放技能、怎麼推塔、怎麼買裝備。
研究員們把能想到的規則都編寫了進去,腳本 bot 也確實能打贏一些業餘玩家,但面對稍強一些的玩家就毫無勝算了。
OpenAI 決定再進一步,把硬編碼的部分取出來,轉而用機器學習代替。他們使用強化學習(reinforcement learning)讓 bot 從頭開始學習。結果,他們發如今短期里根本沒法在 5v5 的環境裏實現,太困難了。
研究員因而退而求其次,先從一個小遊戲下手,而後逐步擴大遊戲環境,這個小遊戲叫 Kiting。
Kiting 是 Dota 裏的一個技巧,通常出如今對線期:你攻擊一下敵方單位而後經過走位讓它打不到你,來來回回地消耗敵方的血量。OpenAI 基於 Dota2 創造了一款小遊戲:在一個環形孤島上,讓訓練好的 bot 在島上去經過 Kiting 的方式和腳本 bot,保證本身不被打到的同時將敵方單位擊殺即算獲勝。
聽起來挺簡單的吧?實際操做卻根本不是一回事兒,OpenAI 的 bot 在 Kiting 裏始終打不贏人類玩家。OpenAI 的 bot 始終沿着一樣一種軌跡訓練,可是人類每每不按套路出牌,這讓實驗結果一直差強人意。
「咱們可能要失敗了,」這是 OpenAI 在當時得出的結論,距離項目啓動已經小半年了,進度卻大幅度落後,很多研究員有些灰心。此時,OpenAI 決定走到哪兒算哪兒,即便是發佈最新的研究成果也依然有價值。
結果起色出現了。研究員開始將訓練環境裏隨機化,讓英雄時而走的快,時而走的慢,時而由於故障而停滯不前。這個方法很快收到了奇效,隨機性使得 bot 的強化學習策略網絡很是魯棒。2017 年 3 月 1 日,OpenAI 訓練出來的小黑(黑暗遊俠)已經能夠在 Kiting 中擊殺腳本編碼的小牛(撼地神牛)。
他們將 Kiting 裏的策略放到了 Dota 2 的 1v1 模式中,一樣收到了效果。Bot 開始學會補兵、學會卡兵、能使用各類技能了。這給予了 OpenAI 極大的信心:只要使用一樣的算法,而後加碼計算能力,或許有一天,咱們能作出 5v5 的 AI。
Jonas Schneider 回憶說,直到 2017 年的 四、5 月份,他都依然能夠輕鬆地擊敗 AI,但隨着 OpenAI 加入了更多的算力對 bot 進行訓練,它的水平開始日新月異。6 月初,它打贏了 1500 分的玩家。兩個月後,Dota2 1v1 大神、2015 年 The International 冠軍隊伍成員 Sumail 也敗給了 OpenAI。
在這個過程當中,著名的美籍韓裔解說員 William「Blitz」Lee 對 OpenAI 幫助很大。OpenAI 當時找到了 Blitz,但願他能予以一些指導,要知道,並非每一位 Dota 玩家都欣賞 OpenAI 的作法,有人以爲這羣科學家在耍花招,有人不看好,但 Blitz 從一開始就被 OpenAI 的成果所吸引,據 OpenAI 研究員回憶,Blitz 在和 bot 打完一場 1v1 後,說了這麼一句話:
「這將今後改變 Dota 玩家如何 1v1 的方式。」
接下來的故事,你們都知道了:在去年 TI7 上的 Dota2 一對一表演賽中,由 OpenAI 設計的 bot 戰勝了 Danylo "Dendi" Ishutin,Dendi 在職業生涯中已經贏得 73 萬 美圓獎金。OpenAI 的 bot 在第一場比賽開始約 10 分鐘就戰勝了 Dendi。在第二場比賽中 Dendi 放棄,並拒絕進行第三場比賽。
OpenAI 火了。從機器學習這個圈子裏的明星研究機構,變成了全世界關注和熱議的焦點。AI 攻破 Dota 1v1 成功霸屏去年的 TI7,一場表演賽,風頭蓋過了 TI7 上全部的正式比賽。多數人振奮,驚喜,難以置信,也有人懷疑和不甘心,五味雜陳。
1v1 的勝利爲 OpenAI 解開了許多謎團,其中最重要的是:強化學習在如此複雜、須要長期策略的遊戲環境下是否依然奏效?
沒有人不會質疑 AI 學習某一種技能的能力,好比正反補,好比釋放技能,這都很簡單。但在複雜的環境裏將全部的技能、走位、對線等串在一塊兒,在 1v1 中打敗世界頂尖玩家,這是重大的突破,毋庸置疑。
不過,許多人不知道的是,人類玩家在這以後的和 OpenAI 的 1v1 單挑中仍是贏過一次的。去年 9 月 7 日,來自德國的 Dota2 選手 Dominik "Black" Reitmeier 在最後時刻完成皮血反殺,取得 2:1 的勝利。這是人類第一次在徹底版 AI 面前取勝,看把 Black 激動成什麼樣了。
OpenAI 不是 AlphaGo,至少,它不是無敵的。
比賽結束後,OpenAI CTO Brockman 在 TI7 上公佈了另一個使人振奮的消息,「下一步是 5V5。咱們明年 TI 再見!」
解決 5V5 的三個核心問題
話雖然放出去了,但將 1v1 的成功在 5v5 上覆制,OpenAI 沒有十足的把握。在真正開始訓練 bot 前,研究團隊作了大量的前期準備工做:
好比最大化地利用 CPU 和 GPU 來加速大規模訓練,時間就是金錢,OpenAI 最終使用了 128,000 CPU 核和 256 個 GPU 來支持算力,讓 AI 天天自我博弈成千上萬盤遊戲,天天累計遊戲時間達到 180 年(限制 AI 遊戲時間什麼的是不存在的);
他們摒棄了 Kubernetes 而自主開發了一個專門用於強化學習的訓練系統 Rapid,可以在分佈式系統中快速地複製多個機器上訓練出來的結果和數據,而後更新訓練參數;
他們使用了 Gym 做爲訓練環境。Gym 是 OpenAI 自主開發的用於強化學習的訓練環境,包含了 OpenAI Five 所須要的各類程序和後臺編碼。
在完成部署後,OpenAI 須要解決三個核心問題:長線操做、獎勵機制、和團隊協做。
爲了訓練每一個英雄,OpenAI 使用了兩種機器學習技術:長短時間記憶網絡(LSTM)和近端策略優化(Proximal Policy Optimization)。
爲何使用 LSTM 其實很好理解:打 Dota2 須要記憶,敵方英雄的每個當前行爲都會對以後的行爲產生影響。LSTM 是一種循環神經網絡(RNN),它比普通的 RNN 更適合於處理和預測時間序列中間隔和延遲很是長的重要事件。LSTM 有一個叫作 Cell 的元素,可以分辨出輸入的信息是否有用,是否須要記住。
每個 bot 的神經網絡包含一個單層的、擁有 1024 單位的 LSTM,觀察遊戲的局勢而後作出相應的行爲。下圖這個互動演示就是可讓你理解每一個 bot 是如何作出指令的,這些畫面就是 Dota 2 的 API 所觀察到的。
以圖中右下角的毒龍(冥界亞龍)釋放二技能「毒液」爲例,他要作出這個行動須要四個指標:行爲(包括移動、攻擊、釋放技能、使用物品),目標英雄、技能釋放的位置、以及何時釋放。OpenAI 最終將 Dota2 世界表徵爲一個由 2 萬個數值組成的列表。
Bot 的自我學習則依靠了近端策略優化,這是 OpenAI 在 2017 年提出的一種強化學習算法,被證實比通常的策略梯度法所需更少的數據和調參來得到更好的效果。OpenAI Five 和早期的 1v1 bot 都是從自我對抗中學習,以隨機參數開始,不使用人類的搜索或引導程序。
爲了不「策略崩壞」,智能體在 80% 的遊戲中經過自我對抗進行訓練,而在 20% 的遊戲中與過去的智能體進行對戰。
獎勵機制則牽涉到兩個方面:一是每一個行爲對於最終影響遊戲結果的權重。好比反補的權重是 0.2,正補是 0.16;推掉高地塔的權重 1.0,可是推掉水晶外的兩座外塔的權重只有 0.75,和推掉第一座外塔的權重一致,被擊殺的權證則爲負數。
另外一個是每一個神經網絡的訓練以最大化將來獎勵的指數衰減(exponential decay factor)和爲目標。這是一個至關重要的參數,決定了 bot 到底是關注長期的獎勵仍是短時間的獎勵。若是γ過小,那麼 bot 就只關注眼前好比打錢的利益;γ太大,那麼它將無限關注將來的獎勵,對前期訓練 bot 沒有一點好處。
OpenAI 在官方博客稱,他們將γ 從 0.998(以 46 秒爲半衰期)調整到了 0.997(以 5 分鐘爲半衰期)。相比之下,OpenAI 的近端策略優化(PPO)論文中最長的時間跨度爲半衰期 0.5 秒,DeepMind 的 Rainbow 論文中最長的時間跨度爲半衰期 4.4 秒,Google Brain 的 Observe and Look Further 論文中則使用了 46 秒的半衰期。
如何讓五個神經網絡協做團戰是另外一個讓很多人好奇的一點,這其實也是創建在獎勵機制上。OpenAI 開發了一個叫 Team Spirit 的超參數,數值從 0 到 1,數字越小每一個神經網絡就越「自私」,相反則越考慮團隊的總體利益。到最後,OpenAI 發現將 Team Spirit 設置爲 1 都能贏得比賽。
在訓練初期,研究員其實會將數值調整的很小,這樣 AI 會更考慮自身的獎勵,學習如何分路、對線、提供金錢和經驗。等到每一個神經網絡學會了基本的策略和玩法後,研究員纔將數值慢慢提升。
因爲全部參數都是隨機,AI 沒有引入任何人類的經驗,因此 AI 沒有 1-5 號位的概念,不會區分輔助和 carry,出裝備也是從頭開始學習。
在第一場遊戲中,英雄漫無目的地在地圖上探索,而在幾個小時的訓練後,出現了規劃、發育或中期戰鬥等概念。幾天後,智能體能一致地採用基本的人類策略:試圖從對手偷財富、推塔發育、在地圖旋轉控制英雄以得到線路優點。經過進一步的訓練,它們開始學會了 5 個英雄一塊兒推塔這樣的高級策略。
「AI只花了兩天就打贏我了」
曾就讀於麻省理工大學的 Jonathan Raiman 在去年 10 月加入了 OpenAI。Raiman 和 OpenAI 的很多研究員是舊相識,加入後,他們就常常在週一夜開五人黑,這慢慢地竟成了 OpenAI 的傳統
五月的某一個週一(官方顯示爲5月15日),AI首次在限制的Dota環境裏打贏了OpenAI的團隊(天梯分2500)。
「那場比賽我記得人類支撐了大概 40 多分鐘,」Raiman 在場邊觀看了比賽。「以後,比賽時間就愈來愈短了。我超級興奮的!我以爲咱們有 50/50 的概率能挑戰專業的隊伍了。」
事實上,在這場比賽的一週前,AI 已經打贏過一次人類了。但那一次勝利存在着一些問題,研究員們檢查了後臺的代碼,發現運行神經網絡的代碼是錯的!AI 在比賽的過程當中徹底沒有使用 LSTM 的記憶功能,瞎貓碰到死耗子,卻贏了。在這以前,研究員根本沒有看出來 AI 有任何問題。
「許多機器學習的問題仍是落實在工程和系統漏洞修復上,」OpenAI 的研究科學家 Susan Zhang 說。「好比,AI 在很長一段時間裏,都會避免升級到 25 級,由於它發現達到 25 級會出現巨大負面獎勵,因此到了 24 級 AI 就不會出去升經驗了。」
Raiman 也和 AI 過了過招。第一次,他所在的團隊贏了;可當 AI 通過兩天的訓練後,Raiman 就不是對手了。「對我這個水平的人來講,大概就只有 24-48 個小時的空窗期,過了就打不過 AI 了。一開始咱們還能抵抗 40 多分鐘,到後面就只有 20 分鐘,再到後面就十多分鐘,最後索性咱們就呆在基地不出來了。」
到了 6 月 6 日,OpenAI 已經能夠擊敗水平在 4000-6000 分的隊伍,可是輸給了匹配分 5500 的專業隊伍。在那次比賽中,研究員們發現了許多有意思的現象:
OpenAI Five 習慣犧牲本身的優點路(夜魘軍團的上路,天輝軍團的下路),而後在劣勢路派上三個英雄壓制敵人的優點路,迫使戰鬥轉移到對手更難防護的一邊。該策略在過去幾年的專業領域出現過,如今已經成爲了流行戰術。
比賽初期到中期的轉換比對手更快,在人類玩家走位出問題時,AI 會主動進行 gank;在對方組織起反抗前,直接推塔。
AI 會在前期將錢和經驗讓給輔助英雄(這些英雄通常不優先獲取資源)讓它們的傷害值更高,從而創建起更大的優點,贏得團戰以及利用對方的錯誤來確保快速取勝。
時隔將近一年,OpenAI 首次對外公佈了 OpenAI Five 項目的進度,發佈 OpenAI Five 項目報告。
隨着更多的細節被披露,「一天訓練 180 年,OpenAI 擊敗人類 Dota2 玩家」、「OpenAI 攻破 Dota2」的新聞迅速席捲全球。微軟創始人 Bill Gates 就發推特說,「AI 機器人在視頻遊戲 Dota 2 中擊敗了人類。這是一個大問題,由於他們的勝利須要團隊合做和協做 - 這是推進人工智能的一個重要里程碑。」
人們開始真的相信:Dota 2,是否是也會像圍棋同樣被 AI 攻破了?
只有半個 Dota
OpenAI 第一階段的成果確實喜人,但披露出來的結果並不能讓許多 Dota 粉絲滿意,緣由是:太多限制了。在截止 6 月的比賽中,遊戲裏玩家只能操控五個英雄、不能插眼、不能開霧、沒有 Roshan、不能隱身、禁止掃描等等……這還算是 Dota 嗎?
OpenAI 不是不想放開限制,而是 AI 須要學習的東西實在太多了,時間卻頗有限。
舉個例子,OpenAI 嚴格控制了英雄數量,若是你仔細觀察會發現大多都是 Dota2 的入門英雄,好比冰女、影魔、巫妖、巫醫等等。所以,在論壇或者微博裏你最常看到的一句評論就是:敢不敢讓 OpenAI 玩卡爾或者狗頭(地卜師)。
AI 能夠玩卡爾,但這須要大量的時間訓練。這和人實際上是同樣的,上手先玩入門英雄,熟練了再玩高級英雄(我到如今都玩不來卡爾),英雄難度越大,學習的時間越久。
因爲訓練中全部參數都是隨機的,AI 只能靠不斷的訓練中摸索出使用這些技能的方法,因此它並無真正理解這些技能。有些技能很直接,例如冰女的大招放出來就必定會有傷害;有些則相對複雜,好比煉金術士,它的二技能「不穩定化合物」是一把雙刃劍:5 秒內放出去能夠暈眩敵方英雄造出傷害,超過 5.5 秒就會傷害本身。
對 AI 而言這就是一個頭疼的問題:我究竟是放仍是不放?因而在很長時間的自我對抗中,AI 始終認爲煉金術士的二技能都沒什麼用。這和人是徹底不同的,沒有人會由於煉金術士的二技能傷血而不使用它。
Roshan 也是一樣的道理。打 Roshan 能夠拿到不死盾,三級 Roshan 還能拿到加滿 3000 滴血的奶酪,可是也會付出慘痛的代價,一不當心就死裏面了。因此 AI 很長時間都選擇不打 Roshan。
爲了解決這個問題,研究員選擇在訓練隨機設定 Roshan 的生命值,好比有些時候他只有 100 滴血,那麼 A.I, 就會選擇打掉 Roshan。經過這樣的訓練,現在的 AI 每次在通過 Roshan 的時候會選擇看同樣它的血量。
在今天的比賽裏,OpenAI 的英雄反覆看 Roshan 就是如此訓練的結果。
插眼則是一個至關有趣的「挑戰」。在很長一段時間裏,AI 常常亂插眼,或者沒事兒在基地裏插眼。研究員就不明白了,幹嗎老在基地裏插眼?!後來發現,每每在敵方單位推高地時(也就是第三座防護塔),AI 會作出這樣的選擇,給儲物櫃騰出地方買其餘裝備。
截止到今天,AI 依然會在一些莫名其妙的地方插眼:塔下,基底,甚至插不少眼。
幻象到如今依然是個限制,由於 OpenAI 想不出如何讓英雄控制幻象。Raiman 說,他們曾經嘗試過讓英雄出分身斧,但只有在防守高地或者防護塔時,英雄才會使用這個裝備,由於幻象能抵擋必定的傷害(陳怕是要很難出如今陣容裏了。)
因此在 6 月-8 月的時間裏,OpenAI 開始逐步地解決這些問題。同時,他們也宣佈了下一步計劃:在 8 月 5 日,邀請實力超過全世界 99.95% 玩家的(前)專業選手來對 AI bot 進行基準測試。
「即便最後咱們在 TI 表現很差,若是咱們能取得基準測試的成功,那一切也都是值得的,」Zhang 說。
基準測試,血虐人類
OpenAI 的辦公室位於舊金山的 Mission District,而離辦公室大約不到一英里的距離有一家酒吧叫作 Folsom Street Foundry,在當地頗受好評。酒吧內有一個偌大的會場,能容納 300-400 人,用來承辦一些活動,例如音樂會、派對等等。
OpenAI Five 首次公開和人類頂尖玩家進行 5v5 的對決,就選在了 Folsom Street Foundry。8 月 5 日,週日,中午 12 點,酒吧內已經人滿爲患。會場裏的高腳凳和吧檯已經被撤去,換上了連排的座椅。舞臺中央擺着五臺座機電腦,旁邊還有專業的解說臺。OpenAI 包括創始人 Ilya Sutskever、CTO Brockman 等幾十位研究員所有出動,來見證這一歷史時刻。
當天,OpenAI Five 舉辦了四場比賽:一場和觀衆的表演賽,和三場與頂尖選手的基準比賽。若 OpenAI 獲勝,則意味着項目完成了階段性的目標。
本場比賽也開放了諸多環境限制,好比加入了戰爭迷霧、能夠插眼、能夠打 Roshan、能夠互相選英雄、英雄數量也從 5 個擴展到 18 個。
賽前,人類戰隊中的現役職業選手、現世界排名 104 的 MoonMeander 在 Twitter 上立了 Flag:「從未輸給過 bot,此次也不會」。這次和 MoonMeander 一同上場的還有 OpenAI 的老朋友 Blitz、Capitalist、Fogged 和 Merlini,他們還煞有其事地穿着寫有「human」的統一隊服,在舞臺中央比賽。
這五我的是什麼水平呢?他們起了個隊名,叫「99.95th-percentile」,意思是他們比全世界 99.95% 的玩家都要強,全世界前 15000 人的水平,大約對應「超凡入聖 5」(Divine5),也就是過去天梯的 6000 分以上。
但即使如此,當天現場的觀衆在賽前並不看好人類玩家。現場接受採訪的至少 10 我的裏,超過 3/4 的人認爲 AI 會勝利。「我情感上支持人類,但我不以爲他們有機會能獲勝,」一位現場觀衆如是說道。
結果,也確實如此。
通常來講,即便是一邊倒的比賽,30 分鐘的比賽時長也是能保證的。然而,AI 獲勝的三場比賽,獲勝時間分別是 13 分鐘(和觀衆),21 分鐘,和 25 分鐘。
第一場比賽,人類爲夜魘方:小牛、瘟疫法師、冰女、剃刀、影魔;OpenAI Five 爲天輝方:巫妖、飛機、火槍、DP、萊恩。
在第一場比賽裏,人類玩家彷佛很不適應 OpenAI 的,直到比賽第五分鐘纔有 Blitz 的影魔打下一血。OpenAI 的打法至關激進,從開場的 212 分路迅速轉爲 311 優點路帶線,隨後在比賽第 10 分鐘開始 411 集中推夜魘的劣勢路塔。這個時間通常都仍是對線期,人類方一直沒有組織起像樣的防護。比賽到了第 13 分鐘的時候,AI 的人頭優點已經達到 22:4 了。
後面的十分鐘裏,人類鮮有高光表現,除了影魔完成一次雙殺外,OpenAI 是壓着人類打,在第 21 分鐘破了兩路,又在高地以 0 換 4 的代價完成一波小團滅,人類打出 GG(Good game,表示投降),人頭比數 8:39。
第二場比賽,人類爲天輝方:小牛、影魔、巫醫、死亡先知與隱刺;OpenAI 爲夜魘方,祭出火槍、直升機、冰女、萊恩與巫妖。
選英雄階段就已經註定了人類的失利,當 Blitz 再次選擇影魔時,OpenAI 預測的勝率從 56% 驟然上升至 72%。人類在這一局明顯打出了更好的狀態,拿下一血以外,比分一直緊咬。但隨後的幾波團戰人類都損失慘重,到了 20 分鐘,OpenAI 開始集中優點推塔,一口氣把三路所有破了,祭出超級兵,人類打出 GG,12:41。
這一局比賽出現了許多有意思的情況:好比 OpenAI 方的冰女出了點金手,這向來是打野英雄或者是後期 carry 的裝備;AI 學會了暫停比賽,但不知道爲何要暫停;AI 很是鍾情於插眼和反眼,一樣它們也學會了開霧;在推掉兩路以後,人類通常就直接拆水晶外的最後兩座塔了,可是 AI 卻選擇所有撤退,而後將第三條路從第一座外塔開始拆……
因爲人類在 AI 面前毫無還手之力,OpenAI 也達成所願,因此第三場比賽成爲了一場娛樂賽,由現場觀衆和 Twitch 上的直播觀衆來爲 OpenAI Five 選擇英雄。結果,觀衆們很「賤」地選擇了四個近戰英雄(小魚人、隱刺、斧王、流浪)和一個沒什麼用的痛苦女王;人類方則選擇死亡先知、死靈法師、萊恩、巫妖、直升機。OpenAI Five 直接打出了 2.9% 的獲勝機率,且最後勝率掉到了 1% 如下。不過,AI 依然很頑強,比賽第 15 分鐘時,人頭比也不過 15:15 將將打平。
儘管比賽最後成了人類玩家的「挽尊賽」,35 分鐘以 48:22 結束戰鬥,但對 OpenAI 的研究員而言,這場娛樂賽卻帶來了很多值得研究的數據。好比,在被人類壓制的時候,AI 顯得無所適從,打不來逆風局了:小魚人滿場飛奔,流浪和斧王一直在無腦拆塔,人類推高地時,AI 五個英雄沒有一個在高地進行防守。
參加比賽的玩家和著名解說員 Capitalist 在和 Motherboard 的採訪中說,「機器人依靠自信的知識玩這個遊戲,它知道每一個人都在哪裏,它知道你擁有多少 [攻擊力]。它確切地知道它們在一條車道上的三個或四個英雄之間能夠形成多大的傷害,而且當你處於錯誤的位置時它會當即忽然爆發。它知道。並且我歷來沒有和相似的東西玩過,這看起來太神奇了。」
三場比賽結束後,CTO Brockman 發推特說:「OpenAI 的人工智能系統已經準備好在下月 TI8 上迎戰頂級職業選手了!」
勝利背後,埋藏巨大隱患
OpenAI 沒有想到的是,第三場的娛樂局,居然成爲今天失敗的前車可鑑。
事實上,基準測試後,研究員們的壓力更大了。基準測試的人類玩家水平在 6500K 左右,但進入 TI 的專業選手的水平都在 9000K 以上,在短短三週的時間將 AI 的實力大幅度提高,難度很大。
Raiman 還透露,第三場比賽實在太糟糕了,解決這場比賽出現的問題成爲了 OpenAI 的當務之急。
Zhang 則認爲留給他們的時間實在太少了。「咱們嘗試在 TI 上作出一些使人印象深入的事情,這固然會有一些壓力,主要仍是時間問題。你須要讓實驗有時間運行,給時間訓練,而後會在最後作出一些很酷的事情。咱們如今沒有那麼多時間啊!」
「還有一個問題,遊戲時間拖的越久,對 AI 越不利,由於要考慮的因素和變量太多了。」
這些在 TI 賽前兩週所說的話,在比賽中統統應驗了:面對逆風長局,AI 沒有任何辦法。
但不管如何,OpenAI 實現了在非完美的環境裏實現了複雜協做和長期遊戲操做,這已是巨大的突破了。儘管 OpenAI 並無自主開發出具備突破性的算法,但他們將現有的最前沿的算法和模型和算力相結合,讓一個智能體從什麼都不會、經過自我對抗和學習、發展出一套合理的行爲模式,這種方法在其餘的 AI 應用、機器人和遊戲裏都將可能被應用。
TI8 不是 OpenAI Five 的最後一站,他們還會舉辦最後一場比賽,時間未定,預計在 10-11 月,甚至有可能在明年年初。屆時,OpenAI 但願能夠開放英雄池裏全部的英雄,放開全部限制,讓 AI 和人類玩家真正打一局酣暢淋漓的 Dota 2 比賽。
從如今來看,OpenAI 的 Dota 之旅,還遠遠沒有結束。
明天的第二場,人工智能會帶來怎樣的表現,咱們拭目以待。