人工智能轉(zhuǎn)戰(zhàn)電競(jìng)!《星際2》人機(jī)大戰(zhàn)要出現(xiàn)了嗎?

姓名:吳慶愷 ? 學(xué)號(hào):16020610024

轉(zhuǎn)載自:https://www.guokr.com/article/442356/ ?有刪節(jié)

【嵌牛導(dǎo)讀】:最近,Google旗下的人工智能團(tuán)隊(duì),AlphaGo的親生父親Deepmind宣布和暴雪娛樂(lè)合作,并放出了《星際爭(zhēng)霸2》的應(yīng)用程序接口(API),讓AI能夠在即時(shí)戰(zhàn)略游戲環(huán)境下進(jìn)行機(jī)器學(xué)習(xí)。

【嵌牛鼻子】:跨界合作,分析處理游戲數(shù)據(jù)的代碼庫(kù),Python 語(yǔ)言的解釋器。

【嵌牛提問(wèn)】:ai的強(qiáng)大是福是禍,哲學(xué)的思考不能缺少。

【嵌牛正文】:
那么,AI這就要進(jìn)軍電子競(jìng)技了嗎?還有,這個(gè)API到底是什么?我們能玩嗎?好玩嗎?該怎么玩?

電腦游戲和人工智能的跨界合作

近年來(lái),游戲開(kāi)發(fā)巨頭暴雪娛樂(lè)一直和開(kāi)源社區(qū)有著不解之緣,除了為一些開(kāi)源軟件貢獻(xiàn)了代碼之外,暴雪的開(kāi)發(fā)團(tuán)隊(duì)先后公開(kāi)了《魔獸世界》、《暗黑破壞神3》的游戲數(shù)據(jù)查詢(xún)API,還開(kāi)源了《風(fēng)暴英雄》和《星際爭(zhēng)霸2》的游戲回放處理編輯代碼庫(kù)。

2016年,暴雪在嘉年華上承諾放出《星際爭(zhēng)霸2》的游戲API,而在第二年8月9日暴雪就實(shí)現(xiàn)了自己的諾言[1]。

圖片來(lái)源:暴雪娛樂(lè)

另一方面,人工智能團(tuán)隊(duì)Deepmind從深度學(xué)習(xí)等人工智能研究的前沿領(lǐng)域著手,在訓(xùn)練AI玩Atari游戲機(jī)、走迷宮等項(xiàng)目之后,通過(guò)卓越的圍棋AI“AlphaGo”連續(xù)擊敗多名世界圍棋頂級(jí)高手,一鳴驚人。此后,DeepMind官方就表示將研究方向轉(zhuǎn)向即時(shí)戰(zhàn)略游戲,而首選的就是《星際爭(zhēng)霸2》[2]。

能讓AlphaGo去學(xué)打星際嗎?

不,并不能。

按圍棋規(guī)則訓(xùn)練出來(lái)的AlphaGo很難應(yīng)對(duì)《星際爭(zhēng)霸2》這類(lèi)即時(shí)戰(zhàn)略游戲。

首先,在《星際爭(zhēng)霸2》中,玩家既要擁有快速的戰(zhàn)術(shù)微操能力,還要有足夠高的戰(zhàn)略規(guī)劃水平。如果說(shuō)圍棋每步的可能性有19?19=361種,那在即時(shí)戰(zhàn)略游戲中玩家用鼠標(biāo)點(diǎn)擊下達(dá)命令的每步可能性則將超過(guò)100000000種,還不包括不同的建筑順序、放置布局、兵種搭配和科技樹(shù)順序等等。

而且,對(duì)于圍棋來(lái)說(shuō),全盤(pán)的信息是完整的,所有的推測(cè)可以根據(jù)盤(pán)面的情況來(lái)進(jìn)行。但在即時(shí)戰(zhàn)略游戲中,由于有“戰(zhàn)爭(zhēng)迷霧”這種設(shè)定,玩家只能看到自己的部隊(duì)探索或占據(jù)的區(qū)域,AI所能獲取到的信息是不完整的。

所以對(duì)于未知領(lǐng)域的計(jì)算就更加困難了,于是Deepmind決定開(kāi)發(fā)新的應(yīng)用程序接口來(lái)進(jìn)行AI在即時(shí)戰(zhàn)略游戲上的應(yīng)用。

可以看到,這兩種游戲在玩家獲得的信息方面的不同。圖片來(lái)源:維基百科、《星際爭(zhēng)霸2》游戲截圖

這東西到底是什么?

這次的放出的接口,全稱(chēng)叫“星際爭(zhēng)霸2機(jī)器學(xué)習(xí)環(huán)境”(StarCraft II Learning Environment,以下簡(jiǎn)稱(chēng)SC2LE),它并不是一個(gè)玩家直接打開(kāi)就能玩的Bot(游戲AI),而是一個(gè)讓程序員能用來(lái)“訓(xùn)練”人工智能的基礎(chǔ)環(huán)境。和非人工智能的程序不同,人工智能程序并沒(méi)有硬編碼了“要怎么做”的代碼,必須通過(guò)機(jī)器學(xué)習(xí)的“訓(xùn)練”過(guò)程來(lái)找到最優(yōu)的解決方案。

作為一個(gè)更新穎也更具挑戰(zhàn)性的機(jī)器學(xué)習(xí)環(huán)境,SC2LE由兩個(gè)部分組成:

一個(gè)是暴雪放出的《星際爭(zhēng)霸2》游戲API,讓計(jì)算機(jī)程序能夠從類(lèi)似人類(lèi)玩家一樣的視角,獲得當(dāng)前游戲狀態(tài)的相關(guān)信息——AI能獲得的數(shù)據(jù)和信息和人類(lèi)玩家是平等的;

另一個(gè)是Deepmind放出的PySC2,它提供了一個(gè)分析處理游戲數(shù)據(jù)的代碼庫(kù)——可以告訴AI下一步要進(jìn)行什么操作,是挖礦還是建造兵營(yíng)。此外,PySC2還能夠幫助程序員編寫(xiě)的AI進(jìn)行強(qiáng)化學(xué)習(xí)[3]。

SC2LE結(jié)構(gòu)圖:星際2客戶(hù)端本身(左側(cè)黑色)是核心,通過(guò)API和PySC2進(jìn)行溝通,聯(lián)合成一個(gè)整體,玩家的AI(右側(cè)Agent)通過(guò)PySC2得到各種觀察結(jié)果和反饋,然后做出具體的行動(dòng)命令,以模擬人類(lèi)操作的方式,輸入進(jìn)PySC2里,形成一個(gè)具體的游戲操作。圖片來(lái)源:Deepmind SC2LE介紹

這里的“強(qiáng)化學(xué)習(xí)”,是一種基于決策和交互的機(jī)器學(xué)習(xí)方式。在“訓(xùn)練”過(guò)程中,程序針對(duì)當(dāng)前需要解決的問(wèn)題,建立一個(gè)模型,然后基于當(dāng)前環(huán)境給定的各種規(guī)則和條件作出決策,并且通過(guò)探索各種可能性,根據(jù)獲得的反饋(可能是“獎(jiǎng)勵(lì)”或“懲罰”,比如成功開(kāi)了分礦,或者在戰(zhàn)斗中損失了一支部隊(duì)等等情況)來(lái)調(diào)整下一步?jīng)Q策,通過(guò)不斷的試錯(cuò)和修正,來(lái)尋求最優(yōu)的對(duì)策。

通過(guò)這樣的方法,訓(xùn)練出來(lái)的AI能夠以模擬人類(lèi)觀察和操作的方式來(lái)進(jìn)行游戲,而不是靠直接讀取游戲數(shù)據(jù)和APM碾壓的作弊辦法。是不是很有挑戰(zhàn)性?

普通玩家也能?chē)L試

這種高端的項(xiàng)目,是不是只有程序員才能使用?

不,即使你不是程序員,也能玩這個(gè)東西!而且我可以負(fù)責(zé)任的告訴你,這并不難!

首先當(dāng)然是通過(guò)暴雪游戲平臺(tái),下載星際爭(zhēng)霸2。如果你已經(jīng)有了能進(jìn)游戲的客戶(hù)端,那就不需要額外下載了。另外,免費(fèi)版也可以運(yùn)行AI程序。

其次是要準(zhǔn)備好代碼運(yùn)行所需的軟件環(huán)境,也就是 Python 語(yǔ)言的解釋器。這可以在 Python 開(kāi)源項(xiàng)目的官方網(wǎng)站上下載:www.python.org

接下來(lái),我們先看暴雪放出的代碼[4]:

在下載區(qū),前三個(gè)是API的編程說(shuō)明書(shū)、C++的代碼庫(kù)和Linux版的《星際爭(zhēng)霸2》AI用客戶(hù)端——不是程序員的你可以安全的忽略它們。第四個(gè)是地圖包,第五個(gè)是65000個(gè)游戲回放數(shù)據(jù)。如果只是想看看AI怎么玩,并不打算實(shí)際調(diào)教一個(gè)AI的話(huà),你只需要下載幾個(gè)地圖包即可。下載后解壓壓縮包里的東西到星際爭(zhēng)霸2的 StarCraft II/Maps 文件夾里,解壓密碼是 iagreetotheeula 。

解壓完之后,你的 StarCraft II 文件夾里應(yīng)該有這些子文件夾:

然后,你需要從 Deepmind 的開(kāi)源頁(yè)面上安裝PySC2模塊[5]。

如果你已經(jīng)裝好了 Python 環(huán)境,只需要在系統(tǒng)的“命令提示符”里輸入以下命令就可以在聯(lián)網(wǎng)狀態(tài)下一鍵自動(dòng)完成安裝了:

pip install pysc2

最后, PySC2 還提供了一套測(cè)試基本AI學(xué)習(xí)功能的“迷你游戲”的地圖包,在Deepmind的github頁(yè)面上可以下載到 ,將其放進(jìn) Maps 文件夾里即可。

安裝好了最基本的SC2LE運(yùn)行環(huán)境后,你就可以通過(guò) python 命令激活一個(gè)新的AI開(kāi)始游戲了!

來(lái)看看AI的實(shí)力吧!

在命令提示符輸入以下命令,就可以打開(kāi)一場(chǎng)新游戲,看AI的行動(dòng)了:

python -m pysc2.bin.agent --map Simple64

上面的命令是在一張簡(jiǎn)單的1v1地圖上,用一個(gè)隨機(jī)AI進(jìn)行游戲。如果你裝了上面的“迷你游戲”地圖包,還可以調(diào)用 Deepmind 已經(jīng)調(diào)教好的范例AI玩收集資源的小游戲:

python -m pysc2.bin.agent --map CollectMineralShards --agent pysc2.agents.scripted_agent.CollectMineralShards

游戲效果如下:

背景是游戲畫(huà)面,而中間我切出來(lái)的那個(gè)窗口則是PySC2本身的AI工作窗口,里面顯示了從AI的角度所看到的游戲數(shù)據(jù)是什么樣的。

動(dòng)圖閃太快看不清?讓我們開(kāi)一局新的完整游戲看看:

上圖左邊是經(jīng)過(guò)簡(jiǎn)化的游戲圖像,可以看到中間(大綠圓)是星靈的樞紐(Nexus),帶著一群探機(jī)(小綠圓)在采礦(藍(lán)圓)。右側(cè)則是各個(gè)分層數(shù)據(jù),包括地形高度、當(dāng)前視野、小地圖數(shù)據(jù),當(dāng)前窗口上的各個(gè)單位類(lèi)型、血量,已選中的單位數(shù)據(jù)等等。圖片來(lái)源:SC2LE程序界面

過(guò)了一會(huì),顯然目前的實(shí)驗(yàn)AI基本就是亂來(lái):

建造順序和建筑擺放的方式可以說(shuō)是十分混亂了。 圖片來(lái)源:SC2LE程序界面

根據(jù)deepmind的資料顯示,目前各家訓(xùn)練開(kāi)發(fā)出來(lái)的AI(PySC2中附帶了好幾個(gè)不同的范例)在完成采礦、控制單位移動(dòng)、造兵等基礎(chǔ)操作方面沒(méi)有太大的問(wèn)題,但在整個(gè)游戲上還很難和暴雪內(nèi)置的簡(jiǎn)單敵人抗衡。大部分的AI能做到的都只是機(jī)械的隨機(jī)重復(fù)已有的行為而已。看來(lái)要玩的好,這門(mén)檻也還不低啊,想要“做一個(gè)AI打敗電競(jìng)高手賺錢(qián)”還是挺任重道遠(yuǎn)的。

目前,表現(xiàn)優(yōu)秀的是加拿大紐芬蘭紀(jì)念大學(xué)計(jì)算機(jī)科學(xué)系助理教授大衛(wèi)·丘吉爾(David Churchill)開(kāi)發(fā)的AI:CommandCenter,它雖然只會(huì)一種固定套路,但已經(jīng)幾乎能打敗暴雪內(nèi)置的簡(jiǎn)單電腦敵人了[6]。

你現(xiàn)在下載這個(gè)軟件,也可以在你電腦上模擬一場(chǎng):

這盤(pán),被CommandCenter殺光農(nóng)民的電腦敵人打出了gg。 圖片來(lái)源:星際爭(zhēng)霸2AI運(yùn)行截圖

大衛(wèi)·丘吉爾表示,接下來(lái)他將讓這個(gè)AI學(xué)會(huì)建造附屬建筑、適時(shí)升級(jí)相應(yīng)的科技,未來(lái)還會(huì)嘗試讓AI能對(duì)戰(zhàn)斗情況進(jìn)行預(yù)判,以及在主動(dòng)進(jìn)攻、積極防御、游擊騷擾等策略中靈活選擇。

最后,Deepmind和暴雪在SC2LE的發(fā)布說(shuō)明中表示,希望通過(guò)這次開(kāi)源的代碼和范例,能給廣大星際玩家和自制AI愛(ài)好者提供更多的便利,更好地發(fā)揮出創(chuàng)造力,也希望能給人工智能領(lǐng)域的研究者一個(gè)更強(qiáng)有力的研究工具,以便推進(jìn)未來(lái)人工智能技術(shù)的發(fā)展和進(jìn)步。或許在不久以后,我們就能看到星際爭(zhēng)霸AI版的《機(jī)器人大戰(zhàn)》節(jié)目了吧?

在《機(jī)器人大戰(zhàn)》這個(gè)暴露年齡的節(jié)目中,參賽者用自己制造的機(jī)器人下場(chǎng)決斗,把對(duì)方摧毀的一方獲勝。圖片來(lái)源: Battlebots.com

無(wú)獨(dú)有偶,8月12日早上,特斯拉老板伊隆·馬斯克(Elon Musk)旗下的人工智能OpenAI在Dota2的1v1比賽中,以三戰(zhàn)兩勝的成績(jī)首次擊敗了人類(lèi)職業(yè)選手Dendi。

被AI單殺的Dendi小哥。圖片來(lái)源:Dota2比賽視頻

據(jù)OpenAI團(tuán)隊(duì)介紹,他們的AI并不是靠微操數(shù)量取勝,他們的AI通過(guò)自己和自己比賽的機(jī)器學(xué)習(xí)方式,花了兩周時(shí)間達(dá)到了目前的水平。

不過(guò),雖然這個(gè)AI看起來(lái)比星際2的AI厲害了許多,但這種控制單一英雄、中路對(duì)單的Dota 2里,AI需要處理的信息和進(jìn)行的操作都比完整的星際2對(duì)戰(zhàn)簡(jiǎn)單很多,表現(xiàn)良好也算是情理之中。

在此之前,這個(gè)AI也打敗過(guò)SumaiL、Arteezy等職業(yè)選手。不過(guò)OpenAI CTO Greg Brockman表示,1V1的勝利并不是他們的最終目的,OpenAI希望能在2018年的國(guó)際邀請(qǐng)賽上與職業(yè)選手進(jìn)行5V5的比賽。說(shuō)不定到時(shí)候的全明星賽將會(huì)是一場(chǎng)新紀(jì)元的人機(jī)大戰(zhàn)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容