大语言模型下国际象棋的技术突破

本文探讨了大语言模型在未经过专门训练的情况下,如何通过预测PGN棋谱中的下一步来达到人类棋手水平的国际象棋能力,揭示了其内部世界模型的潜在机制。

计算机在国际象棋上超越人类已有至少25年历史。而过去五年,深度学习模型更是超越了最优秀的人类棋手。但直到本周,机器学习模型要想下好象棋,仍需专门设计:必须明确告知存在8x8棋盘、不同棋子的移动规则及游戏目标,然后通过强化学习自我训练才能获胜。

这一切在周一发生了改变。某机构发布了GPT-3.5-turbo-instruct——一个为遵循人类指令而调整的语言模型,本意是生成英文文本,但网友很快发现它能达到熟练人类棋手水平(具体多熟练尚待确认)。

这令人惊讶。语言模型本应建模语言而非下棋,甚至不懂象棋规则。例如GPT-4与我对弈时仍会走违规步数,而GPT-3.5-turbo-instruct却能击败我。

为测试模型水平,开发了一个Python封装器,将模型接入UCI兼容的象棋引擎,并连接到某开源象棋平台。若读者近期访问,可与该AI对弈(需平台账号)。

模型下棋方式极具人性化:先建立优势局面,然后在21步走出Rxg5+弃车杀招(虽未成功)。其完整源代码已在GitHub开源。

技术原理

语言模型通过预测PGN棋谱中的下一步来下棋。例如输入"[White “某棋王”]…[Black “某棋王”]…1. e4"后,模型会预测标准王兵开局回应"e5"。通过不断追加历史走法,模型能持续预测后续步数。

关键在于:模型需在激活状态中维持棋盘"世界模型",每次预测都需重演全部历史走法。这要求其理解将军规则(需预判对手反应)、吃过路兵、王车易位限制等复杂规则。测试中模型从未产生非法走法。

语言建模与胜负逻辑

模型目标并非取胜,而是最大化PGN文本概率。由于网络棋谱多为高质量对局,这通常表现为"走出好棋"。但当输入"云端开局"(故意走王前兵的笑话开局)时,模型会回应"双云端开局"——因为人类棋手在此情况下常如此应对。

技术验证

通过某象棋平台的350万战术题库测试发现:

  1. 模型能解决2600分难题:在31. Ne3三叉攻击后走出看似送后的Qxe5(实际因d6兵被牵制而制胜)
  2. 却会失误于简单局面:在明显"冲兵"即可获胜时选择39… h5

状态依赖性实验

相同棋盘状态通过不同走法序列到达时,模型表现差异显著:

  • 正常走法序列:解题成功率100%
  • 非常规走法序列(如故意送后):成功率降至50% 这表明模型可能动态适应对手水平,或非常规走法破坏了其内部棋盘表示。

结论

语言模型通过文本预测意外获得了象棋能力,其内部世界模型的运作机制令人深思。这一发现挑战了"语言模型不能建立世界模型"的传统认知,相关代码已开源供进一步研究。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计