跳转至

Consistency-Preserving Contrastive Decoding for Faithful Document-Grounded Dialogue

会议: ACL 2025
arXiv: N/A
代码: 无
领域: 文本生成
关键词: 对比解码, 文档基础对话, 忠实性, 幻觉缓解, 知识对话

一句话总结

本文提出一种一致性保持的对比解码(Consistency-Preserving Contrastive Decoding, CPCD)方法,通过在解码阶段对比有文档条件和无文档条件的生成分布,增强文档基础对话系统对源文档的忠实性,同时保持回复的流畅性和对话一致性。

研究背景与动机

领域现状:文档基础对话(Document-Grounded Dialogue, DGD)要求对话系统在给定文档知识的基础上生成回复,广泛应用于客服问答、知识助手等场景。主流方法是在Transformer架构上训练seq2seq模型或微调LLM,将文档和对话历史作为输入生成回复。

现有痛点:(1)即使输入中包含了正确的文档,模型仍然会产生"幻觉"——生成与文档无关或矛盾的内容。研究表明30-50%的生成回复包含不同程度的幻觉;(2)现有的幻觉缓解方法主要在训练阶段引入忠实性约束(如NLI-based reranking),但训练-推理不一致限制了其效果;(3)对比解码(Contrastive Decoding)已被证明能提升生成质量,但直接应用于DGD任务时会破坏对话的连贯性——因为对比信号可能过度惩罚与文档无关但对对话有益的表达。

核心矛盾:忠实性要求回复紧贴文档内容,而对话性要求回复自然流畅且与上下文连贯。简单的对比解码在增强忠实性时会牺牲对话质量。

本文目标:设计一种在解码阶段同时优化忠实性和对话一致性的方法,无需重新训练模型。

切入角度:作者观察到标准对比解码将所有与"无文档分布"差异大的token都放大,但其中一些差异来自对话上下文的条件化而非文档的条件化。通过分离文档条件和对话条件的贡献,可以只放大文档带来的信息增益,保留对话上下文的连贯性约束。

核心 idea:引入"一致性保持"约束——在对比解码中加入第三个参考分布(仅对话上下文,无文档),三方对比可以精确分离文档贡献和对话贡献,只增强前者。

方法详解

整体框架

给定对话历史 \(H\)、文档 \(D\) 和当前问题 \(Q\),标准的文档基础对话模型计算条件分布 \(P(y|H, D, Q)\)。CPCD在解码每个token时计算三个分布:(1)完整条件分布 \(P_{full} = P(y|H, D, Q)\);(2)无文档分布 \(P_{no-doc} = P(y|H, Q)\);(3)仅文档分布 \(P_{doc-only} = P(y|D, Q)\)。最终的解码分布是三者的加权组合,目的是放大文档提供的信息增益同时保持对话上下文的一致性。

关键设计

  1. 三重对比解码公式:

    • 功能:在解码时同时考虑文档忠实性和对话一致性
    • 核心思路:最终的token得分计算为 \(s(y) = \log P_{full}(y) + \alpha \cdot [\log P_{full}(y) - \log P_{no-doc}(y)] - \beta \cdot [\log P_{full}(y) - \log P_{doc-only}(y)]\)。第一项保持生成质量,第二项(加权 \(\alpha\))放大文档提供的信息——那些在有文档时概率高但无文档时概率低的token被增强,迫使模型依赖文档内容。第三项(加权 \(\beta\))保持对话一致性——那些在完整条件下概率高但仅看文档时概率低的token反映了对话上下文的贡献,不应被对比信号抑制
    • 设计动机:标准对比解码 \(\log P_{full} - \log P_{no-doc}\) 会同时放大文档贡献和抑制对话贡献,引入第三项可以精确恢复被误伤的对话信号
  2. 自适应权重调节:

    • 功能:根据当前解码步骤的上下文动态调整忠实性和一致性的权重
    • 核心思路:在解码过程中,某些位置需要更高的忠实性(如回答事实性问题时),而某些位置需要更高的对话性(如过渡句、礼貌表达)。通过计算 \(P_{full}\)\(P_{no-doc}\) 之间的KL散度来判断当前位置的"文档依赖度"——KL散度大说明文档对当前token的影响大,应增加 \(\alpha\);KL散度小说明该位置主要取决于对话上下文,应降低 \(\alpha\) 增加 \(\beta\)。这种自适应调节避免了在不需要文档支持的位置过度强制忠实性
    • 设计动机:固定权重在所有位置上都不是最优的,自适应调节可以在忠实性和流畅性之间达到逐token的最优平衡
  3. 一致性感知的候选过滤:

    • 功能:在对比解码前预过滤明显不一致的候选token
    • 核心思路:设定一个一致性阈值 \(\tau\),对于 \(P_{full}(y) < \tau\) 的候选token(即原始模型本身概率很低的token)直接排除,不参与对比打分。这防止了对比解码可能导致的低概率token被异常提升的问题——某个token可能因为在 \(P_{no-doc}\) 中概率极低而获得夸大的对比增益,但它本身就不是一个合理的候选。阈值 \(\tau\) 根据 \(P_{full}\) 的top-\(k\) 概率动态设定
    • 设计动机:对比解码的一个已知问题是"分母效应"——当某个token在对比分布中概率接近零时,比率可以无限大,导致不合理的选择

损失函数 / 训练策略

CPCD是纯推理阶段方法,不需要额外训练。它可以即插即用地应用于任何已训练好的文档基础对话模型。唯一需要调优的是 \(\alpha\)\(\beta\)\(\tau\) 三个超参数,通过验证集上的忠实性和对话质量的综合指标确定。

实验关键数据

主实验

方法 Faithfulness↑ BLEU BERTScore 对话一致性↑ 综合得分
标准解码 62.3 18.5 0.872 78.5 67.1
标准对比解码 71.8 16.2 0.865 69.3 68.2
NLI-reranking 68.5 17.8 0.870 76.2 69.8
本文CPCD 74.6 17.9 0.875 77.8 73.5
CPCD + 自适应 76.2 18.1 0.878 78.1 74.8

消融实验

配置 忠实性 对话一致性 说明
Full CPCD 76.2 78.1 完整方法
w/o 第三项 (退化为标准CD) 71.8 69.3 对话一致性大幅下降
w/o 自适应权重 74.6 77.8 固定权重略差
w/o 候选过滤 73.8 74.2 偶尔生成不合理token
增大α (更强忠实性) 78.1 72.5 过度忠实损害对话性

关键发现

  • 一致性保持项(第三项)是最关键的贡献,去掉后对话一致性下降8.8个点,相当于退化为标准对比解码
  • 自适应权重调节在事实性问题回复上的忠实性最高,在闲聊过渡句上自动降低忠实性约束,实现了"该严格时严格、该灵活时灵活"
  • CPCD在所有评测维度上都显著超过标准对比解码,证明了三方对比相比双方对比的优势
  • 方法在不同底座模型(T5、Llama-2-7B/13B)上都有效,具有良好的通用性

亮点与洞察

  • 三重对比的思路巧妙地解决了标准对比解码无法区分文档贡献和对话贡献的根本问题,数学上紧凑且直觉上清晰
  • 作为纯推理时方法,不需要重新训练即可即插即用,部署成本极低,这大大增强了实际应用价值
  • 自适应权重的设计展示了在解码过程中动态调控多个目标平衡的可行性

局限与展望

  • 三个推理分布需要三次前向传播,推理延迟约为原来的3倍
  • 超参数 \(\alpha\)\(\beta\) 的最优值可能因数据集/模型而异,需要验证集调优
  • 对于需要综合多个文档的场景,无文档分布和仅文档分布的定义需要扩展
  • 未在超长文档或多轮对话设置中充分验证

相关工作与启发

  • vs Contrastive Decoding (CD): 标准CD只用两个分布(expert/amateur),本文引入第三个分布实现了忠实性和一致性的解耦
  • vs Knowledge-Grounded Dialogue: 传统知识对话主要在编码端引入知识,本文在解码端施加约束,两者正交可组合
  • vs FLAN/T5 NLI-based methods: NLI重排需要生成多个候选再选择,本文在逐token解码时直接优化,更高效

评分

  • 新颖性: ⭐⭐⭐⭐ 三重对比解码思路新颖,对标准CD的扩展有理论意义
  • 实验充分度: ⭐⭐⭐⭐ 多维度评测,消融实验全面
  • 写作质量: ⭐⭐⭐⭐ 方法描述清晰,公式推导直观
  • 价值: ⭐⭐⭐⭐ 对文档基础对话和对比解码社区都有实际价值

相关论文