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