去年,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 分級別戰隊。
有 AlphaGo 圍棋的「前車之鑑」,比賽之前,人們紛紛預測 OpanAI 的人工智慧穩贏。然而事實並沒有這麼簡單,雖然 OpenAI 的智慧體在操作反應等方面比較有優勢,當在整體策略與合作上仍比不上人類團隊。
TI8,開局不利
今天的人機大戰僅進行一場,比賽雙方陣容如下:
OpenAI 天輝方:直升機、巫妖、死亡先知、冰女、潮汐
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 帶領。
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 6.67C
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
他們將 Kiting 裡的策略放到了 Dota 2 的 1v1 模式中,同樣收到了效果。Bot 開始學會補兵、學會卡兵、能使用各種技能了。這給予了 OpenAI 極大的信心:只要使用同樣的演算法,然後加碼計算能力,或許有一天,我們能做出 5v5 的 AI。
Jonas Schneider 回憶說,直到 2017 年的 4、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 上所有的正式比賽。多數人振奮,驚喜,難以置信,也有人懷疑和不甘心,五味雜陳。
OpenAI 的谷歌搜尋趨勢
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 就不會出去升經驗了。」
Susan Zhang
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 就是如此訓練的結果。
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」的統一隊服,在舞臺中央比賽。
Merlini(左)、Blitz(中間)和 MoonMeander(右)
這五個人是什麼水平呢?他們起了個隊名,叫「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。
人類打出 GG
第二場比賽,人類為天輝方:小牛、影魔、巫醫、死亡先知與隱刺;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 五個英雄沒有一個在高地進行防守。
高地無 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 之旅,還遠遠沒有結束。
明天的第二場,人工智慧會帶來怎樣的表現,我們拭目以待。