ELAI S.r.l.

两个 AI 模型相差两个百分点:究竟差在哪些案例上?

从 90% 到 92%:为什么仅看准确率不足以比较模型。通过两个可复现算例,逐步推导 McNemar 精确检验。

两个 AI 模型相差两个百分点:究竟差在哪些案例上?

仪表板上的数字掩盖了真正的比较

一家企业比较两个零件图像分类模型。在同一组 1,000 张图像上,A 答对 900 次,B 答对 920 次。B 提升了两个百分点,这足以证明改进可靠吗?要回答,需要找回仪表板丢失的信息:B 是否只修正了 A 的错误,还是修正很多案例的同时,又让几乎同样多的案例变差?这两种情形的最终百分比可以完全相同,但比较的统计证据会有很大区别。

摘要。我们构造两个样本量相同、边际准确率相同,但结果不一致案例数不同的合成表。将 McNemar 精确检验推导为条件于“只有一个模型正确”的案例上的二项比较。两个比较均显示两个百分点的观察优势,但第一个得到的 p 约为 0.00000191,第二个约为 0.1565。本文解释这种差异意味着什么、为什么它不衡量模型的商业价值,以及需要哪些假设。计算与图形可复现,没有训练模型,也没有使用企业数据进行评估。

每张图像对应两个结果

最重要的预备知识是理解配对。每张图像都有标识符、参考标签,以及两个结果:A 是否正确、B 是否正确。两个结果针对的是同一个案例。困难图像可能同时难倒两者,简单图像可能两者都答对,因此这不是两个独立实验。定义四个计数:a 表示都正确,b 表示只有 B 正确,c 表示只有 A 正确,d 表示都错误。字母只是本文约定,比较软件或书籍时需要核对表格方向。

比较a:都正确b:仅 Bc:仅 Ad:都错误
I90020080
II820100800

比较 I 中,B 保留了 A 的全部 900 个正确答案,另增加 20 个;剩余 80 个案例两者都错。比较 II 中,B 修正 A 的 100 个错误,却在 A 原本答对的图像上引入 80 个退步,净增加仍为 20。这是专门构造的两组结果,而非两次真实评估。第二组没有共同错误,刻意采用极端结构,以显示百分比抹去的信息。我们并不暗示真实模型通常具有这种错误结构。

现在写出仪表板的计算。N 为图像总数,Acc 为回答正确的比例。差值 Δ̂ 读作“估计的 delta”,等于 B 的准确率减去 A 的准确率。相减时 a 被抵消,因为共同答对不会偏向任何一方。剩下的是 b 与 c 的差除以 N,结果为 0.02,即两个百分点,而不是相对提升 2%。相对于 90%,准确率的相对提升约为 2.22%;本文始终使用百分点避免歧义。

N = a + b + c + d Acc(A) = (a + c)/N Acc(B) = (a + b)/N Δ̂ = Acc(B) − Acc(A) = (b − c)/N = 20/1000 = 0.02

我们提出的统计问题是什么?

样本描述是确定的:两个表中 B 都多答对 20 次。统计推断则针对样本可能来自的案例总体。我们问的是,两个固定模型在该总体中的成功概率是否相同。原假设 H₀ 表达这种相等,并不表示它们总是给出同样回答,也不表示它们会在相同图像上犯错。差别很大的模型也可能具有相同总体准确率。检验针对成功率差异,而非架构内部的相似性。

假设图像独立采样自同一个目标总体,参考标签正确,模型及阈值在查看该测试集之前已经固定。要求独立的是不同图像对应的结果对,而不是同一张图像上 A 与 B 的结果。同一零件的连续帧、重复图像、几乎相同的多个裁剪都容易违反前一种独立性。数学上精确的检验无法修复有缺陷的数据采集方案。必须明确这些条件,因为它们限定了结果能支持的结论。

从不一致案例到理想硬币

设 πb 为总体中只有 B 正确的概率,πc 为只有 A 正确的概率。与计数的代数关系相同,总体准确率差为 πb−πc,所以 H₀ 等价于 πb=πc。观察到不一致案例时,已经知道有一方获胜;在 H₀ 下是哪一方?B 获胜的条件概率为 πb/(πb+πc),分母大于零时等于 1/2。这就是理想硬币的来源,并不是假设模型真的掷硬币回答。

H₀: πb = πc πb/(πb + πc) = 1/2 m = b + c K | m, H₀ ~ Binomial(m, 1/2)

m 是观察到的不一致案例数,I 中为 20,II 中为 180。K 是随机变量,表示 H₀ 成立时,在 m 个不一致案例中可能观察到的 B 获胜次数,实际观察值为 b。条件于 m 意味着检验过程中把这个数量固定。在采样假设下,获胜方向服从二项分布。硬币类比只适用于这些条件方向,并不描述图像容易的概率或总体错误概率。

不依赖黑箱,构造 p 值

我们要衡量:假设 H₀ 成立,至少如此不平衡的胜负分布有多罕见?采用双侧检验,因为偏向 A 或 B 都算偏离。对每个可能的 k,二项系数 C(m,k) 表示在 m 个位置安排 k 次 B 获胜的方法数;每种方向序列的概率为 2⁻ᵐ。先将尾部概率累加至 b、c 中的较小值,再乘二纳入对称的另一侧尾部。结果最多取一,因为概率不能超过一。

P(K = k | m, H₀) = C(m,k) / 2ᵐ p_exact = min[1, 2 × Σ(k=0…min(b,c)) C(m,k) / 2ᵐ]

I 中 b=20、c=0,观察到的极端情况是全部 20 次胜利都属于 B。双侧检验还包括相反极端,即全部属于 A。两种序列的总概率为 2/2²⁰=1/524288,约 0.00000190735。这不是 B 更差的概率,也不是原假设为真的概率,而是在原假设模型内、条件于 20 个不一致案例,得到至少同样极端结果的概率。这个区分避免把 p 值误当成对产品的置信度。

II 中,检验看到 B 获胜 100 次,A 获胜 80 次。H₀ 下分布中心为各 90 次,B 的观察值比中心多十次。将 K≤80 与 K≥100 的概率相加,得到约 0.156531。如果事先设定显著性阈值 α=0.05,第一个比较拒绝 H₀,第二个则不拒绝。不拒绝并不证明相等,只表示这个检验在这些数据和此阈值下,没有足够证据拒绝原假设。

H₀ 下条件于 m 个不一致案例的二项分布。红柱为 p 值累加的双侧尾部,虚线为观察值 b。面板 I 的尾部在线性刻度下几乎不可见。面板 II 为便于阅读只显示 55–125,计算仍包含 0–180 全部取值。可打开图片放大。
H₀ 下条件于 m 个不一致案例的二项分布。红柱为 p 值累加的双侧尾部,虚线为观察值 b。面板 I 的尾部在线性刻度下几乎不可见。面板 II 为便于阅读只显示 55–125,计算仍包含 0–180 全部取值。可打开图片放大。

阅读图时先看蓝色中心:如果不一致方向平衡,这些结果最可能出现。再看黑线,它在第一面板位于极端,第二面板仍接近中央区域。单根柱高不是 p 值,需要累加两侧红色尾部。两幅图纵轴刻度不同,不能直接比较柱高并解释为“B 有多好”。图展示的是检验模型,不是实测性能。

为什么退步案例数会改变不确定性

不使用假设检验也能理解差异。对每张图像定义 Dᵢ:只有 B 正确时为 +1,只有 A 正确时为 −1,两者都正确或都错误时为零。这些值的平均数就是 Δ̂。I 有二十个 +1,没有 −1;II 有一百个 +1 和八十个 −1。净和仍为二十,但第二种情形来自更多正负项抵消。当大量胜利和失败互相抵消时,更换样本更容易改变净优势。

下面的公式将直觉量化。Dᵢ² 恰好在不一致案例中等于一,因此平方和为 m。差值的样本方差为 [m−NΔ̂²]/(N−1)。再除以 N 并开平方,得到平均差的标准误估计。“标准误”表示估计的采样变动,不是模型的分类错误数。它不是精确 p 值,本文不会用这个近似替代刚推导的二项检验。

Δ̂ = (Σᵢ Dᵢ)/N Σᵢ Dᵢ² = m s²D = [m − NΔ̂²]/(N − 1) SE(Δ̂) = sqrt[(m/N − Δ̂²)/(N − 1)]

在 N=1,000、Δ̂=0.02 均相同的情况下,I 的标准误约为 0.00443,II 约为 0.01341,分别为 0.443 和 1.341 个百分点。若假装两种准确率来自独立样本,忽略配对的公式会对两者都给出约 1.279 个百分点,恰好丢失了我们想理解的区别。配对并不总保证更小的标准误,它取决于结果之间的关系。第二个比较说明,忽略这种关系也可能低估变动。

另一个边界涉及这 1,000 张图像的来源。如果它们就是全部关注对象,那么这个全集上的差异就是观察值,检验不会增加新图像。只有将样本连接到未来案例生成过程或更大总体时,推断才有意义。为了方便选择的公共基准并不会自动代表生产线条件。即使算术无误,也应说明希望支持什么推广、排除了哪些案例,以及现有案例如何选取。

精确不代表普遍适用

精确检验直接累加二项概率,不使用卡方近似。“精确”指假设下的参考分布,并不意味着标签完美或结论确定。也存在渐近统计量 (b−c)²/(b+c),与一个自由度的卡方分布比较,还有连续性校正版本。不一致案例较少时,近似可能不理想。本文两个示例都使用相同的二项计算,避免不同检验版本干扰比较。

若 m=0,则没有观察到不一致,代码按无方向性证据的约定返回 p=1,但这不能证明模型会在所有未来图像上一致。分布的离散性同样重要:固定 m 时,并非所有 p 值都可能出现,精确检验可能保守。5% 阈值不是自然定律,规则应在比较之前声明。看到 0.1565 后再改阈值,就是让方案迎合结果。

从统计显著性到业务决策

p 值小不代表 B 就值得发布。两个案例中观察到的优势仍然都是两个百分点,还需评估效应大小、不确定性、推理成本和错误后果。工业质检中,漏检关键缺陷与误拒合格零件可能成本悬殊,但准确率把两者都记为一次错误。检验前要判断该指标是否真正回答业务问题。比较加权损失需要适用于那些损失的分析,而不是随意把加权计数代入 McNemar 公式。

检验针对两个已经固定的模型。如果用其他数据、随机种子或超参数重新训练 A 与 B,可能得到不同模型,这种变动并不包含在这里的计数中。因此,本文不是一般性地比较两种学习算法。同样,如果在同一测试集上比较几十个候选后才选出 B,就需要考虑选择过程。这里的程序不能消除多重比较或反复使用测试集的问题。问题、采样与结论之间的联系必须保持明确。

可复现代码,以及不能虚构的结果

附带代码包包含两张表、完整原假设分布以及生成程序。exact 函数使用整数组合数和 Fraction 将尾部概率作为有理数累加,只在输出时转为小数。case 函数重建准确率、不一致数、差值与标准误。断言检查两个情形的准确率相同,且 p 值分别位于 0.05 的两侧。没有使用随机数,因此不适用随机种子。下方代码片段要求 experiment.py 位于同一解压目录。

拟议的企业评估应保留每个案例上每个模型的结果,而不只是总计。这样才能检查退步案例、核验标签,并将变化与事先定义的错误类别关联。本文没有执行这样的评估:没有收集图像,没有邀请操作人员,也没有比较 EL-AI 产品。封面仅为示意。这里展示的结果是数学关系和合成表的计算,应用方案仍需依据实际数据调整。

两个百分点,并不是全部故事

因此,最初问题的答案很具体:在相同案例上评估两个模型时,最终准确率不够。还需知道各自修正了哪些错误,又引入哪些退步。二十次改进而无退步,与一百次改进加八十次退步,净结果相同,统计证据却不同。精确检验让这种差异在明确假设下可以核验。最终决策还需要错误的业务含义;好的评估报告既展示数字差异,也展示使解释可信的条件。

方法来源与本文限制

查阅了 NIST Dataplot 的一手文档“McNemar Test”,更新于 2023 年 12 月 11 日,内容包括配对比较定义、假设,以及精确和渐近版本。实质假设是不一致方向概率相等;我们不把该页描述标题中的“independence”理解为检验两个模型是否独立。本文的计数、数值讲解、代码和图均为自行构建的教学示例,不复刻 NIST 演示数据集,也不是原创研究或经过同行评审的论文。

NIST Dataplot — McNemar Test (2023-12-11).

from experiment import case
for label, counts in [('I', (900,20,0,80)), ('II', (820,100,80,0))]:
    r = case(*counts)
    print(label, r['A_accuracy'], r['B_accuracy'], r['discordant'])
    print('exact p', r['exact_p'])
    print('paired SE', r['paired_standard_error'])

代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 10 月 9 日。