技術(shù)
導(dǎo)讀:讓智能體發(fā)現(xiàn)能帶來好的游戲表現(xiàn)的重要機(jī)制、重要規(guī)則,不僅可以教人類玩游戲,也可以用來讓 AI 獲得更好的游戲表現(xiàn)。
圖片來自“Unsplash”
今天我們來談和電腦游戲相關(guān)的一個(gè)新 AI。
對(duì)許多游戲癮不那么大、不那么熟悉游戲中的套路的人來說,上手一個(gè)新游戲的過程可能是惴惴不安的、容易暈頭轉(zhuǎn)向的,一旦碰到玩法變化比較大的游戲,就會(huì)說不準(zhǔn)游戲中有哪些重要的規(guī)則,也不知道自己是否注意到了所有有用的信息。
一則聽起來令人欣慰的消息是,AI 也是這樣的?;谏疃葟?qiáng)化學(xué)習(xí)的智能體在游戲中探索學(xué)習(xí)的時(shí)候,同樣是沒有目的、沒有章法地「瞎操作」、「胡亂試」;有時(shí)候?qū)W到了一些游戲的章法,就能得到更高的成績(jī);也有時(shí)候智能體甚至學(xué)會(huì)的是如何利用游戲中的 bug 來刷分,但它也總是沒辦法再描述出來它學(xué)到的東西是什么。
在紐約大學(xué)的一篇新論文《Automatic Critical Mechanic Discovery in Video Games》(在電腦游戲中自動(dòng)尋找關(guān)鍵游戲機(jī)制,arxiv.org/abs/1909.03094)中,作者們?cè)谶@方面帶來一個(gè)小突破。它針對(duì)的問題就是,讓智能體發(fā)現(xiàn)能帶來好的游戲表現(xiàn)的重要機(jī)制、重要規(guī)則,不僅可以教人類玩游戲,也可以用來讓 AI 獲得更好的游戲表現(xiàn)。
怎么讓 AI 理解游戲
對(duì)人類來說,玩電子游戲這樣的復(fù)雜任務(wù)總可以拆分成一系列不同的小任務(wù),每個(gè)小任務(wù)就有各自的明確的目標(biāo)。比如要進(jìn)入某個(gè)房間,就可以拆分成找到鑰匙、挪開門口的障礙物、來到門口、打開門幾個(gè)步驟。這種把一個(gè)任務(wù)拆分成多個(gè)小任務(wù)的方式既是人類的本能和常識(shí),也是運(yùn)動(dòng)規(guī)劃論文、強(qiáng)化學(xué)習(xí)論文中常常用到的解決問題思路。(OpenAI 的這項(xiàng)層級(jí)強(qiáng)化學(xué)習(xí)研究就是一個(gè)例子。)在玩游戲的過程中,玩家們需要一面探索猜測(cè),發(fā)現(xiàn)游戲中有用的機(jī)制,一面利用這些機(jī)制幫助自己達(dá)到目標(biāo)。而對(duì)這種模式不熟練的玩家,就可以讓教學(xué) AI 來幫幫忙;玩游戲的 AI 更可以利用這些信息獲得更好的表現(xiàn)。
在《Automatic Critical Mechanic Discovery in Video Games》這篇論文中,作者們?cè)O(shè)計(jì)了一個(gè)能夠自動(dòng)發(fā)現(xiàn)「關(guān)鍵游戲機(jī)制」的系統(tǒng)。它基于 GVGAI (General Video Game Artificial Intelligence,通用電子游戲 AI)框架,能夠從游戲讀取 VGDL,同時(shí)也讀取游戲中的進(jìn)度(來自人類玩家或者智能體玩的過程)。
注:GVGAI 框架是一個(gè)為了研究 AI 系統(tǒng)在游戲中的表現(xiàn)而設(shè)計(jì)的通用開發(fā)和實(shí)驗(yàn)框架,其中的游戲通過 VGDL 語言(Video Game Description Language)描述。這種語言簡(jiǎn)單、緊湊,可以被人類讀懂,但同時(shí)也具有足夠的表達(dá)能力,可以用來創(chuàng)建各種簡(jiǎn)單的 2D 游戲。GVGAI 框架中有的游戲是吃豆人(Pacman)、推箱子(Sokoban)之類的經(jīng)典游戲的重現(xiàn),也有一些是全新設(shè)計(jì)的游戲。用 VGDL 語言編寫游戲也不難,只需要描述游戲中元素的行為、元素之間觸碰時(shí)會(huì)發(fā)生什么,以及如何判定游戲的輸贏。)
記錄游戲進(jìn)度的是為了追蹤游戲中所有的不同機(jī)制都是什么時(shí)候被觸發(fā)的。這個(gè)系統(tǒng)會(huì)記下每種機(jī)制首次出現(xiàn)的狀況,記錄精度達(dá)到首次在屏幕上渲染出現(xiàn)時(shí)是第幾幀。利用描述游戲的 VGDL 語言信息以及一系列玩游戲時(shí)記錄下的游戲進(jìn)度,這個(gè)系統(tǒng)會(huì)嘗試建立當(dāng)前游戲的游戲機(jī)制信息網(wǎng),也就是它對(duì)這個(gè)游戲中的各種機(jī)制和依賴的理解。這個(gè)過程利用了曾經(jīng)在 AtDelfi 中用到的解析器,它能把 VGDL 語言代碼轉(zhuǎn)換成游戲中的實(shí)體、條件、事件等組成的圖。
在建立完成包含了游戲中所有可能出現(xiàn)的狀態(tài)的圖后,系統(tǒng)可以在這個(gè)圖中插入一些游戲進(jìn)度,并以此為條件進(jìn)行搜索,嘗試找到從這個(gè)點(diǎn)出發(fā)、且能達(dá)到游戲勝利的最佳路徑 —— 這條路徑的實(shí)質(zhì)就是描述了要依次觸發(fā)哪些游戲機(jī)制才能達(dá)到最終的勝利狀態(tài),作者們把它稱為「關(guān)鍵鏈條」。
針對(duì)「關(guān)鍵鏈條」的搜索,作者們提出了兩條條件:1,包含的圖中的獨(dú)特機(jī)制最少;2,結(jié)果必須是玩家贏得了游戲的。根據(jù)這樣的條件,它找到的關(guān)鍵鏈條就純粹是贏得游戲所必須觸發(fā)的機(jī)制,而且這樣也降低了關(guān)鍵鏈條中的噪聲(在后面我們會(huì)再次說到這一點(diǎn))。這樣我們就找到了如何幫忙、教學(xué)人類玩家(而且借助 VGDL 語言,還是人類可以理解的表達(dá)形式),以及針對(duì)哪些點(diǎn)來加強(qiáng)玩游戲的 AI 的表現(xiàn)。
系統(tǒng)驗(yàn)證
如何驗(yàn)證這個(gè)系統(tǒng)呢,作者們采用了兩種不同的方法,一種需要人類參與,一種需要?jiǎng)e的 AI 參與。
在需要人類參與的方法里,他們把系統(tǒng)識(shí)別出的關(guān)鍵機(jī)制和人類玩過游戲之后認(rèn)為的關(guān)鍵機(jī)制進(jìn)行對(duì)比,發(fā)現(xiàn)系統(tǒng)認(rèn)為關(guān)鍵的機(jī)制確實(shí)大多數(shù)都和人類給出的是相符的。在這方面,人類的意見肯定是一個(gè)好的參考標(biāo)準(zhǔn),這已經(jīng)能夠說明系統(tǒng)的有效性。不過也有一些有趣的差異,很多時(shí)候人類還會(huì)給出很多起到「避免失敗」作用的關(guān)鍵機(jī)制,比如「躲開 xxx」,以及提出可以起到幫助、帶來更多策略選擇靈活性的機(jī)制;而這個(gè)系統(tǒng)就不會(huì)提出這些,因?yàn)樗鼈儾皇恰岗A得游戲的最短關(guān)鍵鏈條」里必須包含的,有點(diǎn)像是支線任務(wù)的味道,不做也是可以取得勝利的。
在 AI 參與的測(cè)試中可以采用更容易量化的方法,那就是如果利用了系統(tǒng)找到的關(guān)鍵機(jī)制,游戲 AI 應(yīng)該能夠獲得更好的表現(xiàn)。作者們修改了 GVGAI 框架中提供的基準(zhǔn)線 MCTS (蒙特卡洛樹搜索)智能體,在原有的默認(rèn)反饋基礎(chǔ)上增加了一些和關(guān)鍵機(jī)制信息相關(guān)的反饋;也就是說,如今它們按順序觸發(fā)的關(guān)鍵機(jī)制越多,在訓(xùn)練過程中能得到的反饋也就越高。
不難想到,帶有這些關(guān)鍵機(jī)制信息的 MCTS 智能體在測(cè)試的四個(gè)游戲中得到了巨大的表現(xiàn)提升(都取得了更高的游戲分?jǐn)?shù),也提升了其中三個(gè)游戲的勝率;對(duì)于那個(gè)勝率沒能提高的游戲,作者們認(rèn)為是游戲的復(fù)雜度比較高),這也再次說明了系統(tǒng)找到的關(guān)鍵游戲機(jī)制的正確性;同時(shí)也我們也可以認(rèn)為這種機(jī)制增強(qiáng)了智能體按順序執(zhí)行一系列動(dòng)作的能力,而這種序列執(zhí)行的能力也是非常重要的。
研究前景
這項(xiàng)發(fā)掘關(guān)鍵游戲機(jī)制的研究,來源于為游戲設(shè)計(jì)教學(xué)內(nèi)容。教學(xué)內(nèi)容的形式包括文字提示、游戲中的 NPC 演示,以及整個(gè)的、難度逐漸遞進(jìn)的教學(xué)關(guān)卡。目前的教學(xué)內(nèi)容設(shè)計(jì)以人工設(shè)計(jì)為主,它們主要展示游戲中的重要特性;而自動(dòng)設(shè)計(jì)方法既不成熟,此前也沒有自動(dòng)設(shè)計(jì)方法能夠關(guān)注并總結(jié)出游戲中最重要的游戲機(jī)制,幫助玩家在游戲中發(fā)揮得更好、更快取得勝利。這項(xiàng)研究就可以完成這個(gè)任務(wù),可以幫助設(shè)計(jì)更強(qiáng)的游戲 AI,以及作者們還提出可以用來幫助檢測(cè)游戲中的 bug(如果已經(jīng)發(fā)現(xiàn)并利用了游戲中的關(guān)鍵機(jī)制的游戲 AI 還是無法取得好的成績(jī)的話,那游戲開發(fā)者可能還需要對(duì)游戲做一定的修改)。
作者們也提出,他們的系統(tǒng)進(jìn)行拓展之后可以在更復(fù)雜的游戲中捕捉更宏觀的動(dòng)作,以及允許玩家定義自己的目標(biāo),同樣也能夠生成關(guān)鍵機(jī)制的指導(dǎo)。
另外,GVGAI 是一個(gè)強(qiáng)大完善的電腦游戲 AI 測(cè)試與開發(fā)框架,也有年度的比賽,可以到 http://gvgai.net/ 了解更多。