用于 ML 研究的 GPU · 无需 KYC 的加密货币支付
IteraGPU
方法 / 质量与诊断

将分数转化为可验证的决策。

分析错误就是要找出那些能解释结果的案例,然后选择一种其效果可以被检查的修正方式。请保留带有标识符和参考标签的预测结果,将格式错误与内容错误分开,然后检查重要的类别。一个总体分数既不能说明哪些案例失败,也不能说明原因。好的下一项实验会修正一个具体的机制,而不会掩盖新的回归。

01 /

在汇总之前先保存输出

分析始于将输入、参考标签和预测结果进行连接。请检查每个预期标识符都恰好出现一次。请将错误的回答与未完成的请求、重复项或无法读取的输出区分开。这些问题有不同的补救办法,不应在计算平均值时被掩盖。

请将原始输出与它的规范化版本、模型版本、提示词、设置以及判定原因一起保存。一次会悄悄改变歧义日期的转换可能会制造出虚假的成功。请从验证集开始探索。如果最终测试集被用来发明下一次修正,就需要一个另行保留的新确认集。

技术来源: scikit-learn 1.9 — 让测试集远离模型选择

02 /

结合样本数量阅读混淆矩阵

对于每个输入对应一个类别的分类,混淆矩阵交叉呈现参考类别和预测类别。在此处以及 scikit-learn 使用的约定中,行表示参考标签,列表示预测结果。在归一化之前请保留原始数量:没有样本数量的百分比可能会夸大结论的可靠性。

以下示例是虚构的,仅用于算术演示。一百张工单分布在账单、访问和删除三类中。对角线包含 54 + 24 + 5 = 83 个正确答案,即 83%。这个总数掩盖了删除类别:10 张预期工单中只有 5 张被识别出来。没有任何模型或 GPU 产生过这些数字。

Illustrative example — rows: reference; columns: prediction; unit: tickets
参考预测为账单预测为访问预测为删除实际总数
账单545160
访问424230
删除41510
预测总数62308100

技术来源: scikit-learn 1.9 — 混淆矩阵的定义

03 /

将精确率、召回率与实际后果关联起来

对于删除类,精确率为 5/8 = 62.5%:在归入该类别的工单中,有五张是正确的。召回率为 5/10 = 50%:该类别中有一半的工单被找回。F1 为 2 × 5 / (2 × 5 + 3 + 5),约等于 55.56%。三个假阳性和五个假阴性描述的是不同的问题。

账单、访问和删除各类的 F1 分别为 88.52%、80% 和 55.56%。它们的非加权平均值,即 macro-F1,约为 74.69%。它是对 83% 正确率的补充,但不能取代样本数量。如果某个类别在参考标签或预测结果中缺失,某些指标可能无法定义:请说明所采用的约定,而不是把这种情况隐藏在平均值中。

精确率 = 真阳性 / 阳性预测;召回率 = 真阳性 / 阳性参考。Macro-F1 = 按类别分别计算的 F1 的平均值。

技术来源: scikit-learn 1.9 — 精确率、召回率、F1、平均值和除零

04 /

构建一个简短且与行动相关联的分类体系

错误类别应有助于决定检查什么。先从几个类别开始,每类配一个定义和一个代表性示例。添加一个主标签来统计案例而不重复计数,若多种现象并存,再添加次级标签。保留一个「待检查」类别,而不是强行给出解释。

这套分类法是一个供实际使用的提案,不是自动诊断。被截断的文档也可能包含指代歧义。某个标签的出现频率描述的是被复核的案例;它还不能证明存在某个原因。保留支持你判断的输入片段,并区分观察到的原因、假设和缺失的信息。

需根据任务调整的初始分类法
主要错误需要检查什么下一步可做的实验
输入不完整截断、缺失片段、错误拼装修正准备流程后重跑相同案例
格式无效出现禁止的字段或类别,无法解析修改输出约定,同时检查内容
内容不正确字段错误、类别混淆测试一条针对性的指令或一个示例
参考答案存在争议标注模糊、指令自相矛盾先裁定,再对所有变体为参考答案建立版本
执行不完整中断、超时、结果缺失处理流程问题;在总结中保留该失败
05 /

信息抽取时,同时统计字段和文档

格式合法的 JSON 并不能保证取值正确。固定允许的规范化方式:规范日期、小数分隔符、空格或类别代码。区分字段缺失、凭空编造的值和允许的弃权。文档中不存在的值,不应为了提升填充率而用猜测替代。

下面是第二个说明性计算,与分类表无关。五十份文档各有三个预期字段,共 150 个值。假设 38 份文档完全正确,6 份有两个字段正确,6 份只有一个。这样得到 38 × 3 + 6 × 2 + 6 × 1 = 132 个正确值,即 88%。然而,若三个字段都要求正确,只有 38/50 = 76% 的文档完全合格。

那 18 个错误值涉及十二份文档。不要把她们说成十八份有问题的文档。按用途不同,有用的单位可以是经过核对的字段,也可以是完全合格的文档;请在比较前定义好单位。保留按字段划分的结果,以便知道困难来自日期、金额还是类别。

虚构的抽取任务——50 份文档中每份都有三个必填字段
文档类型文档每份文档中正确的字段数正确字段总数
完全正确383114
一个错误6212
两个错误616
合计50—150 个中有 132 个
06 /

在重跑一轮实验前先选择修正方案

按后果和影响范围排优先级,而不仅仅按行数多少。在虚构矩阵中,如果项目已将这一类别定为关键,那么 5 个「删除」错误可能比 6 个「发票」错误更值得优先复核。这种优先级属于项目约定;表格本身无法凭空推断业务严重性。

提出一个可检验的假设:「长输入在预处理阶段丢失了关键片段」。选择一项便于检验该假设的修改,并保持其他条件不变。同时添加示例、更换模型并增加上下文,可能会提升得分,但已无法将效果归因于单一修正。

  • 除错误外,也复核一些成功案例,以确认判定标准被一致地应用。
  • 在相同的标识符和参考案例上比较各变体;语料库的任何变动都要单独标注。
  • 区分已修正的错误、持续存在的错误、新出现的错误和未变化的案例。
  • 还要重放目标类别之外的示例,以查找回归问题。
07 /

在不让回归被掩盖的前提下检查增益

配对计算能揭示净得分所掩盖的东西。在一百张虚构工单中,假设修正了 9 个错误,但有 4 个原本正确的变成了错误。总成绩从 83 变为 83 + 9 − 4 = 88 个正确回答。增益为 5 个百分点,同时有 4 个回归需要检查。这并不意味着获得了 9 项修正而没有任何代价。

决策记录会保留前后对照表、已修正的用例、新出现的错误、修正版本以及已通过的判定标准。如果某项关键规则仍然被违反,平均分的提高不足以接受该变体。随后在可接受的方案之间比较成本与耗时;让一个已被否定的结果变快,并不能解决质量问题。

08 /

把结论限制在已考察的范围内

一个引人注目的错误未必具有代表性。如果你主要复读的是长条目或某一稀有类别的失败案例,请说明这种选取方式,不要把它们的出现频率当作整个语料的频率来呈现。同时也要保留未裁定的用例:它们界定了你这次评估的不确定性。

当另一位读者能够找回该条目、理解判定并核实所提出的修正时,你的分析才是可用的。它既不证明某个生成回答的内部成因,也不保证未来的质量。在选定修正方案后,再进入单独保留的最终数据集,然后把局限性随结论一并归档。

实际问题

整体分数上升就足以采纳某个变体吗?

不能。要检查关键类别、新出现的错误以及被接受的完整输出。平均分的上升可能与违反项目标准的回归同时存在。

当模型与参考标准相矛盾时,我该修正参考标准吗?

先核查条目和标注说明。如果参考标准有误,就作出裁定并给修正建立版本,然后将其应用到所有变体上。仅凭模型表示异议,并不足以更改预期答案。

我可以把分类体系中的各类别相加吗?

只有当每个用例在本次计数中都有唯一的主类别时才可行。次级标签可能相互重叠;此时它们的总和统计的是标签的出现次数,而不是彼此独立的错误数。