KataGo:更強的鬥獸棋電腦
發布於 2026年10月3日 · 更新於 2026年10月7日
鬥獸棋在 Mistboard 上有了新的最強電腦。它就是 KataGo-AnimalChess:hzyhhzy 在 lightvector 的 KataGo 基礎上開發的 KataGomo,使用 Kouza(lxsgx23)Dandelion 4 的 b10c384 神經網路。我們經 hzyhhzy 許可在這裡使用它,名字就叫 KataGo。
KataGo 和 AlphaZero 學西洋棋一樣,靠自己和自己下棋學會了鬥獸棋。神經網路提出著法、評估局面,搜尋再去檢驗它的想法。沒有任何別的引擎教過它。
對 Misty 82 勝 0 負
上線之前,我們讓它和我們自己的鬥獸棋電腦 Misty 進行了一場公開挑戰賽:200 盤,每步 1,000 次訪問。hzyhhzy 的引擎贏 82 盤、輸 0 盤、和 118 盤,得分率 0.705。每一盤勝局都是走進 Misty 的獸穴取勝,每一盤和棋都是重複局面。
每盤棋都由 Mistboard 自己的規則程式碼裁判,兩個引擎只負責提出著法。雙方的預算按用時對齊,在同一台機器上每步大約兩秒:Misty 用它平時的 500 萬個節點、單執行緒,KataGo 用 1,000 次訪問、四執行緒,搭配 b10c384 神經網路。兩個引擎都在固定的搜尋量處停下,所以在 Modal 上下出的棋,就是它們在這裡會下出的棋。KataGo 內建的重複局面規則被關閉,雙方都按裁判的規則處理重複。
| KataGo | 勝 | 和棋 | 負 | 得分率 |
|---|
| 執紅,100 盤 | 44 | 56 | 0 | 0.72 |
| 執黑,100 盤 | 38 | 62 | 0 | 0.69 |
| 合計 | 82 | 118 | 0 | 0.705 |
對局長度的中位數是 127 個半回合。得分率的 95% 信賴區間是 0.67 到 0.74,約合 +125 到 +180 Elo;挑戰賽的要求是 0.55。全部 200 盤都收在一個研究裡,原始紀錄放在一個檔案中,每盤一行 JSON。
虎現在可以橫向跳河
我們是在 GitHub 上找揭棋引擎時發現 KataGo 的。它放在一個名為 KataGomo 的儲存庫的 AnimalChess2025 分支上,名字裡看不出和鬥獸棋有關,所以之前專門找鬥獸棋引擎時漏掉了它。
它的虎既能縱向跳河,也能橫向跳河,跳法和獅一樣。我們的虎原先只能縱向跳,這個理解來自英文維基百科的條目。騰訊 QQ遊戲的規則、萊頓大學的鬥獸棋頁面和 KataGo 自己的原始碼,都讓虎擁有和獅一樣的跳法;一個按某條規則訓練的引擎,去和一個按另一條規則下棋的引擎比賽,比出來的只是規則的差別。
從 9 月 21 日起,Mistboard 上的虎可以縱橫兩個方向跳河,規則引擎、電腦、分析棋盤、規則頁面和題目都已更新。有一道題目被新的跳法駁倒,已經撤下。這次改動只增加了著法,所以之前的每一盤棋按原樣仍然合法。
兩盤勝局,兩個引擎各自怎麼看
我們用兩個引擎按比賽設定,把其中兩盤勝局的每個局面重新評估了一遍。每張圖只顯示一個數:KataGo 的勝率,由兩個引擎各判斷一次,一次是 KataGo 自己,一次是 Misty。兩條線分開的地方,就是兩個引擎對誰佔優看法不一。和棋算作半勝;Misty 的分數(釐兵)按我們分析棋盤使用的曲線 1 / (1 + e^(−0.00368 × cp)) 換算成勝率。
第 67 盤:多一隻狼,卻輸了
Misty 執紅,第 11 回合吃掉一隻狼,大半盤都認為自己領先;而 KataGo 的得分先停在 50%,隨後一路上升。
第 29 回合 Misty 把困在角落的虎從 g8 走到 g9,KataGo 對自己的得分從 61% 升到 92%,而 Misty 仍認為自己 +111。KataGo 為紅方給出的變化從獅 b1-b2 開始,能讓紅方保持 37%。Misty 到第 36 回合才看出來,晚了七個回合。
第 94 盤:慢慢收緊
Misty 執黑,第 19 回合吃掉一隻狼,此後 30 個回合裡大部分時間都認為自己領先;而 KataGo 的得分從 50% 慢慢升到 63%。
第 50 回合 Misty 把貓從 c8 走到 c7,KataGo 從 63% 升到 98%。Misty 仍認為自己 +80,兩個回合之後才算出必輸。KataGo 為黑方給出的變化是象 d6-d7,能讓黑方保持 38%。
在這兩盤棋中,KataGo 分別比 Misty 早七個回合和兩個回合看出勝局。
KataGo 就是那個圍棋程式,用自我對弈重新訓練
KataGo-AnimalChess 就是原版 KataGo,只是把棋盤和規則換成了鬥獸棋,自我對弈的訓練流程原樣照跑:自我對弈時每步 400 次訪問,10 個殘差塊、384 個通道的神經網路在兩塊 GPU 上用 SGD 訓練,規則在 Dandelion 軟體支援的各個變體之間隨機切換,所以一個網路就能下所有變體。儲存庫裡估計,在一個小型棋類上練到頂尖棋力,算力花費不到 50 美元。網路權重打包在軟體的下載裡,沒有單獨發布,也沒有註明授權條款。
Misty 的評估只有三項手寫的內容:子力、離獸穴的距離,以及陷阱扣分。在它之上再加一層學習出來的修正,並沒有幫助。
Misty 不懂衝獸穴競速
Misty 對局面的評估是子力,加上每個棋子離對方獸穴距離的獎勵。它從不去問奔向自己獸穴的對方棋子是否會先到;等搜尋抵達獸穴時它才發現,那大約是 12 著之後。8 月我們試了三種辦法教它,三種結果都是無效或負收益。
先看競速多常決定對局。在 Misty 平常的 500 萬節點下自我對弈 172 盤,52.9% 以重複和棋結束,26.2% 以進入獸穴結束,20.9% 以無進展和棋結束。只有 4.7% 是真正的競速:勝方在十著之前持平或落後。同樣的測試在 20 萬節點下給出 22%:較弱的對弈會把競速誇大約五倍。
更深的搜尋也找不到多少東西。在這 8 盤競速裡,6000 萬節點比 500 萬節點最多早 4 著看到敗勢,其中 4 盤一著也沒有提前。獸穴附近的搜尋延伸在免費給予時得到 +45 Elo,代價是 3.3 倍的節點;把預算固定後,它得到 −15 和 −12。專門的衝獸穴競速評估項,每方各比較一次雙方的奔襲棋子,在權重 10 和 25 下分別得到 −3 和 +9。每一場對抗都是 300 對換色對局。
搜尋夠得著時,Misty 照樣能把競速下好。在舊虎規則下的一盤自我對弈中,紅方的虎吃掉一隻狼,站進 d 路通道,就在藍方的象旁邊。它不能橫向跳,所以藍方不急著吃它。當象從 d7 走到 d6,紅方的獅從 c3 跳到 c7,跳進象剛離開的格子。象在 d5 吃掉了虎,而獅離一個藍方守不住的獸穴只差三步。藍方最終領先 13 分,卻輸了。Misty 沒有衝獸穴競速評估項;是搜尋深度找到了這條線。自 9 月 21 日起,虎可以橫向跳,這條通道不再困得住它。
真正改變了鬥獸棋對局的,是同一批對局裡找到的兩個常數:一個讓對局過早結束的無吃子和棋計數,以及接近零的和棋輕視值。改掉它們後,自我對弈中分出勝負的對局從四分之一升到大約一半。我們留下的教訓是:要把搜尋預算固定住,否則測的只是預算。那 52 盤對局都收在一個研究裡。
入門仍從 Misty 開始
KataGo 排在鬥獸棋電腦列表的最上面,在 Misty 之上。Misty 仍是預設對手,也是較容易的那一個;想下更難的棋就選 KataGo。鬥獸棋的復盤和分析仍由 Misty 負責。
在網站上,KataGo 每步搜尋 150 次訪問,大約用時 1.5 到 3.5 秒。在這個設定下,它和 Misty 下了 50 盤,19 勝 0 負 31 和,得分率 0.690,與 1,000 次訪問的結果分不出差別。它的棋力來自神經網路。
致謝
KataGomo 是開源專案,網址是 github.com/hzyhhzy/KataGomo。感謝 hzyhhzy 提供引擎並允許我們使用,感謝 lightvector 的 KataGo,也感謝 Kouza 的 Dandelion 4 神經網路。