国际象棋和大模型的内部世界 (2)
最近一直在做大模型的一些实践和应用工作。最近看了一些agent的一些在大模型上的探索,包括基于大模型驱动的类似MUD类的游戏。
最近2篇论文都是基于国际象棋的,作者的思路基本上差不多,采用比较小的模型,通过chess的PGN棋谱,训练后模型可以达到专业级的国际象棋水准。
这个非常有趣,LLM模型不仅可以训练一般的语料,还可以把符号化的类似棋谱一样记录决策的过程当做训练数据,从而实现LLM具备在此领域具备决策能力,
未来可以把很多决策类的行为符号化,训练LLM,使得具备决策能力,这个方向也很不错哦。
下一步的思路是:
- 了解一下国际象棋(比较尴尬,我以前一点都不了解)
- 通过大模型实现PGN棋谱的理解和决策
- 编写代码,通过写一个agent(智能体),以大模型为驱动,实现国际象棋的对弈。
后续,找一个类似nanoGPT的模型,自己训练一下PGN棋谱,让自己的LLM模型具备PGN棋谱的理解和决策能力。
本文将使用大模型比如:openai的chatgpt,文心一言,智谱AI的GLM进行国际象棋的棋谱的测试:
- 棋谱的理解
- 下一步决策
01.建一个开局棋谱
import chess
import chess.pgn
# 创建一个新的棋局对象
board = chess.Board()
# 执行一些棋子移动
board.push_san("e2e4")
board.push_san("e7e5")
board.push_san("g1f3")
board.push_san("b8c6")
# 打印棋盘的当前状态
print(board)
r . b q k b n r
p p p p . p p p
. . n . . . . .
. . . . p . . .
. . . . P . . .
. . . . . N . .
P P P P . P P P
R N B Q K B . R
02.大模型对棋谱的理解能力
首先我们构建一个简单的prompt,看一下大模型对当前棋谱的理解能力。
这是一个国际象棋棋谱:
r . b q k b n r
p p p p . p p p
. . n . . . . .
. . . . p . . .
. . . . P . . .
. . . . . N . .
P P P P . P P P
R N B Q K B . R
解释一下当前棋谱。
文心一言大模型
这个国际象棋棋谱描述了游戏开始时的棋子位置,以及白方已经走出的第一步棋。下面是对这个棋谱的详细解释:
r . b q k b n r
:这是描述黑方棋子的行。从左到右,它表示黑方有一个车(r)在最左边,然后是一个空位,接着是象(b)、皇后(q)、国王(k)、象(b)、马(n)和另一个车(r)在最右边。这是国际象棋标准开局时黑方棋子的初始位置。p p p p . p p p
:这是描述黑方棋盘的第二行,也就是兵的位置。从左到右,黑方有8个兵(p),分别占据棋盘的第二行。注意,这里的点(.)表示该位置没有棋子。接下来的几行描述的是白方的棋子位置,但在这个棋谱里,白方的棋子位置并未发生改变,所以它们仍处于初始位置。然而,在实际的国际象棋记录中,通常不会重复写出未发生变动的白方棋子位置,这里可能是为了完整性而写出的。
. . n . . . . .
:这通常应该是描述白方棋盘的第二行,但在这个棋谱中看起来有些不标准。在标准的初始位置中,这里应该是白方的兵(P),像这样:P P P P P P P P
。不过,由于这个棋谱可能只关注于已经移动的棋子,所以未移动的棋子就没有写出来。但这里的表示方法并不常见,容易造成混淆。更常见的表示方法是在棋谱的开头给出完整的初始位置,然后只记录发生移动的棋子。e2e4
:这是白方已经走出的第一步棋,表示白方的e2位置的兵(实际上应该是P,代表Pawn,即兵)向前移动到了e4位置。这一步棋是国际象棋开局中非常常见的一步,旨在控制中心并为后续的棋子开发打开道路。
然而,棋谱中关于白方第二行的表示方法(. . n . . . . .
)是不规范的。在正常的棋谱记录中,我们不会看到这样的表示。正确的表示应该是白方的初始兵位置(P P P P P P P P
),然后跟随棋子的移动记录。如果这里想要表示的是黑方的某个马(N)已经移动了,那么它应该出现在棋谱的移动记录部分,并且需要指明是从哪个位置移动到了哪个位置。但在你提供的棋谱中,并没有这样的记录。
总结一下,这个棋谱似乎有些混淆和不规范。它正确地描述了黑方的初始位置和白方的第一步棋(e2e4),但在表示白方棋子位置时存在错误或不清晰的地方。在实际的国际象棋比赛中,棋谱通常会更加准确和清晰地记录每一步棋的移动。
chatgpt
这是一个标准的国际象棋棋盘,每个棋子都用一个字母表示,其中小写字母代表黑色棋子,大写字母代表白色棋子。每个字母的含义如下:
- r: 车 (Rook)
- n: 马 (Knight)
- b: 象 (Bishop)
- q: 女王 (Queen)
- k: 国王 (King)
- p: 兵 (Pawn)
棋盘的排列是从白色方的视角描述的,所以白色方在底部,黑色方在顶部。每一行表示一个水平排列,而每个字符代表相应位置的棋子。
现在解释每个棋子的位置:
白色方(大写字母):
- 白色车 (Rook) 位于 a1 和 h1。
- 白色马 (Knight) 位于 b1 和 g1。
- 白色象 (Bishop) 位于 c1 和 f1。
- 白色女王 (Queen) 位于 d1。
- 白色国王 (King) 位于 e1。
- 白色兵 (Pawn) 从 a2 到 h2。
黑色方(小写字母):
- 黑色车 (Rook) 位于 a8 和 h8。
- 黑色马 (Knight) 位于 b8 和 g8。
- 黑色象 (Bishop) 位于 c8 和 f8。
- 黑色女王 (Queen) 位于 d8。
- 黑色国王 (King) 位于 e8。
- 黑色兵 (Pawn) 从 a7 到 h7。
注意到棋盘中有一些位置没有棋子,用"."表示。这是一个初始局面,每个玩家都有16个棋子,按照规则,游戏将从这个状态开始。
智谱AI GLM4
当前棋谱显示的是国际象棋的棋盘布局。棋盘由8x8的方格组成,每一行代表棋盘上的一行,从白方的视角来看,最下面一行是第1行,最上面一行是第8行。每一列用字母a到h表示,也是从白方的视角来标识。
棋谱中用不同的字母来代表不同的棋子:
- "R" 代表车(Rook)
- "N" 代表马(Knight)
- "B" 代表象(Bishop)
- "Q" 代表后(Queen)
- "K" 代表王(King)
- "P" 代表兵(Pawn)
小写的字母代表黑方的棋子,大写的字母代表白方的棋子。点(.)代表该位置上没有棋子。
根据您提供的棋谱,我们可以看到: - 黑方(从第8行到第1行)的布局是:车、马、象、后、王、象、马、车,其中第7列(g列)上应该有一个马,但现在缺失了。
- 黑方有8个兵,分别在第7行和第6行。
- 第5行全部为空。
- 第4行只有一个白方的兵(Pawn),位于第5列(e列)。
- 第3行全部为空。
- 第2行只有一个黑方的马(Knight),位于第6列(f列)。
- 白方(从第1行到第8行)的布局是:车、马、象、后、王、象、兵、车,其中第2列(b列)上应该有一个兵,但现在缺失了。
- 白方有8个兵,分别在第2行和第3行。
这个棋谱可能是在某个棋局进行中或刚开局不久的状态,因为双方都还没有进行太多的移动,且兵的布局符合国际象棋的开局规则。棋谱中缺失的棋子可能是已经被吃掉或者在棋谱记录时被省略了。
针对三个模型的输出,因为我也不懂国际象棋,感觉说的都有道理,只是文心一言的那个貌似对n的解释不对。
03.大模型对棋谱的决策能力
首先我们构建一个简单的prompt,看一下大模型对当前棋谱的理解能力。
这是一个国际象棋棋谱:
r . b q k b n r
p p p p . p p p
. . n . . . . .
. . . . p . . .
. . . . P . . .
. . . . . N . .
P P P P . P P P
R N B Q K B . R
你作为一个国际象棋大师,最为白方,采用控制中心策略,你决定如何走下一步?
文心一言大模型
作为一个国际象棋大师,采用控制中心策略时,我会仔细分析局面并做出最有利于控制中心的走法。在当前局面下,我的下一步走法建议是:
d2d4(兵到d4)
这步棋的目的是打开中心,挑战黑方的d7d5位置,并为后续的中心控制奠定基础。d4兵不仅能够直接攻击黑方的中心兵,还能够为白方的后续棋子(如象、后等)提供更好的斜线通道。
如果黑方选择d7d6来巩固中心,白方仍然可以通过后续的c2c4来加强中心的控制,并考虑进一步的棋子开发。如果黑方走d7d5来对抗d4兵,白方可以根据情况选择e4d5来占领中心,或者通过其他方式来维持中心的紧张状态。
此外,走了d4之后,白方还可以根据黑方的回应来调整策略,比如如果黑方没有立即走d5来对抗,白方可以考虑走c4来进一步控制中心,或者发展其他的棋子。
总之,d2d4是一步旨在打开中心并加强控制的走法,符合控制中心策略的原则。然而,需要注意的是,国际象棋中的每一步棋都应该根据当前的具体局面和对手的可能回应来做出决策,因此在实际游戏中还需要结合具体情况进行灵活变通。
chatgpt
在控制中心策略中,通常的目标是占领或控制棋盘中心的方块,这有助于增加棋子的活动性和对整个棋盘的掌控。在当前局面中,白方可以通过移动兵(Pawn)来加强对中心的控制。
因此,一个合理的下一步是向中心移动兵,具体来说,白方可以走 d4(d2-d4)。这一步会打开白方女王(Queen)和白方象(Bishop)的路线,同时增加对棋盘中心的掌控。这样的走法有助于建立更强大的棋盘地势,并为白方的其他棋子提供更多的活动空间。
智谱AI GLM4
作为白方,采用控制中心策略,我的首要目标将是控制棋盘的中心,同时确保王的安全,并寻找机会攻击黑方的王。
在这个局面中,白方的王已经 castle 了王翼,而黑方的王还没有移动。白方有一个兵在中心位置(e4),而黑方在中心没有兵。白方的马在 c3,控制了中心的一些关键格,而黑方的马在 f6,对白方的中心兵构成了威胁。
考虑到这些因素,我会考虑以下几个步骤:
- 移动马:将马从 c3 移动到 e5,控制更多的中心格,并威胁黑方的中心兵。这可以防止黑方在中心形成压力,并为白方的其他棋子提供支持。
- 发展其他棋子:我会考虑移动 f2 的象到 b4 或 c4,这样可以控制更多中心格,并为未来的攻击做准备。
- 保护中心兵:如果黑方移动马到 e4,我会考虑用兵 d2 去保护 e4 的兵,或者用马 e5 去吃掉黑方的马。
- 寻找攻击机会:我会寻找机会攻击黑方的王,可能通过 d5 或 f5 的兵前进,或者通过 b1 的象和 a1 的车进行长距离攻击。
具体的走法取决于黑方的回应,但控制中心并寻找攻击机会是白方的关键策略。记住,国际象棋是一个动态的游戏,每一步棋都需要根据对手的回应来调整策略。
三个模型中,文心一言和chatglm采用了d4,而GLM4选择c3e5,三个模型都给出了下一步策略,我因为不懂国际象棋也不好评测策略的优劣。
04.结论
总之,经过测试,大模型具备了理解国际象棋棋谱的能力和针对下一步走棋的决策能力,如果把大模型作为引擎,实现对弈貌似是一件比较简单的事情了