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