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 神经网络。