跳转至

Compositional Consistency-Guided Decoding for Three-Way Logical Question Answering

会议: ICML 2026
arXiv: 2604.06196
代码: 无
领域: LLM推理
关键词: 逻辑推理, 一致性解码, 三分类问答, 测试时推理, 否定映射

一句话总结

利用三分类逻辑问答中假设 \(H\) 与其否定 \(\neg H\) 之间的确定性否定映射关系,在测试时组合多次 LLM 调用并通过一致性约束消歧,无需训练即可减少认识性弃权(epistemic Unknown)并提升推理准确率。

研究背景与动机

领域现状:三分类逻辑问答(True / False / Unknown)要求模型判断一组前提 \(S\) 是否蕴含假设 \(H\)、蕴含 \(\neg H\)、还是两者都无法推出。LLM 通常通过单次结构化提示完成三分类,每个查询独立处理。

现有痛点:LLM 在单次调用时大量输出 Unknown——其中相当一部分并非因为前提真的不足以判定,而是模型的不确定性或保守行为导致的"认识性弃权"。例如 Claude Sonnet 4.5 在严格无 CoT 的提示下 Unknown 率高达 75.5%,而其中 72.6% 的 gold 标签实际是 True 或 False。这种虚假弃权严重拉低了准确率和覆盖率。

核心矛盾:三分类逻辑问答本身包含一个强结构约束——否定映射 \(\mathsf{NegMap}\):True ↔ False 互换,Unknown 保持不变。即 \(y(\neg H) = \mathsf{NegMap}(y(H))\)。但标准提示把 \(H\)\(\neg H\) 当成毫无关联的两个查询,完全浪费了这个内置的组合一致性关系。

本文目标:设计一个无需训练、无需外部求解器的测试时解码层,利用否定一致性约束在多次 LLM 调用之间传播信息,从而减少认识性 Unknown 并提升整体推理质量。

切入角度:既然对 \(H\)\(\neg H\) 的查询是同一底层逻辑状态的两个"带噪声观测",那么只要一侧给出确定判断,就可以通过否定映射推导出另一侧的标签;当两侧都不确定时,可以退化为更简单的二分类蕴含探测来打破僵局。

核心 idea:用否定一致性约束把单次提示升级为多视角组合推理——先查 \(H\)\(\neg H\),一致则接受,不一致或弃权则逐步修复和探测,所有决策最终投影到满足否定映射的一致赋值上。

方法详解

整体框架

CGD-PD(Consistency-Guided Decoding with Proof-Driven Disambiguation)是一个包在任意 LLM 外面的测试时推理层:输入前提集 \(S\) 和假设 \(H\),输出 True / False / Unknown 三者之一,全程不训练、不调外部求解器。它的出发点是三分类逻辑问答自带一条数学约束——否定映射 \(\mathsf{NegMap}\) 把对 \(H\) 的判断与对 \(\neg H\) 的判断锁死(True↔False 互换、Unknown 不变),于是对 \(H\)\(\neg H\) 的两次查询本质是同一逻辑状态的两个带噪观测。CGD-PD 把这条约束当成解码时的硬规则,按"越来越费力"的顺序级联最少 2 次、最多 6 次调用:先双向查一致性,不一致就定向修 Unknown,还僵持就降到二分类蕴含探测,万一两边都确定却互相矛盾再裁决,每一步只在上一步没能达成一致赋值时才触发。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入:前提集 S + 假设 H"] --> B["双向查询 + 否定一致性投影<br/>分别分类 H 与 ¬H,按 NegMap 校验"]
    B -->|"一致且至少一侧确定"| OUT["输出:True / False / Unknown"]
    B -->|"两侧都确定却互相矛盾"| E["矛盾裁决器<br/>在两个自洽赋值间二选一"]
    B -->|"某侧弃权 Unknown"| C["针对性 Unknown 修复 + 单侧投影<br/>对弃权侧重评,确定侧按 NegMap 投影"]
    C -->|"修复后一致 / 单侧确定可投影"| OUT
    C -->|"两侧仍 Unknown"| D["证据驱动消歧:二分类蕴含探测<br/>Yes/No 问 S⊨H 与 S⊨¬H"]
    D -->|"互补 (Yes,No)/(No,Yes)→ True/False"| OUT
    D -->|"其余(含双 Yes 冲突)保持 Unknown"| OUT
    E --> OUT

关键设计

1. 双向查询 + 否定一致性投影:把两个独立带噪分类拼成一个受约束的联合推理

痛点是单次提示下 LLM 对措辞极敏感,常给出彼此不一致的标签或干脆弃权。CGD-PD 不再把 \(H\)\(\neg H\) 当成两个无关查询,而是分别调用 \(y_H = \mathsf{Classify}(S, H)\)\(y_{\neg H} = \mathsf{Classify}(S, \neg H)\),其中 \(\neg H\) 用规范化包装(如 "NOT: \(H\)")构造、并在提示里显式定义其语义。拿到两个标签后用否定映射校验:只要 \(y_{\neg H} = \mathsf{NegMap}(y_H)\) 且至少一侧是确定标签(不是双 Unknown),就直接返回 \(y_H\)。这一步之所以有效,是因为它给同一逻辑状态提供了冗余观测,又用 \(\mathsf{NegMap}\) 这条硬约束当消歧依据——两个各自带噪的分类被绑成一个联合问题后,互相印证的那部分答案立刻变得可信。

2. 针对性 Unknown 修复 + 单侧投影:专杀认识性弃权而不误伤真不确定

第一步过不去往往是因为某一侧弃权了,而这些 Unknown 很多并非前提真不足、只是模型保守。于是只对弃权那一侧调用 \(\mathsf{FixUnknown}(S, H)\) 专用提示重新评估,该提示把 Unknown 定位成最后手段——只有明确缺少必要前提才允许保留,且必须说清缺了什么前提、并尽量引出前提块里对应的句子。修复完先复查这对标签是否已满足否定一致性,是则返回 \(H\) 的标签;若一侧已确定、另一侧仍 Unknown,就用否定映射把确定侧的标签投影回 \(H\)。这一步只动弃权侧、不碰已确定的判断,因此能在压低虚假弃权的同时,把真正缺前提的样本留在 Unknown 里——但论文也指出该投影依赖那次确定调用的可靠性,并非形式化保证。

3. 证据驱动消歧:二分类蕴含探测打破双 Unknown 僵局(方法名里的 "PD")

若修复后两侧依然都 Unknown,CGD-PD 再降一个维度,把三分类问题换成更窄的二分类蕴含探测:分别以 Yes/No 问 \(b_H = \mathsf{EntailsYesNo}(S, H)\)\(b_{\neg H} = \mathsf{EntailsYesNo}(S, \neg H)\),这个更聚焦的问法去掉了 Unknown 这个逃避选项,能暴露出三分类提示其实只是把 Unknown 当默认值的情形。但它也可能过度承诺,所以解码器只接受互补模式:\((Yes, No)\) 判 True、\((No, Yes)\) 判 False,其余情况(尤其是双 Yes 这种两侧都说蕴含的冲突)一律退回 Unknown,而不武断偏袒某一侧。论文称这步为"证据驱动"是因为聚焦的蕴含问题提供了"某侧可从 \(S\) 推出"的轻量证据,但它声明这并非形式化证明系统、不保证求解器级别的正确性。

4. 矛盾裁决器:兜底处理两侧都确定却违反否定映射的罕见冲突

极少数情况下两侧一开始就都给出确定标签却互相矛盾(比如对 \(H\)\(\neg H\) 都答 True),这违反了 \(\mathsf{NegMap}\),且因为没有 Unknown,前面的修复与探测都不会被触发。此时级联落到专门的裁决提示,在两个本身自洽的赋值 \(y_H\)\(\mathsf{NegMap}(y_{\neg H})\) 之间二选一。裁决器只在出现这种矛盾确定对时才被叫起来,频率很低,但它保证了无论前面怎么走,最终输出始终满足否定一致性这条硬约束,不会吐出逻辑自相矛盾的预测。

一个完整示例

以 Claude 跑一个 gold 标签为 True 的样本为例,看调用如何逐级升级:第 1–2 次双向查询拿到 \(y_H=\text{Unknown}\)\(y_{\neg H}=\text{Unknown}\)——两边都弃权,否定一致性虽满足但没有确定标签,不能接受;于是第 3–4 次对两侧分别跑 \(\mathsf{FixUnknown}\)\(H\) 侧仍判 Unknown 而 \(\neg H\) 侧被修成 False;按否定映射 \(\mathsf{NegMap}(\text{False})=\text{True}\) 投影回 \(H\),得到 True 并终止。整条链用了 4 次调用,把一个本会被记成"认识性弃权"的样本救成了正确的确定标签。统计上,完整六次调用在 GPT-5.2 的 54%、Claude 的 61% 样本上被触发,正反映了原始 Unknown 输出有多普遍。

实验关键数据

主实验

在 FOLIO 数据集验证集(204 个样本)的一阶逻辑字段上评测,使用严格无 CoT 的结构化提示,温度设为 0。

模型 方法 准确率(%) Unknown率(%) 认识性Unknown率(%) 平均调用次数
GPT-5.2 Single 63.7 57.4 41.5 1.00
GPT-5.2 CGD-PD 68.1 53.9 36.3 4.36
Claude Sonnet 4.5 Single 42.2 75.5 72.6 1.00
Claude Sonnet 4.5 CGD-PD 49.0 58.8 53.3 4.91

配对 bootstrap 95% CI:GPT-5.2 准确率提升 +4.4pp(CI: +1.5 ~ +7.4),Claude 准确率提升 +6.8pp(CI: +3.4 ~ +10.3)。

覆盖率与确定标签可靠性

模型 方法 覆盖率(%) 回答准确率(%) Gold Unknown 保留率(%) Gold U→T Gold U→F
GPT-5.2 Single 42.6 79.3 88.4 3 5
GPT-5.2 CGD-PD 46.1 83.0 88.4 4 4
Claude Sonnet 4.5 Single 24.5 60.0 81.2 9 4
Claude Sonnet 4.5 CGD-PD 41.2 61.9 69.6 13 8

关键发现

  • CGD-PD 不是简单地把 Unknown 替换为低质量的确定标签——GPT-5.2 的回答准确率从 79.3% 提升到 83.0%,覆盖率也同步提升
  • GPT-5.2 上 Gold Unknown 保留率保持 88.4% 不变,说明对真正不确定样本没有过度解析;Claude 上该率从 81.2% 降至 69.6%,存在一定的过度解析问题
  • CGD-PD 在 GPT-5.2 上改变了 15/204 个预测,Claude 上改变了 34/204 个,改变主要集中在将 Unknown 转为正确的确定标签
  • 完整六次调用在 GPT-5.2 的 54% 和 Claude 的 61% 样本上触发,反映了 Unknown 输出的普遍性

亮点与洞察

  • 把任务自带的组合结构变成解码约束:否定映射是三分类逻辑问答的内在数学性质,CGD-PD 的核心洞察是这种已知关系不该被浪费在独立查询中,而应在推理时被显式利用。这个思路可以推广到任何具有已知输入变换-输出约束关系的任务
  • 分层消歧策略比全局强制更优:先尝试一致性、再定向修复、再降维探测的渐进式设计,比直接强制消歧更好地平衡了减少虚假弃权与保护真正不确定性

局限与展望

  • 仅在 FOLIO 的 FOL 公式输入上验证,自然语言输入下否定的范围歧义会显著增加难度
  • 仅使用两个 API 模型、一种严格无 CoT 提示族,未与 self-consistency 等推理时基线在相同调用预算下对比
  • Claude 上对 Gold Unknown 的过度解析(保留率从 81.2% 降至 69.6%)是当前方法的主要弱点,需要更精细的选择性机制
  • 未提供分支级别的诊断日志(如修复器改变率、裁决器覆盖率),难以精确定位各组件的贡献

相关工作与启发

  • vs Self-Consistency (Wang et al., 2023): Self-Consistency 通过同一提示的多次采样聚合来提升推理,CGD-PD 利用逻辑耦合的不同提示之间的组合约束,二者互补而非替代
  • vs CheckList / 变形测试 (Ribeiro et al., 2020; Cho et al., 2025): 变形测试用变换-关系对来评估失败模式,CGD-PD 进一步将其用于引导推理时决策

评分

  • 新颖性: ⭐⭐⭐⭐ 把已知的逻辑约束变成推理时解码规则的思路简洁且有启发性
  • 实验充分度: ⭐⭐⭐ 仅一个数据集 204 样本的验证集、两个模型、一种提示族,规模有限
  • 写作质量: ⭐⭐⭐⭐⭐ 问题定义清晰、方法逐步推导自然、诊断分析透彻
  • 价值: ⭐⭐⭐⭐ 提出的"利用任务内在组合结构约束解码"是一个可广泛迁移的设计原则