研究随笔 · 证据与评估

答案正确之后:
如何评估 Agent 的证据可靠性?

从 MARS-Gov 出发,讨论证据缺口、人工抽审与条件风险估计

在 MARS-Gov 中,证据检索、立场审查和改写验证被放进了同一条 Agent 流程。我想顺着这项工作再追问一步:最终答案答对时,提交的证据是否也经得起检查?答案可以和参考标签核对,引用可以定位到原文,评审也可以给出认可,但这几项检查都没有直接回答证据是否充分。

我更想单独检查那些已经答对的输出。只看答案正确率时,证据缺口会被藏在成功样本里;把它们找出来,还需要一套可复核的判定规则,以及承担得起的人工审查。抽审协议和验证实验目前是研究设想,交互图使用合成数据。

目录

要估计的量

先取一个固定任务池,每道题都有独立参考标签。A 表示某次输出的答案是否正确,E 表示提交的证据是否满足预先约定的充分性标准。给定任务属性或预定义的证据条件 G,要估计的是:

qg = P(E = 0 | A = 1, G = g)

qg 是这类正确输出中的证据失败比例。这里暂时把概率理解为固定任务池上的比例;推广到部署环境,需要交代任务的抽取方式和分布变化。若某个群体没有任何正确输出,分母为零,qg 就没有定义。

E 的定义依赖参考语料、时间截点和审查规范。具体做法是列出待支持的关键主张,规定什么材料构成支持、什么反证足以阻断结论,以及冲突材料如何裁决。审查只能覆盖约定范围内的材料,“充分”也只在这个范围内成立。

我选择这个较窄的设定,是想先把证据评价单独研究清楚。开放任务往往连答案是否正确都需要人工判断,此时 A 在全池上未知,条件风险的分子和分母都得估计,还要计入答案标注的不确定性。后面的推导暂不包含这一层。

答案与证据的四种组合

把 A 和 E 交叉起来,会得到四格。容易产生疑问的是 A = 0、E = 1:答案错了,证据怎么还会充分?本文的 E 只评价证据包对规定的局部主张是否提供了合格支持。Agent 拿到了合格材料,仍可能在组合、计算或输出时出错。

如果把 E 换成“能够逻辑推出最终答案的完整证明”,四格的含义就变了。在规范可靠、参考答案与之相容的前提下,A = 0、E = 1 应当为空;出现这类记录,需要回查定义或标注。两种定义不能混用。

图中只放已经判定证据状态的输出,未解决项单列,并报告判定覆盖率。用 D 表示证据状态是否已解决,pae,g 表示群体 g 中已解决记录的联合比例,则已解决子集上的条件风险为:

qg,resolved = p10,g / (p11,g + p10,g)

比较两个 Agent 版本时,qg,resolved 下降未必说明证据能力提高了。两版答对的题可能不同;少答对一些困难题,也可能降低“答对后的证据失败率”。因此要一起查看四格各占原任务池的多少、答案正确率和未解决比例。两版共同答对的配对样本可以进一步比较证据差异,但结论只适用于这个共同子集。

未解决项怎么计入风险

一条可复核的审查记录,需要包含主张、来源位置、材料版本、支持关系和反证检查范围。引用定位成功只是检查的起点。原文里有这句话,不代表它支持当前推断;检索返回了更多材料,也不代表关键证据已经找全。

审查结果分成 supported、insufficient 和 unresolved,前两项对应 E = 1 和 E = 0。确认缺少必要支持,可以判 insufficient;资料暂时不可获取、审查尚未完成,则保留 unresolved。没有找到反例不够把它判为充分,审查超时也不够把它判为失败。

设固定规范为每条记录定义了一个潜在的二元证据状态,已解决标签作为参考判定,unresolved 表示该状态尚未测定。对 A = 1、G = g 的整个群体,记失败数为 F、充分数为 S、未解决数为 U,可以得到下面的界。如果规范本身无法定义二元状态,就得先修改评价对象,这个界也不适用。

F / (F + S + U) ≤ qg ≤ (F + U) / (F + S + U)

下界把所有未解决项当作充分,上界把它们全部当作失败。两者之间是未知标签留下的识别范围,不是置信区间。若只审查了一个子集,F、S、U 也要按抽样设计加权估计,边界还会有抽样不确定性。直接删掉 U,算出的是已解决子集的风险;把未解决项一律当作充分,则无依据地排除了其中可能的失败。

这套审查还回答不了因果忠实性。一个证据包可能充分支持答案,却是在模型猜中答案后补出来的。判断证据是否实际影响了生成,需要另外做干预,例如改变相关证据而保留无关格式,检查输出是否按预期变化。干预本身也依赖假设,静态证据审查无法代劳。

评审信号能提供多少信息

Judge 分数、评审分歧、引用匹配、来源重合度和检索覆盖指标,都可以记作逐条输出上的信号 Z。这些信号适合用来预测风险,是否足以判定 E 则是另一个待验证的问题。

几个 judge 可能来自同一模型家族,读同一份摘要,也一起漏掉摘要里没有的反证。多一票同意,未必多一份独立信息。分歧也有歧义:它可能暴露 Agent 的错误,也可能只是审查规范写得不清楚。

我想知道,高一致度区域里还有多少证据不足;对于“引用存在,但支持关系不成立”的输出,引用匹配又能提供多少信息。回答这些问题后,才有依据决定哪些信号值得用于分配审查名额、预测待核对的记录,或在人工参考判定的基础上提高估计精度。

检索覆盖最难直接测量,因为系统通常只知道自己找到了什么,不知道本应找到的全部材料。换一组检索词、换一种工具,可以补充检查,但“多搜了一次”没有给出完整性保证。审查记录应写清搜索范围和已发现的缺口,未发现的部分仍然未知。

有限预算下的抽审

抽审前冻结任务池、输出、充分性规范、条件分组(profile)和预算。分组尽量用低维、可复核的属性,比如任务类别、预先计算的证据冲突标记、来源可用性。跨版本比较优先用任务侧属性固定群体;依赖输出信号的分组,需要另报成员变化。若根据本批人工结果找出一个高风险群体,再直接给它套上常规区间,区间并未计入选择过程。这类探索结果需要独立样本确认,或使用选择后推断。

一个直接的方案是先给每个非空层保留抽审名额,把额外预算分给预计更难的层,再在各层内简单随机不放回抽样。层大小、配额和随机种子都记入日志。第 h 层共 Nh 条记录,抽取 nh 条,则每条记录的包含概率为 nh/Nh。

图中两个层的失败率是人为设定的总体参数。多审风险层会改变样本组成,人工标签的直接平均也会跟着改变。用已知包含概率加权,可以在设计期望下恢复原任务池的比例。这个演示只说明抽样组成的影响;真实数据中,judge 分歧是否对应更高失败率,仍需检查。

估计全池风险要求每条目标记录都有正的包含概率。只审低分或分歧样本,未被覆盖的高一致度记录就没有被抽中的机会;其中若有共同错误,事后加权也补不回来。预算容不下太多细分层时,应先合并层,再分配名额。

加权估计与模型辅助估计

先假设二元证据状态定义明确,每条记录一旦抽中都能完成判定。令 Bi 表示记录 i 是否满足 A = 1、G = g,Fi = Bi·1(Ei = 0),πi 为已知包含概率。A 和 G 在全池上已知,所以群体大小 Ng = Σi∈pool Bi 也是已知的固定量。当 Ng > 0 时:

q̂g,HT = (1 / Ng) Σi∈sample Fi/πi

分子是 Horvitz-Thompson 失败总量估计,除以已知的 Ng,就得到上述抽样设计下的无偏风险估计。如果连群体大小也未知,用加权失败总量除以加权群体总量,得到的是 Hájek 型比率估计。两个总量分别无偏,不意味着它们的比率在有限样本下无偏。小群体的审查量不足时,点估计还会很不稳定,需要同时报告不确定性。

Judge 信号可以用于预测失败。先在独立开发集上训练预测器,抽审前冻结,为全池生成预测 mi,群体外设为零。全池预测的和给出一个失败总量的初步估计,再用概率抽审中测得的预测残差作校正:

T̂F,diff = Σi∈pool mi + Σi∈sample (Fi − mi)/πi

这是标准的模型辅助差分估计。固定预测器和总体,在正确执行的概率抽样设计下,残差项的期望会抵消预测总量的误差;除以已知 Ng,估计的仍是人工规范定义的风险。预测器不必完美,但是否降低方差取决于残差和抽样结构,弱信号甚至会使方差变大。单次实现的风险估计可能落到 [0, 1] 之外;裁剪后就不能原样保留有限样本无偏的结论。

如果用当前抽审标签拟合预测器,“预测器固定”的论证就不再直接成立,需要样本拆分、合适的交叉拟合或另作设计论证。有未解决项时,则分别估计确认失败总量与未解决总量,报告风险边界。预测值可以辅助估计,不能充当未解决项的人工真值。

审查记录与不确定性

为了以后能重算结果,抽样前的信号、实际包含概率、人工看到的材料和最终裁决需要分开保存。评审先依固定规范独立判断,再裁决分歧。中途改了规范,就记录版本,并重审受影响的样本。

pool = freeze(tasks, outputs, reference_labels)
rubric = freeze(reference_corpus, cutoff, evidence_rules)
profiles, signals = compute_before_audit(pool)
design = allocate_with_positive_probability(profiles, budget)
sample = random_sample_within_strata(pool, design)

for item in sample:
    packet = build_blinded_packet(item, rubric)
    review = independent_review(packet)
    result = adjudicate_or_keep_unresolved(review, rubric)
    save(item.id, design.pi(item), result, review.trace)

report_joint_outcomes_and_resolution_coverage()
report_weighted_risk_or_identification_bounds()
report_uncertainty_using_the_actual_sampling_design()

盲审包去掉系统身份和 judge 评分,保留判断支持关系所需的上下文。片段的选择也会影响判断,因此审查者应能回看固定参考范围内的原始材料。这份流程目前是一项协议设计,尚未验证成可直接复用的评测工具。

区间计算跟随实际抽样设计。逐记录分层不放回抽样,就按这个设计计算方差;按原始任务或来源成簇抽取,就在簇层面计算。同源记录本身不会自动使有限总体的设计推断失效。要把结果推广到任务池之外,需要另行建模任务、来源和重复输出间的依赖。小群体以及带未解决项的风险边界,都应说明各自的不确定性。

先检验估计,再比较系统

我会先选一个能较完整人工审查的小任务池,作为参考总体。试审后冻结规范,保留未解决项,再反复模拟固定预算的概率抽审。比较简单随机抽样、风险分层抽样和加入辅助信号后的估计。各方案使用相同的审查标签预算,训练预测器所需的开发标注成本另报。

检查指标包括偏差、均方误差、区间覆盖率和宽度,预设的各个群体也分别报告。总体误差改善可能掩盖小群体上的失效。参考总体仍有未解决项时,检查的是风险边界及其不确定性;完整执行了一轮人工审查,并不意味着得到了所有记录的真值。

估计过程验证后,再比较 Agent 版本。保留相同任务上的配对输出,固定参考材料、模型配置和预算口径,一起报告答案质量、证据结果、未解决率,以及模型和工具成本。完整系统按相同执行预算比较;单独检验某个组件时,固定其他条件,说明它增加的计算量。

还可以移除关键支持片段、换入无关引用、加入冲突材料,测试评价是否能识别指定缺陷。此类干预是压力测试,不能用于估算自然发生的失败比例。这些实验尚未完成。我会先检查判定规则能否执行、估计是否可靠,再用它们判断 Agent 的改动有没有效果。

高一致度区域里的证据缺口

我想从 MARS-Gov 延伸出来的,就是这样一项单独的证据评价:列明待支持的主张,核对材料实际支持了什么,再保留尚未判定的部分。做完这几步,才知道一个可靠性分数到底统计了什么。

最想检查的是高正确率、高评审一致度的那部分输出。现有信号在那里可能已经接近上限,但证据失败还有多少、是否更难估计,都没有现成答案。我关心哪些额外信息仍能预测人工审查发现的缺口,而不会重复已有信号的盲点。

下一步可以先在固定任务池上,对照有无辅助信号时的估计误差和区间覆盖。如果同样的人工预算下没有精度收益,仅从提高估计精度来看,就不足以支持新增 judge 的成本。若试审发现充分性的标准无法执行,就先修订规范,重审受影响的记录,再比较系统。