Google DeepMind
大型语言模型(LLM)的推理能力正越来越多地被应用于经典的棋盘和纸牌游戏,但主流方法——通过提示直接生成走法——存在显著缺陷。它依赖于模型隐式且脆弱的模式匹配能力,导致频繁出现非法走法和策略肤浅的博弈。在此,我们引入一种替代方法:我们利用LLM将自然语言规则和游戏轨迹翻译成一个形式化的、可执行的世界模型,该模型以Python代码表示。这个生成的模型——包含了状态转换、合法走法枚举和终止检查的函数——作为一个可验证的模拟引擎,服务于像蒙特卡洛树搜索(MCTS)这样的高性能规划算法。此外,我们提示LLM生成启发式价值函数(以提高MCTS的效率),以及推理函数(以在不完美信息游戏中估计隐藏状态)。与直接将LLM用作策略相比,我们的方法具有三个明显优势:(1)可验证性:生成的CWM(代码世界模型)作为游戏规则的形式化规范,允许规划器算法性地枚举有效行动并避免非法走法,但这取决于合成模型的正确性;(2)策略深度:我们将LLM的语义理解与经典规划器的深度搜索能力相结合;(3)泛化能力:我们引导LLM专注于数据到代码的翻译这一元任务,使其能够更容易地适应新游戏。我们在10种不同的游戏上评估了我们的智能体,其中4种是为本文创建的新游戏。5种游戏是完全可观察的(完美信息),5种是部分可观察的(不完美信息)。我们发现,在所考虑的10个游戏中,我们的方法在9个中表现优于或持平于Gemini 2.5 Pro。
摘要解读 (高三通俗版):
想象一下,你想教一个超级聪明的AI(就是LLM,比如ChatGPT)下象棋或者打扑克。最直接的办法是把棋盘或牌局的现状告诉它,然后问:“你下一步该怎么走?” 这就是“提示生成走法”的模式。但这种方法有个大问题:AI有时候会犯规,比如让“马”走“日”字格之外的步,或者出一些不符合规则的牌。而且,它下棋通常只看眼前几步,缺乏长远的战略眼光,因为它主要靠的是模糊的“感觉”(模式匹配),而不是严密的逻辑推理。
这篇论文提出了一种全新的、更靠谱的方法。他们不再直接问AI“怎么走?”,而是给了AI一个更高层次的任务:“请你根据这些游戏规则的文字描述,以及几局游戏的实战记录,帮我写一个这个游戏的‘模拟器’程序(用Python代码)。” 这个程序就是所谓的“代码世界模型”(CWM)。这个“模拟器”非常关键,它能准确地告诉我们:在当前局面下,下一步有哪些合法的走法?走了某一步之后,局面会变成什么样?游戏什么时候算结束?
有了这个完美的“模拟器”之后,就可以把它交给一个专门搞“深思熟虑”的经典算法,比如“蒙特卡洛树搜索”(MCTS)。这个算法就像一个棋圣,它会利用模拟器在“脑中”疯狂推演成千上万种可能性,从而找到最佳的走法。这就好比,LLM负责“理解规则并制定蓝图”,而MCTS负责“基于蓝图进行精密的计算和规划”。
这种新方法有三大好处:
实验结果证明,这种方法在10个测试游戏中,有9个都打败了直接下棋的顶级AI Gemini 2.5 Pro,显示了其巨大的潜力。
大型语言模型(LLM)在解决各种推理任务方面展现了令人印象深刻的能力,并且最近已被用作能够玩经典(通常是多玩家)游戏的“智能体”,如象棋、围棋,甚至像扑克和桥牌这样复杂的不完美信息游戏。标准方法是将LLM视为一个策略,通过使用基于迄今为止所见的观察和行动轨迹的提示策略,在每一步要求它选择一个走法,外加可选的关于游戏的文本元数据。这种方法将LLM视为一个端到端的“直觉型玩家”,利用其庞大的训练数据来识别模式并选择看起来有希望的走法。然而,战略大师通常需要深度的多步前瞻,这是“系统2”深思熟虑的特征(Kahneman, 2003)。尽管通过训练专业模型可以实现高水平的博弈(Ruoss et al., 2024; Schultz et al., 2025),但通用LLM的直接博弈通常缺乏深度战术远见,尽管最近在“思考”方面有所进步(Liao et al., 2025),正如我们在本文中通过经验证明的那样。此外,将LLM作为策略的方法在LLM训练集中未包含的新颖游戏上表现不佳,我们也将对此进行展示。
引言解读 (第一段):
AI(也就是LLM)现在越来越厉害,不仅能聊天写作,还能用来下象棋、打扑克。目前最常见的玩法是,把棋局情况告诉AI,让它直接说下一步怎么走。这就像一个凭“直觉”下棋的棋手,它看过无数棋谱,所以能凭感觉走出看起来不错的棋。这种依赖“直觉”的下棋方式,心理学家丹尼尔·卡尼曼称之为“系统1”思维——快速、自动、不费脑力。
但是,要想成为真正的象棋大师,光靠直觉是不够的,还需要“系统2”思维——缓慢、专注、需要深度思考和计算。比如,高手下棋会思考“如果我走这一步,对手可能会怎么应对,然后我再怎么走……”,这样深思熟虑好几步。现在的通用AI直接下棋,就缺少这种深度的战术计算能力。虽然有些最新的研究试图让AI“多想一会儿”,但效果还是有限。而且,如果让AI去玩一个它以前从未见过的全新游戏,它的“直觉”就完全失灵了,表现会很差。这篇论文就是要解决这个问题。
多人游戏中的互动可以用广义形式博弈(extensive-form games)的形式来描述(Kuhn, 1953; Shoham & Leyton-Brown, 2009; Albrecht et al., 2024; Murphy, 2025):有一组 $n$ 个玩家的集合 $\mathcal{N}=\{1,2,\cdot\cdot\cdot,n\}$,他们采取离散的行动 $a\in\mathcal{A}$。行动的序列被称为历史 $h\in\mathcal{H}$;所有游戏都从初始的空历史开始,并在终局历史 $\mathcal{Z}\subseteq\mathcal{H}$ 结束。有一个特殊的玩家叫做“机会”(chance),有时也叫“自然”(nature),用一个已知的、固定的(随机)策略——机会结果分布——来进行游戏,例如,代表掷骰子和抽牌。由于机会事件由游戏环境明确表示,每个历史 $h$ 都可以被看作是一个游戏(无论是已完成还是进行中)的唯一转录,并且是只有环境知道的“真实”状态。在每一个历史 $h$,都有一个要行动的玩家 $\tau(h)\in\mathcal{N}\cup\{c\}$ 和一个合法的行动集合 $\mathcal{A}(h)\subseteq\mathcal{A}$。在部分可观察(不完美信息)游戏中正式定义状态可能很棘手,我们将其推迟到附录B,以便与搜索方法(策略生成)的描述相结合。智能体编码策略以采取行动 $\pi(h)\in\Delta(\mathcal{A})$,其中 $\Delta(\cdot)$ 代表一个离散概率分布。对于每个智能体 $i$,目标是找到一个最大化其自身累积奖励 $\sum_{t=1}^{T}r^{i}(h_{t})$ 的策略。然而,在多智能体设置中,每个个体的目标共同取决于其他智能体的选择。
背景解读:
这一段是在用数学语言给“玩游戏”这件事下一个精确的定义,这对于计算机科学家来说是必需的,可以确保大家在同一个频道上讨论问题。我们把它翻译成大白话:
总而言之,这段话用一套严谨的数学符号,把一个动态的、多方参与的、可能包含随机性的游戏过程给“模型化”了,为后续的算法设计打下了理论基础。
图1: 两种方法的对比。 左图展示了传统方法,直接让LLM凭直觉下棋。右图展示了本文的核心思想,让LLM扮演“翻译官”和“架构师”的角色,将游戏规则翻译成一个精确的代码模拟器(CWM),然后由专业的规划算法利用这个模拟器进行深度推演,找出最佳走法。
人们对评估LLM玩游戏的能力越来越感兴趣,最近发布的Kaggle游戏竞技场¹以及其他近期工作(Costarelli et al., 2024; Duan et al., 2024; Verma et al., 2025; Hu et al., 2025a; Sun et al., 2025; Cipolina-Kun et al., 2025; Hu et al., 2025b; Guertler et al., 2025)都证明了这一点。与这些论文类似,我们的目标是设计基于LLM的、能玩基于文本的游戏的智能体。此外,像ggbench(Verma et al., 2025)一样,我们使用新颖的游戏来评估我们智能体的通用性,这些游戏(通过构建)对于LLM来说是分布外的(OOD)。然而,我们不是直接将LLM用作策略,而是专注于使用LLM生成一个CWM,然后我们对其应用标准求解器,如(IS)MCTS或PPO。
相关工作解读 (第一段):
这里是在回顾学术界已有的研究,相当于写论文时的“文献综述”。作者说,最近学术圈很热闹,大家都在研究怎么用AI(LLM)来玩游戏,还搞了专门的比赛平台(Kaggle游戏竞技场)。很多人都在做类似的事情:设计一个能玩各种游戏的AI。为了真正考验AI的“智商”而不是“记性”,研究者们还特意设计了一些全新的、AI肯定没见过的游戏(OOD,分布外数据)。到这里,作者说“我们和他们的目标是一样的”。
但是,作者紧接着指出了自己工作与众不同的地方:别人都是直接让AI当“选手”去下棋,而我们是让AI当“教练”和“工程师”,先去构建一个游戏的“模拟器”(CWM),然后再用成熟的专业算法(比如MCTS)来当“选手”,在这个模拟器里进行训练和比赛。这是方法论上的根本区别。
我们提出以一种不同的方式使用LLM,即作为可以利用其先验知识的归纳引擎,将少量观察到的轨迹(游戏玩法)数据,加上文本游戏描述,映射为合理的、以Python代码表示的世界模型,使用如Tang et al. (2024a)中的迭代代码优化方法。我们将此过程的结果称为“代码世界模型”(CWM)。在游戏博弈的背景下,CWM由(可能潜在的)状态的定义、一个指定每步合法走法的函数、一个状态转换函数、一个观察函数(用于潜在状态)、一个奖励函数和一个检查终止的函数组成。此外,对于部分可观察游戏的挑战性情况,我们引入了一种新颖的范式,有效地让LLM合成一个正则化的自编码器:一个推理函数(编码器)将观察映射到合理的潜在历史,而CWM(解码器)从它们重构观察,其中游戏的规则和API作为一个强结构化的正则化器。
方法论解读 (第二段):
这段详细阐述了他们是如何利用LLM的。他们不把LLM当成一个简单的“棋手”,而是把它看作一个强大的“归纳推理机器”。
简而言之,他们让LLM从一个“运动员”升级成了一个“游戏设计师+裁判”,创造出一个可以完美模拟真实游戏的虚拟世界。
在一个高层次上,当面对一个新游戏时,我们的通用游戏博弈智能体遵循以下步骤:首先,它使用一个随机策略玩几局游戏直到结束。在每局游戏中收集的数据形成一个轨迹,该轨迹由每个时间步的观察、奖励、合法行动和状态组成。其次,它使用游戏的规则的文本描述,加上生成的轨迹,来学习一个 $CWM$。最后,该智能体在一个竞技场中与其他对手进行游戏,使用一个建立在合成CWM之上的MCTS策略。对于不完美信息游戏(IIGs),我们使用ISMCTS代替MCTS。如果所有合成的元素都是正确的,随着博弈时间的计算量增加,我们智能体的博弈行为会越来越接近最优。因此,与LLM作为策略的智能体相比,我们将LLM的负担从产生一个好的策略转移到产生一个好的世界模型,这反过来又使规划方法能够将计算转化为博弈性能。
方法解读 (高层次流程):
这里清晰地勾勒出了整个AI智能体的工作流程,可以分为三步走战略:
面对一个全新的游戏,AI一开始完全是个新手。它会像个无头苍蝇一样胡乱走几步(使用随机策略),直到一局游戏结束。这个过程的目的不是为了赢,而是为了“录像”。它会把整个过程中的每一步——它看到了什么(观察)、走了哪一步(行动)、得到了什么结果(奖励)、以及游戏变成了什么样子(状态)——都完整地记录下来。这个“录像带”就是所谓的“轨迹”。
接下来,AI进入学习阶段。它会拿到两份材料:一份是游戏的官方文字规则说明书,另一份就是刚刚“瞎玩”时录下的几盘“录像带”。然后,强大的LLM出场了,它的任务是结合理论(规则)和实践(录像带),写出一个能完美模拟这个游戏的程序,也就是我们前面提到的“代码世界模型”(CWM)。
一旦有了这个精确的CWM模拟器,AI就从一个新手蜕变成了一个拥有“上帝视角”的战略家。在真正的比赛中,每当轮到它走棋时,它不会直接做决定,而是启动一个名为MCTS(或ISMCTS,用于扑克这类游戏)的超级规划算法。这个算法会利用CWM模拟器,在“脑内”进行成千上万次的模拟推演(“沙盘推演”),评估各种走法的优劣,最终选择那个胜率最高的走法。计算资源越多,它推演得就越深,下的棋就越接近完美。
核心转变: 传统方法是把所有压力都放在LLM身上,让它既要理解规则又要下出好棋。而新方法进行了一个聪明的“责任转移”:让LLM只负责它最擅长的事——理解语言并生成代码(构建世界模型)。而把“下出好棋”这个需要深度计算和规划的任务,交给了更专业的传统算法。这样分工合作,效率和效果都大大提升。
一个CWM是一个可玩的、目标游戏的近似副本。它包含提供逻辑的函数,用于在采取行动时更新游戏状态(转换函数,包括终止)、给定状态下的合法行动、给定状态下的观察(在IIGs的情况下,观察和状态不同)、机会节点的分布以及状态的奖励函数。所有这些函数都是确定性的,随机性仅通过机会玩家的行动进入游戏。为了合成一个新的CWM,我们向LLM提供游戏的规则和离线轨迹,并要求它创建一个遵循OpenSpiel API (Lanctot et al., 2019) 格式的CWM。详见附录G的提示细节。
综合代码世界模型解读:
这一段深入解释了CWM到底是什么以及如何创造它。可以把它理解为“模拟器的详细规格说明”。
单次生成CWM通常不足以产生一个正确的游戏实现,除非我们加入某种纠正反馈。因此,我们将初始的CWM进行迭代优化(Dainese et al., 2024; Tang et al., 2024b)以提高其质量。为了优化,我们从离线轨迹中自动生成一系列单元测试。对于离线轨迹中的每一次转换,都会生成单元测试,以检查CWM预测的正确性(与原始轨迹的状态、观察、奖励、行动合法性相比),以及是否存在执行错误。
迭代优化解读:
让LLM一次性写出完美无瑕的代码是很难的,就像我们写作文,初稿总会有各种问题。所以,他们设计了一套“自动找茬和修改”的流程,叫做“迭代优化”。
通过这种方式,CWM的质量被不断打磨,从一个充满bug的初稿,逐渐变成一个精确可靠的游戏模拟器。
我们工作的新颖之处之一是综合推理函数,以支持在不完美信息游戏(IIGs)的博弈时使用带有学习到的CWM的ISMCTS规划。要理解为什么这是必要的,请注意ISMCTS要求在每个游戏步骤t,智能体能够估计游戏的隐藏状态 $s_t$,如附录B中所解释。更准确地说,在博Git弈时,智能体 $i$ 必须能够从其信念状态 $p_M(s_t|o_{1:t}^i, a_{1:t}^i)$ 中采样,其中M是估计的CWM。由于精确推理在最坏情况下会产生指数级成本,我们要求LLM综合代码来近似地从后验分布中采样,仅利用智能体 $i$ 迄今为止从离线轨迹中得到的行动 $a_{1:t}^i$ 和观察 $o_{1:t}^i$。我们考虑两种替代方法来实现这一目标:隐藏历史推断和隐藏状态推断。我们将在下面描述这些方法。
为不完美信息游戏综合推理函数解读:
这一节开始处理一个非常棘手的问题:在像德州扑克这样的“不完美信息游戏”(IIGs)中,你不知道对手的底牌(隐藏状态)。
前面提到的那个厉害的规划算法ISMCTS,它要想工作,前提是你必须能告诉它:“根据我现在看到的情况(我的牌、公共牌、大家的下注记录),你帮我猜一下,对手现在最可能拿的是什么牌?” 也就是说,ISMCTS需要一个能根据“可见信息”来推测“隐藏信息”的工具。
精确地计算出所有对手可能的手牌以及对应的概率,在复杂游戏中计算量大到爆炸(指数级成本),是不现实的。所以,作者们再次求助于LLM,让它帮忙写一个“猜测”程序,这个程序就是所谓的“推理函数”。
任务: “请你写一个程序,这个程序只需要看我(玩家i)能看到的信息(我的观察 $o$ 和我的行动 $a$),然后给我一个对当前隐藏状态(比如对手的牌)的合理猜测(采样)。”
为了完成这个任务,他们提出了两种不同的“猜测”思路:
这两种方法各有优劣,下面会详细说明。