國際象棋和大模型的內部世界 (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.結論
總之,經過測試,大模型具備了理解國際象棋棋譜的能力和針對下一步走棋的決策能力,如果把大模型作為引擎,實現對弈貌似是一件比較簡單的事情了