评测动态

01

10 月 1 日,一篇研究中小模型组合评测的论文提交至 arXiv。作者构建了由多个小模型、反馈回路和小模型评审器组成的 agent 系统,并在 IFEval 的 541 条提示上报告,最佳组合取得 97.34% 的严格提示级准确率,比论文所测最强单体大模型高 5.81 个百分点。研究没有只报告任务分数,还记录每条样本的成本、输入与输出 token 构成、延迟、反馈回路挽回的失败,以及“有效输出吞吐量”。这组结果说明的对象是完整组合系统,而非其中某一个小模型的单次生成能力;更高准确率同时使用了额外的测试时计算与编排过程。当前可核实内容主要来自论文摘要和作者报告,尚不能视为独立复现,也不能在缺少相同模型版本、价格、并发和延迟设置时直接外推到其他部署环境。Beyond Leaderboards: Tokenomics of Agentic Small Language Model Ensembles

评测研读

1 / 6

Precision、Recall 与 F1:同一个“分类得分”背后可能是三种不同的取舍

假设一个模型负责检查客服回复是否存在事实错误。测试集有 100 条回复,其中 20 条确实有错。模型指出了 15 条,人工核查后发现其中 12 条真的有错,另外3条其实正确。这个结果可以从几个方向阅读:模型发现了多少真实错误,它发出的警报有多少可信,以及整体预测有多少正确。Precision、Recall、F1 和 Accuracy 分别压缩了其中不同的部分。

先把四种结果列清楚。模型指出且实际有错的 12 条是真阳性;指出但实际无错的3条是假阳性;没有指出但实际有错的8条是假阴性;剩余77条是真阴性。这里的“阳性”只是评测者选定的关注类别,本例把“存在事实错误”定义为阳性,不表示它具有正面含义。

Precision 通常译为精确率,计算的是 12 ÷ (12 + 3) = 80%。它回答:“模型判为有错的回复中,有多少真的有错?”Recall 通常译为召回率,计算的是 12 ÷ (12 + 8) = 60%。它回答:“所有真正有错的回复中,模型找出了多少?”两者共享真阳性,但分母不同:精确率受误报影响,召回率受漏报影响。scikit-learn 对精确率、召回率及混淆矩阵的定义

如果这个检查器只用于把少量高风险案例提交给昂贵的专家复核,精确率可能很重要,因为过多误报会耗尽审核能力。如果它负责阻止事实错误直接上线,召回率可能更重要,因为漏掉一条严重错误的代价可能远高于多复核几条正常回复。指标本身不会决定哪种错误更重要;它只是按照已经选定的方向计数。

Accuracy,即准确率,在本例中为 (12 + 77) ÷ 100 = 89%。它把正确发现错误与正确放过正常回复都计入分子。89% 看起来比 60% 的召回率好得多,但不能据此选择一个数字作为“模型真实能力”。两者回答的是不同问题:准确率描述全部样本的正确分类比例,召回率只观察真正有错的样本有没有被找到。

2 / 6

F1 怎样合并两项信息,又丢掉了什么

F1 是精确率与召回率的调和平均数,也可以直接写成 2TP ÷ (2TP + FP + FN)。在上述例子中,F1 为 2 × 0.8 × 0.6 ÷ (0.8 + 0.6),约为 68.6%。调和平均会明显惩罚两项中较低的一项:精确率很高而召回率很低,或反过来,都难以取得高 F1。scikit-learn 的 F1 定义与实现

F1 看似把两个数字变成一个方便排名的总分,但它没有使用真阴性的数量。仍以前述检查器为例,如果保持12个真阳性、3个假阳性和8个假阴性不变,把测试集中正常回复从80条扩大到800条,F1 仍为68.6%,因为新增的都是真阴性。这可能正合用途:评测者只关心错误案例能否被找到,以及警报是否可靠。它也可能隐藏问题:如果业务必须同时衡量对正常回复的正确放行,单独的 F1 并没有完整呈现这一点。

F1 还默认精确率和召回率具有同等重要性。若漏报比误报昂贵,可以使用更重视召回率的 Fβ;若误报成本更高,则可令 β 小于1,更重视精确率。scikit-learn 文档明确把 Fβ 描述为二者的加权调和平均,并指出 β = 1 时才是两者等权的 F1。Fβ 与精确率、召回率的关系

“等权”也不等于现实代价相等。一次严重事实错误漏报可能造成损失,而一次误报可能只多花几分钟审核时间;这两个事件无法仅凭 F1 公式自动换算。选择 F1,实质上接受了一种不直接表达业务成本的折中。若错误后果能够估价,更合适的做法可能是分别报告精确率、召回率和预期成本,而不是依靠单一 F1 决策。

此外,不同的精确率与召回率组合可以得到相同或相近的 F1。一个模型可能精确率90%、召回率60%,另一个可能精确率60%、召回率90%;两者 F1 相同,使用体验却不同。F1 综述研究指出,单一 F 值会丢失组成它的精确率与召回率信息,因此比较结果时仍应保留这两个原始指标。F-measure 的性质与局限综述

3 / 6

正类是谁,会改变数字的含义

二分类报告必须说明哪个标签被当作正类。仍使用同一组预测,如果把“回复正确”改为正类,精确率和召回率会围绕另一类样本重新计算,结果不再是80%和60%。因此,“该模型 F1 为68.6%”并不完整;至少还需要说明这是针对“事实错误”这一正类计算的 F1。

这在模型评审器中尤其容易混淆。一个拒答分类器可以把“应拒答”设为正类,也可以把“可回答”设为正类;内容审核可以关注违规,也可以关注合规。两份报告即使使用同一批预测,只要正类定义相反,精确率和召回率的业务解释就会交换方向。

标签构造也决定了什么算真阳性。如果一条回复同时包含轻微遗漏与严重捏造,而评测数据把二者都压成“有错”,模型找到任意一种都可能获得相同的分类奖励。此时 F1 衡量的是二元标签复现能力,不能告诉读者模型是否擅长识别更严重的错误。要回答后一个问题,需要按错误类型或严重度拆分数据,或建立有序评分。

4 / 6

多分类中的 macro、micro 和 weighted F1 为什么可能给出三个答案

当任务有多个类别时,可以先为每个类别分别计算一次 F1,再决定如何汇总。常见做法包括 macro、micro 和 weighted。它们使用相同的逐题预测,但选择了不同的计数单位。

用一个教学假设说明。测试集有100条样本:A 类90条,B 类9条,C 类1条。模型把所有样本都预测为 A。它正确分类90条,所以准确率是90%。若把各类别的真阳性、假阳性和假阴性先合并,再计算 micro-F1,结果也是90%。在单标签多分类任务中,只要纳入所有标签,micro precision、micro recall 和 micro F1 都与准确率相同。scikit-learn 对多分类平均方式的说明

逐类看则完全不同。A 类的精确率为90%,召回率为100%,F1 约为94.7%;B 类和 C 类一个都没识别出来,F1 都为0。macro-F1 对三个类别一视同仁,计算 (94.7% + 0 + 0) ÷ 3,约为31.6%。它揭示了模型虽然总体正确率很高,却只会处理多数类。

weighted-F1 也先计算逐类 F1,但再按照各类真实样本数量加权。本例约为90% × 94.7% + 9% × 0 + 1% × 0,即85.3%。它比 macro-F1 高很多,因为占90%的 A 类支配了结果;又低于准确率,因为 A 类自身的精确率受到十个误报影响。

这三个汇总没有谁天然正确。micro-F1 让每条样本贡献相近权重,适合表达整体处理量上的结果;macro-F1 让每个类别贡献相同权重,适合观察少数类别是否被多数类别掩盖;weighted-F1 保留逐类 F1 的计算,再让大类别拥有更大影响。scikit-learn 对三者的定义分别是全局累计计数、逐类无权平均和按真实样本数加权平均。F1 `average` 参数的正式定义

因此,一张表只写“F1 = 0.85”仍然缺少关键信息:正类或类别集合是什么,采用哪种平均方式,各类样本数是多少。不同实现还可能对完全未出现或完全未预测的类别采用不同的零除处理。scikit-learn 默认将相应 F1 置为0并发出警告,也允许改为1或缺失值;这会进一步影响 macro 平均。未出现类别的处理方式

5 / 6

阈值改变后,模型本身没变,Precision 和 Recall 也会变

许多分类器并非直接输出标签,而是输出分数或概率,再由阈值决定是否判为正类。假设事实错误检测器对每条回复输出0到1的风险分数。阈值设为0.8时,只挑出最可疑的少数样本,往往精确率较高、召回率较低;降到0.3时,更多真实错误会被找到,但误报通常也会增加。

因此,F1 不完全是模型的固定属性,而是模型、数据和决策阈值共同产生的结果。两个团队使用同一个模型,一个以0.5为阈值,另一个在测试集上寻找 F1 最高的阈值,所得成绩不能直接比较。后者还可能因利用测试集调参而高估未来表现;阈值应在独立验证集上确定,再在未参与选择的测试集上报告结果。

Precision-recall 曲线通过移动阈值展示这种取舍,Average Precision 则汇总多个阈值下的排序表现。scikit-learn 文档将二者与固定阈值的 precision、recall 和 F1 明确区分,并指出随机预测的 Average Precision 基线等于正类比例。Precision-recall 曲线与 Average Precision

固定阈值 F1 适合回答“按当前决策规则运行,结果怎样”;Precision-recall 曲线更适合回答“如果调整误报与漏报的交换关系,这个模型能提供哪些工作点”。前者接近已确定流程的验收,后者更适合选择阈值或比较模型的排序能力。

6 / 6

读一个 F1 排名时需要确认哪些条件

首先要确认任务结构:是二分类、单标签多分类,还是一条样本可以拥有多个标签。多标签任务中的 micro、macro 和按样本平均又有不同含义;不能只凭名称把它们套用到单标签分类的解释上。

其次要确认类别集合和平均方法。排除“其他”类后计算 macro-F1,与把它纳入计算不是同一个指标;按题量加权与让每类等权也会改变模型优化方向。若测试集的类别比例与实际流量不同,weighted-F1 还会跟着测试集构成变化。

然后要看精确率、召回率、逐类 F1、样本支持数和混淆矩阵。研究实际分类指标的工作指出,指标大小不仅由分类器质量决定,也会受到数据分布和使用情境影响;依赖多个互补指标虽然增加了解释成本,却能避免把一个汇总值当成完整能力。分类指标在实际使用中的解释难题

最后要确认分数是否来自同一阈值选择过程、同一版本数据与同一标签定义。只有这些条件一致,F1 的高低才主要反映模型差异。F1 能有效压缩误报与漏报之间的平衡,但它不会说明真阴性、错误代价、类别重要性和阈值选择过程。知道它忽略了什么,才知道这个数字能够支持哪一种判断。