一个文档证据原型在40条观测中答对36条,却漏掉唯一的正例,暴露出总体准确率与任务目标的错位。作者同时说明评估使用训练观测和 AI 生成的参考标签,并强调区分未找到、明确缺失与含糊等状态。
我的小型文档证据模型在 40 条观测中,有 36 条与参考标签一致。最显眼的数字是 90%。
随后,我查看了混淆矩阵。唯一一条参考标签为“有文档证据”的观测,被模型漏掉了。
对于预期工作流程而言,这个错误的重要性远超那个醒目的数字所呈现的程度。我正在构建一个助手,帮助用户在文档中定位和核查证据。模型复现了占绝大多数的“未找到”状态,却漏掉了唯一的正例,这并不能证明助手有用。
这是一个本地原型,使用来自 AI 的参考标签,在自己的训练观测上进行评估。它既不是独立测试,也不是对候选人能力的衡量,更不能证明招聘结果有所改善。这些限定条件会改变分数的含义。
这次实践让我开始把目标定义视为系统设计的一部分。
这个原型会针对文档中的四个维度,分别判定其文档证据状态。四种可能的状态是:有文档证据、未定位到、明确不存在,以及存在歧义。
每种状态都需要精确定义。“未定位到”描述的是:通过现有文档和处理流程,找到了什么、没找到什么。它并不能证明一个人缺乏某项技能。文档可能没有写出这个人掌握的东西,提取过程可能失败,相关段落也可能使用了意料之外的表达。
“有文档证据”同样需要谨慎界定。一段陈述可能只是提到了某个工具,并没有描述已经完成的工作。有意愿学习,与有实际使用的证据,是两回事。如果不同段落相互矛盾,可能需要交给审核者判断,而不是强行赋予正面或负面的标签。
这次运行的参考标签来自 AI,没有经过新一轮独立的人工标注。与这些标签的一致程度,衡量的是模型复现这些参考标签的能力。如果不说明预测目标,就把这个数字称为“准确率”,很容易让人作出远超实验所能支持范围的解读。
这 40 条观测来自 10 份文档,每份文档包含四个维度。参考标签的分布极不均衡:
模型正确复现了全部 33 条“未定位到”参考标签,以及六条“存在歧义”参考标签中的三条。对于剩下的三条歧义观测,以及唯一一条“有文档证据”的观测,模型都预测为“未定位到”。
这些结果解释了 36/40 的一致率,也说明了为什么这个分数可能掩盖模型在我想研究的能力上出现的失败。
参考标签中没有“明确不存在”这一类。某种报告约定可以把这个类别纳入四分类的 macro-F1 计算,但它对数值的贡献,并不等于实际测得了模型在这一状态上的表现。评估中没有该类别的样本支持。
我希望报告能让那些未经评估支持的能力清楚地呈现出来。读者应该能够区分:“方法在这些例子上失败了”和“这个数据集没有测试这项能力”。
同一份文档中的四个维度共享文本、格式、提取质量和来源背景。这会让观测之间产生相关性。
把它描述成 40 个独立案例,会造成误导。随机划分数据行,让同一份文档的不同维度同时出现在训练集和评估集中,也存在风险。模型可能在两边接触到大量相同的底层输入。
今后进行文档级评估时,我会先按来源文档对观测分组,再划分数据集。关系密切的不同版本,以及重复文档,也需要同样处理。划分单位应该反映信息可能如何跨越边界,而不是选择最方便切分表格的单位。
这次运行还有一个更直接的局限:全部 40 条观测都是训练观测。它展示了技术上的学习过程,也暴露了错误,但没有衡量模型在未见过的文档上的表现。
在更早的一项独立基准测试中,我使用固定的文档划分,对比了 TF-IDF logistic-regression 基线和一个小型 PyTorch 模型。标签来自一套词汇规则,而非独立观察到的实际结果。
在同一划分上额外使用五个随机种子运行后,基线的测试集 macro-F1 始终约为 0.902。神经网络模型的结果则在约 0.576 到 0.902 之间波动。
这是一个有用的诊断结果。在这套设置下,基线表现稳定,而神经网络模型对初始化和优化过程相当敏感。如果只报告神经网络表现最好的一次运行,就会掩盖这种敏感性。
不过,基线与标注规则也使用了相同的词汇。高分可能只是说明模型成功复现了这个代理目标,并不能证明实际业务决策的质量。
重复使用不同随机种子,只是在检查一种变异来源。它不会带来新的独立文档,无法修复薄弱的目标定义,也不能让已经查看过的测试集重新变得“未见过”。我把这些历史结果与那个包含 40 条观测的原型分开保留,因为它们回答的是不同的问题。
接下来的数据问题,是语义上的兼容性。一个规模更大的合成语料库使用八项评分标准,每项等级从零到四。文档原型使用的则是四个维度和四种证据状态。
它们的目标不同。把数据行拼接到一起,并不会让两者变得等价。
看看下面这段完全虚构的文字:
I have explored a video-editing tool through tutorials and would
like to use it in a future team project.
一套生成的评分规则,可能会因为此人接触过这个工具而给予较低等级的评分。一套文档证据规则,则可能认为这段话不足以证明此人完成过剪辑工作。无论哪种标签,都不会自动规定应该采取什么业务决策。
这种映射需要明确的定义、经过审核的示例,以及对原始目标的记录。存在歧义或不兼容的案例,应当保留并清楚呈现。设定一个分数阈值,不能代替对标签含义的判断。
后来的一次本地实验保留了合成语料库自身的八项标准目标,没有悄悄把它转换成先前的四状态任务。这保留了一条重要边界:在合成任务上取得的结果,仍然只是该任务上的结果。
合成数据让覆盖不同情况、构造对照示例变得更容易,但也让捷径更容易被反复复制。
两份文档可以有不同的标识符、姓名、章节顺序和细微措辞差异,却仍然沿用同一个底层短语模板。即便训练样本和测试样本在语言上仍然高度相似,精确重复检查也可能顺利通过。
在我检查过的语料库中,不同变体会复用基础短语,再添加一些上下文包装。这说明有必要调查模板重叠问题,但不能据此断言所有结果都无效,也不能证明所有泄漏都已经消除。
为了做出更有说服力的评估,我会跟踪模板族,检查不同划分之间的相似度,并预留真正不同的证据表述。我还会检查,文本长度、章节结构或文风线索是否泄露了生成标签。只有当一条未见过的记录确实检验了预期的难点时,它才具有相应的评估价值。
产品层面的问题是:模型的建议,能否帮助审核者查找和评估证据?
下一项有价值的比较,是“文档加搜索”与“文档加搜索再加模型建议”的对比。它需要经过独立审核的参考标签、正例和歧义示例、证据缺失的案例,以及对提取失败的明确处理方式。
我会衡量遗漏的证据、误导性建议、纠正情况、弃答情况,以及审核投入。模型建议和检索到的段落应当保持可分别检查:搜索结果并不会自动成为神经网络输出的解释。
审核参考标签时,也应该避免先展示模型建议。否则,评估可能会受到模型判断框架的影响。对于分歧,需要解决,或记录为待定状态,而不是编造出一致意见。
这项研究尚未完成。要判断系统是否有用,接下来需要的是这类证据,而不是对现有训练分数作出另一种解读。
在比较方法之前,我会写下:
那个醒目的 90% 是有用的,因为深入检查它,改变了我的下一步行动。在声称系统有用之前,它需要更充分的参考样本覆盖,以及一次独立的工作流程对比。
你当前评估中的目标,究竟代表什么?
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。