用GPT生成《超級馬里奧》遊戲關卡,近9成關卡可玩

編輯:趙陽、張倩

AIGC 正在變革遊戲產業。

最近一年來,生成式 AI 在繪畫、文字、程式碼等創作領域的表現越來越成熟,OpenAI 的聊天機器人 ChatGPT 更是將這一趨勢推向輿論頂點。而 AIGC 在遊戲領域的進展也備受關注,投資公司 a16z 不久前發表過一篇研究文章《AIGC 在遊戲中的革命》,認為在所有娛樂類目中,遊戲會是生成式 AI 影響最大的領域

在之前的報道中,我們提到過 AIGC 在遊戲音樂、劇情生成中的一些應用案例(見文末「相關閱讀」)。此外,還有不少研究者專注於關卡生成方向。最近,來自哥本哈根資訊技術大學等機構的研究者發表了一篇論文,介紹了他們如何應用一個名為 MarioGPT 的語言模型從文字生成《超級馬里奧》遊戲關卡。

論文連結:https://arxiv.org/pdf/2302.05981.pdf

一個智慧體在玩MarioGPT生成的關卡。

這個研究方向從屬於一個程序內容生成(PCG)的領域。PCG 是指可以自動創建遊戲內容的技術,如創建關卡、地圖或角色。程序內容生成的好處是可以增加遊戲的可玩性,以及降低成本。

最近,PCG 和機器學習的發展已經開始以不同方式相互影響。一方面,程序化生成的環境成為評估 agent 的泛化能力的基準,Arcade 學習環境這樣的非 PCG 基準成為過去,這種變化已經成為人們的共識。另一方面,PCG 研究人員已經開始將基於機器學習的方法納入其系統當中。例如,最近的一些研究表明,生成對抗網路(GAN)等模型可以被用來生成各種遊戲的關卡,如《毀滅戰士》或《超級馬里奧兄弟》,使用的關卡來自視訊遊戲關卡庫。

然而,基於機器學習的程序內容生成(PCGML)在底層神經網路的隱空間中進行搜尋的成本往往過於高昂。更為理想的方法是能夠直接對生成器施加條件,使其創建具有某些屬性的關卡,並且最好是用自然語言來完成

為了應對這些挑戰,本文作者提出了 MarioGPT 模型(圖 2)。這是一個經過微調的 GPT-2 模型,經過訓練可以生成《超級馬里奧》中的遊戲關卡。該模型展示了大型語言模型是如何與 PCG 技術相結合的,最終能夠通過自然語言下的 prompt 有效地創建新的、多樣化的關卡。大規模語言模型(LLMs)是能夠在多樣化的語料庫上訓練的一類模型,如 GPT-n 系列模型,能夠從語言的關聯中捕捉人類行為的統計性關聯關係。通過這個過程,GPT 獲得了關於如何表示和預測複雜序列的知識。研究者利用這種知識為該模型提供了生成簡單的遊戲元件以及基於這些基礎遊戲元件生成更復雜的元件的能力。令人驚訝的是,MarioGPT 生成的關卡中,有很高的比例(88%)實際上是可以玩的

此外,本文作者將 MarioGPT 與尋求多樣性的演算法 —novelty search 演算法結合起來,以一種開放的方式不斷地產生多樣化的關卡。LLMs 與 novelty search 演算法的結合為未來的研究開闢了許多有趣的新方向。研究者希望他們的工作能夠為更靈活、更可控的 PCG 方法打開大門,使其能夠生成複雜、多樣和具備功能性的無盡的遊戲內容。為了促進這一點,研究者表示將很快提供程式碼。

通過大型語言模型生成開放式關卡

通過大型語言模型生成開放式關卡

在論文第三章,作者介紹了通過 LLMs 生成開放式關卡的完整方法,該方法由兩部分組成。首先,作者介紹了屬於一種 prompt-conditioned 的模型 ——MarioGPT(圖 2),它可以在給定的自然語言 prompt 下生成關卡(編碼為文字)。接著,圖 3 詳細介紹了 MarioGPT 如何融入 novelty search 演算法的進化循環,從而使該方法能夠不斷地產生不同的關卡

MarioGPT 模型

MarioGPT 是一種 prompt-conditioned 的單向語言模型,並且對長序列關卡的預測進行了最佳化。更確切地說,MarioGPT 的架構依賴於 GPT2 的蒸餾後的輕量級版本 ——DistilGPT2。與 novelty search 演算法中採取的方法類似,研究者將這個蒸餾過的 GPT2 版本微調後,用於預測《超級馬里奧》關卡中的 token。為了生成關卡,研究者將前 50 列的窗口串聯成一個單一的向量,並將其送入 MarioGPT。利用 Transformer 的注意力機制,他們生成了質量更好,長度更長的關卡。

架構:MarioGPT 的架構與 DistilGPT2 的架構相同,區別在於交叉注意力的權重被用在了 prompting 上。儘管 DistilGPT2 支持大小為 1024 的上下文長度,但 MarioGPT 的上下文長度限制在了 700,因為研究者發現增加長度對提高性能沒有什麼作用。MarioGPT 總共有 9600 萬個參數(8600 萬個原始 DistilGPT2 的參數和 1000 萬個交叉注意力權重)。研究者對 MarioGPT 進行了 5 萬次 step 的訓練,在每次迭代中隨機抽取 4 個關卡,並使用 Adam 最佳化器對模型進行最佳化。總的來說,MarioGPT 使用了 200,000 個訓練樣本。由於該模型相對較小,它可以使用單個 Nvidia 2080ti GPU 進行訓練

關於 Prompting 的細節:為了包含 Prompt,研究者微調了注意力層的交叉注意力權重,如圖 2 所示。Prompt 通過凍結權重的預訓練語言模型 BART 進行編碼生成。Prompt 通過權重凍結的語言模型傳遞,經過正向傳遞的隱狀態被平均化為單個向量。隨後,這個平均化的隱狀態被輸入到 GPT2 架構的交叉注意層中,並與被傳入模型的實際關卡相結合。

Prompt 表示為特定特徵(例如管道、敵人、街區、立面)和定量關鍵詞的組合:

例如,「沒有管道,很多敵人,低海拔」 或 「許多管道,許多敵人,許多障礙」 都是可能的 Prompt。關鍵字 「no」、「little」、「some」、「many」 是根據相應計數的分位數(在 50 列窗口內)計算的,如表 2 所示。「低」 和 「高」 高程由水平段中最高不可破碎的石塊的高度確定。

基於 Novelty Search 演算法的開放式馬里奧關卡生成

在 PCG 領域,重要的是不僅要生成具有不同物理特徵的關卡,而且要生成讓玩家能覺得有趣的關卡。在創建馬里奧關卡時,重點就成為了,能夠讓玩家採取不同的路徑來完成該關卡。這對許多之前的演算法來說是一個挑戰,需要使用外部 agent 進行評估。然而,有了 MarioGPT,就有可能生成多樣化和可控制的關卡,這些關卡接近於現實的玩家路徑,減少了對外部 agent 的需求,併產生可以直接玩的關卡。

為了鼓勵生成關卡的多樣性,研究者將 MarioGPT 整合到一個基於 Novelty Search 增強的遺傳演算法(NS-MarioGPT)中,其中語言模型扮演著變異運算元的角色。如圖 3 所示,NS-MarioGPT 從生成的關卡檔案中反覆取樣和變異,這些關卡由在 MarioGPT 樣本中隨機選取的大小為 1400(100 列)的 Prompt 的初始化生成。

Novelty Search 演算法:變異的關卡只有在比以前的最優解有更高的的 Novelty 分數時才會被儲存在種群中。新穎性得分是以關卡的行為特徵向量與種群中最接近的 k 個元素的行為特徵向量之間的平均距離來衡量的(使用 K-means 演算法)。

研究者在關卡生成中的目標是創建能讓玩家行為多樣化的路徑,因此其使用預測的玩家路徑作為行為特徵的基礎。更具體地說,研究者對預測路徑的相對模式感興趣。例如,如果一個玩家角色在高處的積木塊上直線移動,研究者希望該路徑的特徵在行為空間中與在低處直線移動的路徑相近。為了達到這個目的,研究者將行為特徵表示為預測路徑座標的歸一化平均值,從而使路徑的特徵變得平滑(圖 4)。因此,單一塊之間的差異的重要性被降低了,變異後的關卡更難被添加到種群中。這是研究者所希望的,這是因為種群庫中不應該充斥著與種群中現有關卡僅有微小差別的關卡。

在研究者基於 novelty search 演算法的實驗當中,他們使用一個大小為 4 的小鄰域,產生維度為 100 的行為特徵。研究者用少量的關卡(30 個)初始化種群,這是因為他們發現單靠變異就足以產生一個多樣化的關卡集,並不需要一個大的起始種群。

變異:本文介紹的基於 LLM 的變異操作(圖 3)在隨機 prompt 的引導下,將一個隨機挑選的關卡切片(40-80 列之間的切片)與一個新的 MarioGPT 預測進行轉換。就其本身而言,MarioGPT 能夠通過變異,產生各種具有不同 agent 路徑的關卡。然而,由於 MarioGPT 是一個單向的模型,不能保證新生成的路徑與關卡的其他部分一致。為了進一步提高路徑的一致性,研究者在 Bert 架構的基礎上加入了一個微調的 mask 預測模型(稱之為 MarioBert)。BERT 語言模型是一個雙向的 LLM,在 mask 預測的任務中的表現十分驚豔。這種能力對於現在的情況來說是非常理想的,MarioBert 被用來在取樣的圖像片段的內部進行繪製,以平滑地連接變異的片斷和關卡中其餘的畫面。這可以在圖 3 的 “變異過程” 的第二步中觀察到。

實驗結果

為了評估 MarioGPT 生成多樣化和可玩性關卡的能力,研究者覺得可以從以下幾個維度去思考:(1)MarioGPT 與其他 baseline 在驗證集上對 tile 的預測準確性方面的比較;(2)MarioGPT 生成的關卡是否能通關?(3) MarioGPT 是否會記憶?

為了衡量 MarioGPT 在生成關卡方面的熟練程度,研究者選擇 LSTM,以及從頭開始訓練的 MarioGPT(不使用預訓練的 GPT2 權重)作為 baseline,並比較了預測準確性,結果如表 3 所示。

為了測試可玩性,研究者在 250 個關卡中部署了 Robin Baumgarten 的 A* agent。研究者發現,所有 MarioGPT 生成的關卡中,88.33% 可以由 agent 完成,因此可以判定為是可通關的。此外,研究者發現這些可以通關的關卡中只有一個需要使用 A* agent 再次運行一次。研究者進一步地測試模型生成的路徑是否與 A* agent 的路徑匹配,以評估其可行性。表 4 分別顯示了可通關和不可通關關卡中,建議的路徑和實際 A* agent 選擇的路徑之間的平均絕對誤差(MAE)。

為了進一步研究生成的路徑的質量,研究者視覺化了具有最大、最小和中值重疊的路徑(即與高度平均絕對誤差的最大值、最小值和中值相對應的關卡)以及圖 6 中兩個有趣的手動選擇的示例。

在訓練 transformer 架構時,LLM 的動態記憶能力仍然是一個懸而未決的問題,並且許多工作對其進行了探索。雖然 LLMs 的功能非常強大,但它們有時會過度擬合,最終會反噬給訓練資料。緩解這個問題的一個流行方法是在預測中加入一些隨機性,即可調整的 熱力學 “溫度” 參數。為了評估 MarioGPT 是否產生了與訓練集相同的關卡,我們用不同的溫度參數進行取樣,並與訓練資料集中最接近的關卡進行比較。

通過簡單的 prompting,本文能夠引導 MarioGPT 走向可控和多樣化的關卡生成。研究者通過使用各種 prompt 組合生成 1000 個樣本,以實驗的方式評估了 MarioGPT 的 prompt 能力,並檢查生成的關卡對 prompt 描述的準確性。結果表明,MarioGPT 可以在大多數情況下生成與給定 prompt 匹配的關卡(表 5)

研究者還對系統進行了視覺化評估,在圖 5 中顯示了選定的即時條件下的生成結果。

湊巧的是,在這篇論文發佈的當天,來自紐約大學坦登工程學院等機構的研究者也發佈了一篇主題類似的論文,只不過生成的是《推箱子》遊戲關卡。感興趣的同學可以合併閱讀。

論文地址:https://arxiv.org/pdf/2302.05817.pdf

相關閱讀:

  • 《AIGC 加持遊戲劇情,無限故事的遊戲互動體驗來了》

  • 《AIGC 變革遊戲領域,微軟申請實時合成音樂專利》

全面學習ChatGPT,機器之心準備了 89 篇文章合集

這是一份全面、系統且高質量的 ChatGPT 文章合集,我們篩選出來了 89 篇相關文章,設計了閱讀框架與學習路徑,大家可以根據自己的需求進行瀏覽與研讀。合集內容包括:

  • ChatGPT 及 OpenAI 大事件時間軸

  • 概念·真正搞懂 ChatGPT:共 3 篇文章

  • 研究·GPT 家族更迭:共 16 篇文章

  • 八年·OpenAI 的歷史與現在:共 13 篇文章

  • 乾貨·GPT 相關研究與技術:共 18 篇文章

  • 觀點·專家談 ChatGPT:共 8 篇文章

  • 行業·應用與探索:共 23 篇文章

  • 行業·同類產品:共 8 篇文章

點選閱讀原文,開始學習ChatGPT。

相關文章

當創業者開始用 ChatGPT 裁員

當創業者開始用 ChatGPT 裁員

他說,從沒想到科幻片的場景有一天會發生在自己身上。 作者 | 黎詩韻編輯| 衛詩婕 幾個月來,對話機器人 ChatGPT 展現出的能力令世界...

ChatGPT 的「神功」,是如何煉成的?

ChatGPT 的「神功」,是如何煉成的?

最強對話式 AI,站在巨人的肩膀上。 AIGC 在這幾個月成了一個大熱的話題。 頗有些風水輪流轉的感覺,如同年初大火特火的 web3 一樣,...