读懂 Stockfish 的层数,以及它对你棋局的意义
关于搜索深度、时间分配,以及深挖分析何时才真正有用的实用指南
Stockfish 在分析时显示「深度 24」,这到底是什么意思?多数棋手隐约觉得层数越高分析越好,却很少有人清楚这个数字代表什么、怎么来的、什么时候才真正要紧。这不是纸上谈兵:它直接决定了引擎分析能在多大程度上帮你涨棋。
本文拆解 Stockfish 如何搜索一个局面、层数告诉了你什么,以及在自己的训练中该如何切实地选择分析深度。
什么是搜索深度
搜索深度的本质,是引擎在其主要变化上往前看了多少个半步(ply)。深度 20 意味着 Stockfish 正在考察至少 20 个半步的着法序列——大致相当于双方各走十步棋。这个说法技术上没错,但在一个要紧的地方会误导人。
现代引擎并不会把所有变化都搜到同样的深度。Stockfish 使用 alpha-beta 剪枝,再配合各种搜索延伸与缩减。有前途的变化会被挖到远超名义深度的地方,明显糟糕的分支则早早剪掉。一个标着「深度 24」的局面,某些变化可能已经算到第 40 层甚至更远,另一些则在第 10 层就截断了。
正是这种有取舍的搜索让引擎如此强大。它们不把时间浪费在一眼可见的坏棋上,而是把算力集中到最关键的变化上。显示出来的层数是一个最低保证——引擎沿着主要变化至少看了这么深——但真实的搜索要复杂得多,也不均匀得多。
深度如何影响评估质量
深度和评估准确度之间的关系并非线性。从第 10 层提到第 15 层,分析质量会有戏剧性的提升。从第 20 层提到第 25 层依然有意义,但没那么明显。从第 30 层提到第 35 层,在多数局面里只带来边际上的改善。
这条收益递减的曲线有其实际原因。层数低时,引擎经常错过战术手段、误判局势;每加一层都会揭示新的战术可能和战略细节。可随着层数上去,引擎其实已经找到了局面里大部分重要的想法,再往下主要是在边缘情形上打磨评估,而不是发现全新的构思。
这个规律有几个重要的例外。在战术纠缠很深的局面里——长长的强制序列、弃子进攻,或者安静的一步在很多回合后才导致突破——即便层数很高,评估依然可能不稳。那正是你会看到评分在第 30 层往上仍然跳来跳去的局面,也是国际象棋里最迷人的一类局面。
残局是另一个例外。有些残局必须搜得极深才能判断正确,因为取胜方案要靠跨越许多回合的精确调度。残局库(一个预先算好的、包含所有少子局面的数据库)能立刻告诉你这个局面是赢、是和还是输;但没有残局库时,引擎在某些残局里可能需要 40 层以上才看得见取胜的路径。
选择性深度与名义深度
看 Stockfish 的输出,你常会见到两个层数:名义深度和选择性深度(有时标作「seldepth」)。名义深度是基础搜索深度,选择性深度则显示引擎在搜索过程中探到的最深那条线。
比如你可能看到「深度 25/48」——基础搜索是 25 个半步,但某些关键变化被挖到了 48 个半步。这两个数字之间的差距透露了局面的性质。差距大,说明引擎撞上了需要深算的强制序列;差距小,说明这是个安静的局面,大部分分支都能在相近的层数上评估完。
明白这个区别,能让你更准确地读引擎分析。当选择性深度远高于名义深度时,引擎对关键变化的判断是有把握的,但某些旁支可能只是草草看过。当两个数字接近时,说明它对整个局面的探索比较均匀。
多变化分析(Multi-PV)
默认情况下,Stockfish 只找那一步最佳着法。但你可以让它同时分析多条主要变化,也就是 Multi-PV。比如把 Multi-PV 设成 3,引擎就会同时给出最好的三步棋。
这里有个不小的取舍。Multi-PV 分析更慢,因为引擎没法那么狠地剪枝——它得同时盯住好几个不错的选择,而不是把全部力气用来证明某一步最好。粗略地说,Multi-PV 3 达到同样层数所花的时间,大约是单变化分析的 1.5 到 2 倍。
但用来复盘,Multi-PV 的价值极高。它不只告诉你最佳着法是什么,还告诉你有哪些替代方案、彼此差多少。很多时候你走的那一步其实是第二或第三选择,跟引擎的首选几乎一样好。没有 Multi-PV,你根本不会知道这一点——你只会看到自己没走「最佳」的那步,然后错误地认定自己下错了。
在 ChessOnyx,我们提供 Multi-PV 分析,好让你看到完整的图景。知道三步棋彼此都在 0.1 以内,和只知道自己没走出引擎唯一的首选,完全是两回事。
各类任务的深度参考
不同的分析任务需要不同的深度。按你想达成的目标,可以这样参考:
快速复盘(找出明显错误):深度 18 到 20 就够了。在这个层数上,Stockfish 能抓住所有战术漏着和大部分位置上的失误。第一遍过自己的棋局,用这个正合适。
认真分析(理解战略决策):深度 22 到 26 是最舒服的区间。在这个范围里,引擎的位置判断变得可靠,你可以相信它对安静局面的评价。你大部分的分析工作都该在这个深度进行。
关键局面分析(开局准备、性质不明的弃子):深度 28 到 32 甚至更高。当你需要最高的可靠性时——评估一个理论新着、掂量一次弃子、分析一个关键残局——就让引擎往深里算。在这个层数上,多数局面的评分已经相当稳定。
通信棋或开局理论:深度 35 以上,或者云端分析。对于赌注最高、每十分之一个兵都要计较的分析,你需要尽可能深的结果。实际操作上,这意味着在强力硬件上让 Stockfish 长时间运行。
记住这些是参考,不是规矩。合适的深度取决于局面、你的目标以及可用的时间。一个纠缠的战术局面比一个简单残局需要更多层数;一盘重要的比赛用棋,值得比随手下的快棋分析得更深。
定时间还是定深度
分析一个局面时,你可以设定固定深度(算到第 25 层为止),也可以设定固定时间(算 30 秒)。两种做法各有道理,但值得弄清它们的差别。
固定深度不管局面多复杂,都保证了最低限度的分析质量:每个局面得到的深度一样。缺点是简单局面很快就到达目标然后停下,复杂局面则可能要等上很久。
固定时间则会自然地随复杂度调整。简单局面很快就能挖到很深,复杂局面则可能只到较浅的层数。这恰好模仿了强手分配思考时间的方式——关键时刻多花,例行着法少花。
就复盘而言,按每步固定时间通常更实用。在现代计算机上给每步 10 到 15 秒,对多数局面都能提供极好的分析质量:引擎在简单局面里自然算得更深,在复杂局面里则多下功夫。
如果是研究某个具体局面,就让引擎一直算到评分稳定为止。盯着评分随层数增加的变化,当它不再有明显改变时(每层的波动小于 0.05),引擎就已经得出了可靠的判断。视局面而定,这可能花 10 秒,也可能花 10 分钟。
结语
搜索深度是引擎分析的根基,但它远比「数字越大越好」要微妙。弄懂选择性搜索如何运作、深度在什么时候最要紧、以及如何为自己的分析目标挑选合适的层数,会让你成为一个高效得多的引擎使用者。
关键的一点在于:深度是手段而非目的,目的是得到可靠的局面评估。与其盯着某个特定的层数不放,不如看评分是否已经稳定下来。而且要记得,即便在中等深度上,Stockfish 提供的分析质量也是几年前难以想象的。用好它,它会改变你对这项运动的理解。