遊戲AI七十五年:每個系統只能玩少數遊戲
本文追溯了從1948年圖靈的手動國際象棋程式到2023年Student of Games的75年遊戲AI歷史,重點從搜尋正規化轉向學習正規化,並探討了隱藏資訊帶來的挑戰。作者提出 Grimoire 專案,旨在讓遊戲設計師用自然語言描述遊戲規則,自動編譯為AI演算法可用的介面,從而搭建從研究到實踐的橋樑。
在過去的七十五年裡,遊戲AI的研究經歷了一場從搜尋到學習的深刻轉變。1948年,艾倫·圖靈在沒有可執行計算機的情況下,為國際象棋編寫了程式,並手動執行每一步。1950年,克勞德·夏農發表了計算機國際象棋的藍圖。其核心思想是“向前看”——即minimax演算法,配合alpha-beta剪枝,成為接下來五十年的主導方法。阿瑟·塞繆爾的跳棋程式在20世紀50年代末便能在IBM 704上達到可信水平,並創造了“機器學習”一詞。1997年,深藍擊敗卡斯帕羅夫,每秒搜尋兩億個位置。2007年,跳棋被完全解決:雙方最優玩法會導致平局。
然而,這些系統都依賴於人類編寫的評估函式——機器負責搜尋,人類負責判斷。這種侷限在圍棋面前暴露無遺,因為圍棋的分支太多,無法手工評分。
轉折點出現在自我對弈學習。1992年,傑拉爾德·特索羅的TD-Gammon透過神經網路自我對弈,達到了人類頂級水平。2016年,AlphaGo將深度網路與搜尋結合,擊敗了李世石。隨後,AlphaZero僅從規則學習就掌握了國際象棋、將棋和圍棋,而MuZero甚至能在不知道規則的情況下學習。這一趨勢表明,通用性是整個領域的發展方向。
但以上所有系統都假設雙方能看見全部資訊。現代棋盤遊戲大多涉及隱藏資訊,如對手的手牌或隨機牌堆。此時,minimax的“假設最佳回應”不再適用。撲克成為這一領域的試驗場,2007年提出的反事實遺憾最小化(CFR)演算法讓機器在2015年解決了限定德州撲克,隨後又在無限制和六人遊戲中擊敗人類頂尖選手。
到2019年,存在兩大傳統:擅長完美資訊的AlphaZero和擅長隱藏資訊的CFR。2023年,DeepMind的Student of Games將兩者結合,能同時下棋、打撲克和玩Scotland Yard。論文作者稱其為“邁向真正通用演算法的重要一步”。
儘管取得了這些成就,七十五年來,每個系統仍然只能玩少數遊戲,每個遊戲都需要研究人員手動整合。AlphaZero玩了三種,Student of Games四種。而棋盤遊戲數以十萬計,每天都有新設計。設計師迫切需要一種工具,能夠自動評估原型遊戲的平衡性和趣味性。
學術界早在二十年前就開始探索“通用遊戲玩法”。斯坦福的通用遊戲玩法專案(GGP)使用GDL語言,但GDL是一階邏輯,無法表達隱藏資訊或骰子,且設計師難以掌握。Ludii專案收集了上千種遊戲,但其描述語言仍是研究人員的工具。這些橋樑都是從演算法一側建造的,設計師一側仍然無法跨越。
作者的賭注是:橋樑必須從設計師一側建造,而現在這已經是一個工程問題而非研究問題。Grimoire專案正是為此而生。它採用一種說“棋盤遊戲語言”的描述格式,設計師可以用卡片、骰子、牌堆、回合等詞彙描述遊戲。例如,井字棋的描述如下:
components: x_marker: display: "X" count: 5 o_marker: display: "O" count: 5
containers: table: board: preset: grid rows: 3 cols: 3 accepts: [x_marker, o_marker]
flow:
設定、回合迴圈和結束條件
用同樣的詞彙表示
設計師可以直接讀懂。該格式編譯成AI演算法所需的標準介面——觀測和動作——這是強化學習領域Gymnasium和OpenSpiel等工具使用的通用語言。形式化描述不再作為人類介面,而是成為編譯目標。
在引擎之上,工具箱將包含TD-Gammon式的自我對弈學習、minimax搜尋及其現代隨機化變體。Grimoire的目標是讓設計師無需研究團隊介入,就能讓AI分析原型遊戲。