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

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

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

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

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

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

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

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

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

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

圖片來源:暴雪娛樂

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

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

不,并不能。

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

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

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

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

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

這東西到底是什么?

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

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

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

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

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

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

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

普通玩家也能嘗試

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

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

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

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

接下來,我們先看暴雪放出的代碼[4]:

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

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

然后,你需要從 Deepmind 的開源頁面上安裝PySC2模塊[5]。

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

pip install pysc2

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

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

來看看AI的實力吧!

在命令提示符輸入以下命令,就可以打開一場新游戲,看AI的行動了:

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

上面的命令是在一張簡單的1v1地圖上,用一個隨機(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

游戲效果如下:

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

動圖閃太快看不清?讓我們開一局新的完整游戲看看:

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

過了一會,顯然目前的實驗AI基本就是亂來:

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

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

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

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

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

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

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

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

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

被AI單殺的Dendi小哥。圖片來源:Dota2比賽視頻

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容