姓名:吳慶愷 ? 學(xué)號:16020610024
轉(zhuǎn)載自:https://www.guokr.com/article/442356/ ?有刪節(jié)
【嵌牛導(dǎo)讀】:最近郎任,Google旗下的人工智能團隊,AlphaGo的親生父親Deepmind宣布和暴雪娛樂合作备籽,并放出了《星際爭霸2》的應(yīng)用程序接口(API)舶治,讓AI能夠在即時戰(zhàn)略游戲環(huán)境下進行機器學(xué)習(xí)分井。
【嵌牛鼻子】:跨界合作,分析處理游戲數(shù)據(jù)的代碼庫霉猛,Python 語言的解釋器尺锚。
【嵌牛提問】:ai的強大是福是禍,哲學(xué)的思考不能缺少惜浅。
【嵌牛正文】:
那么瘫辩,AI這就要進軍電子競技了嗎?還有坛悉,這個API到底是什么伐厌?我們能玩嗎?好玩嗎裸影?該怎么玩挣轨?
電腦游戲和人工智能的跨界合作
近年來,游戲開發(fā)巨頭暴雪娛樂一直和開源社區(qū)有著不解之緣空民,除了為一些開源軟件貢獻了代碼之外刃唐,暴雪的開發(fā)團隊先后公開了《魔獸世界》、《暗黑破壞神3》的游戲數(shù)據(jù)查詢API界轩,還開源了《風(fēng)暴英雄》和《星際爭霸2》的游戲回放處理編輯代碼庫。
2016年衔瓮,暴雪在嘉年華上承諾放出《星際爭霸2》的游戲API浊猾,而在第二年8月9日暴雪就實現(xiàn)了自己的諾言[1]。
圖片來源:暴雪娛樂
另一方面热鞍,人工智能團隊Deepmind從深度學(xué)習(xí)等人工智能研究的前沿領(lǐng)域著手葫慎,在訓(xùn)練AI玩Atari游戲機、走迷宮等項目之后薇宠,通過卓越的圍棋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)略游戲中玩家用鼠標點擊下達命令的每步可能性則將超過100000000種,還不包括不同的建筑順序隆箩、放置布局该贾、兵種搭配和科技樹順序等等。
而且摘仅,對于圍棋來說靶庙,全盤的信息是完整的,所有的推測可以根據(jù)盤面的情況來進行娃属。但在即時戰(zhàn)略游戲中六荒,由于有“戰(zhàn)爭迷霧”這種設(shè)定,玩家只能看到自己的部隊探索或占據(jù)的區(qū)域矾端,AI所能獲取到的信息是不完整的掏击。
所以對于未知領(lǐng)域的計算就更加困難了,于是Deepmind決定開發(fā)新的應(yīng)用程序接口來進行AI在即時戰(zhàn)略游戲上的應(yīng)用秩铆。
可以看到砚亭,這兩種游戲在玩家獲得的信息方面的不同。圖片來源:維基百科殴玛、《星際爭霸2》游戲截圖
這東西到底是什么捅膘?
這次的放出的接口,全稱叫“星際爭霸2機器學(xué)習(xí)環(huán)境”(StarCraft II Learning Environment滚粟,以下簡稱SC2LE)寻仗,它并不是一個玩家直接打開就能玩的Bot(游戲AI),而是一個讓程序員能用來“訓(xùn)練”人工智能的基礎(chǔ)環(huán)境凡壤。和非人工智能的程序不同署尤,人工智能程序并沒有硬編碼了“要怎么做”的代碼,必須通過機器學(xué)習(xí)的“訓(xùn)練”過程來找到最優(yōu)的解決方案亚侠。
作為一個更新穎也更具挑戰(zhàn)性的機器學(xué)習(xí)環(huán)境曹体,SC2LE由兩個部分組成:
一個是暴雪放出的《星際爭霸2》游戲API,讓計算機程序能夠從類似人類玩家一樣的視角硝烂,獲得當前游戲狀態(tài)的相關(guān)信息——AI能獲得的數(shù)據(jù)和信息和人類玩家是平等的箕别;
另一個是Deepmind放出的PySC2,它提供了一個分析處理游戲數(shù)據(jù)的代碼庫——可以告訴AI下一步要進行什么操作钢坦,是挖礦還是建造兵營究孕。此外,PySC2還能夠幫助程序員編寫的AI進行強化學(xué)習(xí)[3]爹凹。
SC2LE結(jié)構(gòu)圖:星際2客戶端本身(左側(cè)黑色)是核心厨诸,通過API和PySC2進行溝通,聯(lián)合成一個整體禾酱,玩家的AI(右側(cè)Agent)通過PySC2得到各種觀察結(jié)果和反饋微酬,然后做出具體的行動命令绘趋,以模擬人類操作的方式,輸入進PySC2里颗管,形成一個具體的游戲操作陷遮。圖片來源:Deepmind SC2LE介紹
這里的“強化學(xué)習(xí)”,是一種基于決策和交互的機器學(xué)習(xí)方式垦江。在“訓(xùn)練”過程中帽馋,程序針對當前需要解決的問題,建立一個模型比吭,然后基于當前環(huán)境給定的各種規(guī)則和條件作出決策绽族,并且通過探索各種可能性,根據(jù)獲得的反饋(可能是“獎勵”或“懲罰”衩藤,比如成功開了分礦吧慢,或者在戰(zhàn)斗中損失了一支部隊等等情況)來調(diào)整下一步?jīng)Q策,通過不斷的試錯和修正赏表,來尋求最優(yōu)的對策检诗。
通過這樣的方法,訓(xùn)練出來的AI能夠以模擬人類觀察和操作的方式來進行游戲瓢剿,而不是靠直接讀取游戲數(shù)據(jù)和APM碾壓的作弊辦法逢慌。是不是很有挑戰(zhàn)性?
普通玩家也能嘗試
這種高端的項目间狂,是不是只有程序員才能使用涕癣?
不,即使你不是程序員前标,也能玩這個東西!而且我可以負責(zé)任的告訴你距潘,這并不難炼列!
首先當然是通過暴雪游戲平臺,下載星際爭霸2音比。如果你已經(jīng)有了能進游戲的客戶端俭尖,那就不需要額外下載了。另外洞翩,免費版也可以運行AI程序稽犁。
其次是要準備好代碼運行所需的軟件環(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頁面上可以下載到 ,將其放進 Maps 文件夾里即可忽妒。
安裝好了最基本的SC2LE運行環(huán)境后玩裙,你就可以通過 python 命令激活一個新的AI開始游戲了!
來看看AI的實力吧段直!
在命令提示符輸入以下命令吃溅,就可以打開一場新游戲,看AI的行動了:
python -m pysc2.bin.agent --map Simple64
上面的命令是在一張簡單的1v1地圖上鸯檬,用一個隨機AI進行游戲决侈。如果你裝了上面的“迷你游戲”地圖包,還可以調(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),帶著一群探機(小綠圓)在采礦(藍圓)坎穿。右側(cè)則是各個分層數(shù)據(jù)展父,包括地形高度、當前視野玲昧、小地圖數(shù)據(jù)栖茉,當前窗口上的各個單位類型、血量孵延,已選中的單位數(shù)據(jù)等等吕漂。圖片來源:SC2LE程序界面
過了一會,顯然目前的實驗AI基本就是亂來:
建造順序和建筑擺放的方式可以說是十分混亂了隙袁。 圖片來源:SC2LE程序界面
根據(jù)deepmind的資料顯示痰娱,目前各家訓(xùn)練開發(fā)出來的AI(PySC2中附帶了好幾個不同的范例)在完成采礦弃榨、控制單位移動、造兵等基礎(chǔ)操作方面沒有太大的問題梨睁,但在整個游戲上還很難和暴雪內(nèi)置的簡單敵人抗衡鲸睛。大部分的AI能做到的都只是機械的隨機重復(fù)已有的行為而已∑潞兀看來要玩的好官辈,這門檻也還不低啊,想要“做一個AI打敗電競高手賺錢”還是挺任重道遠的遍坟。
目前拳亿,表現(xiàn)優(yōu)秀的是加拿大紐芬蘭紀念大學(xué)計算機科學(xué)系助理教授大衛(wèi)·丘吉爾(David Churchill)開發(fā)的AI:CommandCenter,它雖然只會一種固定套路愿伴,但已經(jīng)幾乎能打敗暴雪內(nèi)置的簡單電腦敵人了[6]肺魁。
你現(xiàn)在下載這個軟件,也可以在你電腦上模擬一場:
這盤隔节,被CommandCenter殺光農(nóng)民的電腦敵人打出了gg鹅经。 圖片來源:星際爭霸2AI運行截圖
大衛(wèi)·丘吉爾表示,接下來他將讓這個AI學(xué)會建造附屬建筑怎诫、適時升級相應(yīng)的科技瘾晃,未來還會嘗試讓AI能對戰(zhàn)斗情況進行預(yù)判,以及在主動進攻幻妓、積極防御蹦误、游擊騷擾等策略中靈活選擇。
最后肉津,Deepmind和暴雪在SC2LE的發(fā)布說明中表示强胰,希望通過這次開源的代碼和范例,能給廣大星際玩家和自制AI愛好者提供更多的便利妹沙,更好地發(fā)揮出創(chuàng)造力哪廓,也希望能給人工智能領(lǐng)域的研究者一個更強有力的研究工具,以便推進未來人工智能技術(shù)的發(fā)展和進步初烘。或許在不久以后分俯,我們就能看到星際爭霸AI版的《機器人大戰(zhàn)》節(jié)目了吧肾筐?
在《機器人大戰(zhàn)》這個暴露年齡的節(jié)目中,參賽者用自己制造的機器人下場決斗缸剪,把對方摧毀的一方獲勝吗铐。圖片來源: Battlebots.com
無獨有偶,8月12日早上杏节,特斯拉老板伊隆·馬斯克(Elon Musk)旗下的人工智能OpenAI在Dota2的1v1比賽中唬渗,以三戰(zhàn)兩勝的成績首次擊敗了人類職業(yè)選手Dendi典阵。
被AI單殺的Dendi小哥。圖片來源:Dota2比賽視頻
據(jù)OpenAI團隊介紹镊逝,他們的AI并不是靠微操數(shù)量取勝壮啊,他們的AI通過自己和自己比賽的機器學(xué)習(xí)方式,花了兩周時間達到了目前的水平撑蒜。
不過歹啼,雖然這個AI看起來比星際2的AI厲害了許多,但這種控制單一英雄座菠、中路對單的Dota 2里狸眼,AI需要處理的信息和進行的操作都比完整的星際2對戰(zhàn)簡單很多,表現(xiàn)良好也算是情理之中浴滴。
在此之前拓萌,這個AI也打敗過SumaiL、Arteezy等職業(yè)選手升略。不過OpenAI CTO Greg Brockman表示微王,1V1的勝利并不是他們的最終目的,OpenAI希望能在2018年的國際邀請賽上與職業(yè)選手進行5V5的比賽降宅。說不定到時候的全明星賽將會是一場新紀元的人機大戰(zhàn)骂远!