最后更新:
国际象棋准确率分两步计算。第一步,把引擎以厘兵(百分之一个兵)为单位的评估转换成胜率,称为 Win%。第二步,按每步棋让出了多少 Win% 给它打分:一步什么都没损失的棋得 100%,按 Lichess 公布的公式,让胜率下降 10 个点的一步棋约得 64%。整盘棋的准确率是这些单步分数的平均。
Lichess 公开了它的公式,chess.com 没有。ChessRank 采用与 Lichess 相同的两步,但有自己的校准。下面给出公式、一个用真实数字算出的例子,以及同一盘棋在不同网站得分不同的原因。
从厘兵到胜率
国际象棋引擎以厘兵报告评估,从轮到走棋一方的角度出发。单看厘兵并不能很好地衡量失误:在均势局面丢一个兵影响很大,而在已经多一个车时丢一个兵几乎无关紧要。因此评估会先被转换成胜率。Lichess 使用这条曲线:
Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × centipawns)) - 1)
| 评估 | 优势方的 Win% | 另一方的 Win% |
|---|---|---|
| 0.00 | 50.0% | 50.0% |
| +0.50 | 54.6% | 45.4% |
| +1.00 | 59.1% | 40.9% |
| +2.00 | 67.6% | 32.4% |
| +3.00 | 75.1% | 24.9% |
| +5.00 | 86.3% | 13.7% |
曲线在均势附近陡峭,在两端平缓。关键就在这里:同样的子力损失,在均衡局面中会损失大量胜率,在已定局的局面中只损失很少。
从胜率到单步准确率
对每一步棋,引擎都会评估走棋前后的局面,两次都从走棋方的角度出发。Win% 的下降再通过第二个公开公式转换为该步的准确率:
Accuracy% = 103.1668 × exp(-0.04354 × (winPercentBefore - winPercentAfter)) - 3.1669
完整计算示例
- 你走棋之前,引擎显示对你 +1.00。Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × 100)) - 1) = 59.1%。
- 你走了一步棋,之后从你的角度看评估为 -0.50。Win% = 45.4%。
- 下降幅度为 59.1 - 45.4 = 13.7 个胜率点。
- 准确率 = 103.1668 × exp(-0.04354 × 13.7) - 3.1669 = 这一步得 53.7%。
对于其他下降幅度,同一公式给出这些值:
| 该步损失的 Win% | 单步准确率(Lichess 公式) |
|---|---|
| 0 | 100.0% |
| 2 | 91.4% |
| 5 | 79.8% |
| 10 | 63.6% |
| 20 | 40.0% |
| 30 | 24.8% |
可以看到,准确率在最初几个点下降很快,随后趋于平缓。一连串小的不精确着法,代价比大多数棋手以为的要大。
整盘准确率如何汇总
整盘分数并不是单步分数的简单平均。设想五步棋分别得 100、100、100、100 和 20。算术平均是 84%。由最差值主导的调和平均约为 56%。每个网站都会在这两个数字之间选择自己的方式。
- Lichess 按滑动窗口内局面的波动程度为每步加权,再把这个加权平均与调和平均结合。在尖锐、起伏的局面中走出的棋权重更大。
- Chess.com 不公开它的汇总方法。
- ChessRank 把算术平均和调和平均混合,因此一次漏着对整盘分数的拉低比简单平均更多,但比纯调和平均更少。
由同样的下降幅度得出的着法标签,请看漏着 vs 错误 vs 不精确:区别是什么?基于原始厘兵的旧指标,请看厘兵损失(ACPL)详解。
chess.com 的 CAPS2:哪些公开,哪些不公开
chess.com 的准确率由专有系统 CAPS2 计算。公开的是产品的表现:Game Review 给双方各一个准确率,为每步棋打标签,并显示 Game Rating。chess.com 帮助中心称,它“通过将你的着法质量与你所在等级分水平的棋手应有的表现进行比较来确定”。免费账户每天可以获得一次完整的 Game Review。Platinum 提供不限次数的 Game Review,Diamond 另外提供不限次数的教练讲解。
不公开的是:从评估到单步分数的公式、整盘分数的权重、引擎设置以及标签的确切阈值。任何声称知道 CAPS2 公式的人,要么是在猜,要么是在逆向推算。
ChessRank 如何分析你的对局
本节是 ChessRank 分析方式的参考说明。每一点都取自网站代码。
- 引擎。编译为 WebAssembly 的 Stockfish,在你的浏览器、你自己的设备上运行。无需安装任何东西。
- 深度。对局中的每个局面都计算到深度 14。对局分析为每个局面保留引擎的两条最佳变化,这是 Great 标签所需要的。Report 一次分析很多盘棋,只保留一条变化,因此从不给出 Great,它对某盘棋给出的数字也可能与对局分析略有不同。
- 预先计算的开局。约 10,000 个开局局面已存有预先算好的评估,其中 99.45% 在深度 40 或更深,每个最多有四条引擎变化。当你对局中的某个局面属于其中之一时,会直接使用存储的评估,而不重新计算。
- 残局库。Syzygy 残局库用于局面分析,以及对局分析中可选的 Go deeper 按钮。它们从不用于一盘棋的准确率、标签或等级分。
- 评分在哪里进行。你的浏览器把着法和引擎评估发送到 ChessRank 的评分服务器,服务器返回标签、准确率和等级分估计。服务器不会保存这盘棋。
- Win%。评估通过一条与 Lichess 形状相同、但斜率不同的逻辑曲线转换为胜率。极大的评估会被封顶,强制将死算作一个非常大的优势,杀棋越远,这个优势越小。
- 单步准确率。Win% 下降量的指数曲线,形状与 Lichess 相同,常数则依据 chess.com 对真实对局的复盘拟合。定式着法和只有一种合法走法的着法得 100%。如果一方的每一步都是定式、被迫着法或引擎首选,这一方的准确率恰好是 100%。
- 整盘准确率。单步准确率的算术平均与调和平均的混合。各阶段(开局、中局、残局)的准确率使用更大的调和平均占比。
- 标签。不精确、错误和漏着取决于 Win% 下降的幅度。Best 表示引擎首选。Great 是在第二好的变化明显更差时的最佳着法。Brilliant 是引擎确认成立的弃子。Miss 表示在没有输掉对局的情况下错过了胜势或强制将死。Book 来自一份已命名开局的列表,Forced 标记只有一种合法走法的着法。一盘棋的最后一步从不会被标为不精确、错误或漏着。ChessRank 默认显示自己的名称,可在设置中切换为常见名称。
- 费用。免费,无需账户,没有每日次数限制。
为什么同一盘棋在每个网站得分不同
| Lichess | Chess.com | ChessRank | |
|---|---|---|---|
| 引擎 | 服务器分析使用 Stockfish 19,另有浏览器分析 | 未公开 | 在你的浏览器中运行的 Stockfish(WebAssembly) |
| 搜索深度 | 我们引用的资料未说明 | 未公开 | 每个局面 14,预先计算的开局为 40 或更深 |
| 运行位置 | Lichess 服务器或你的浏览器 | chess.com 服务器 | 引擎在你的浏览器,评分在 ChessRank 服务器 |
| 准确率公式是否公开 | 是 | 否(CAPS2) | 方法如上所述,常数未公开 |
| 着法标签 | 不精确、错误、漏着 | 从 Brilliant 到 Blunder 的完整标签 | 从 Brilliant 到 Blunder 的完整标签,外加 Forced |
| 单盘等级分估计 | 无 | 有(Game Rating) | 有 |
| 免费限制 | 每天 40 次服务器分析,浏览器分析不限 | 每天 1 次完整 Game Review | 没有每日限制 |
有三件事会改变这个数字。不同的引擎和深度看到的最佳着法不同,在尖锐局面中尤其如此。不同的曲线会把同样的评估下降换算成不同的单步分数。不同的汇总规则对坏棋的加权也不同。关于引擎之间分歧的更多内容,请看为什么我们的结果可能与其他平台略有不同?想了解准确率与棋力的关系,请读按等级分看国际象棋准确率。关于单盘实力数字,请读chess.com 的 Game Rating 详解。
常见问题
国际象棋准确率的公式是什么?
Lichess 分两部分公开。Win% = 50 + 50 × (2 / (1 + exp(-0.00368208 × centipawns)) - 1) 把评估转换为胜率,Accuracy% = 103.1668 × exp(-0.04354 × (winPercentBefore - winPercentAfter)) - 3.1669 按损失的胜率给每步打分。chess.com 不公开它的公式。
CAPS2 是什么?
CAPS2 是 chess.com 在 Game Review 中计算准确率所用的专有系统。chess.com 不公开它的公式、权重或引擎设置。公开的只有结果:每方一个准确率、每步一个标签以及一个 Game Rating。
为什么我在 Lichess 和 chess.com 上的准确率不同?
两个网站使用不同的引擎和设置、不同的从评估到单步分数的曲线,以及不同的整盘平均方式。Lichess 还会按局面的波动程度为每步加权。同一盘棋相差几个百分点是正常的。
国际象棋中的胜率是什么意思?
胜率是把引擎评估换算成 0 到 100 之间的获胜机会。在 Lichess 曲线上,+1.00 约为 59%,+3.00 约为 75%。准确率公式衡量的是每一步让出了多少这种机会。
准确率和平均厘兵损失是一回事吗?
不是。平均厘兵损失把原始评估下降相加,所以丢一个兵在胜定局面和均势局面中代价相同。准确率先把评估换算成胜率,因此同一个兵在已定局的对局里代价小得多。
ChessRank 计算整盘准确率时会用残局库吗?
不会。Syzygy 残局库只用于局面分析和可选的 Go deeper 按钮。准确率、着法标签和等级分估计来自深度 14 的 Stockfish 计算以及预先计算的开局局面。
资料来源
Win% 与准确率公式以及 Lichess 整盘汇总方式的说明来自 lichess.org(lichess.org/page/accuracy),Lichess 的分析次数限制来自 lichess.org/features。Game Rating 的定义和 Game Review 的限制来自 chess.com 帮助中心。关于 ChessRank 的信息来自其自身代码。ChessRank 是独立项目,与 Chess.com 或 Lichess 无隶属关系,也未获得其认可或赞助。