跳转至

LoGU: Long-form Generation with Uncertainty Expressions

会议: ACL 2025
arXiv: 2410.14309
代码: https://github.com/rhyang2021/LoGU
领域: 文本生成
关键词: 不确定性表达, 长文本生成, 幻觉缓解, SFT+DPO, 事实准确性

一句话总结

定义"长文本不确定性生成"(LoGU)任务,识别不确定性抑制和不确定性错位两个子挑战,提出基于分解的数据构造框架和 SFT+DPO 两阶段训练流水线,使 LLM 在长文本生成中对不确定事实显式表达不确定性,在三个数据集上将 Llama3-8B 的事实准确率从 51.9% 提升到 71.6%,错误声明数从 20.4 降到 5.81。

研究背景与动机

  1. 领域现状:LLM 在不确定时仍然会自信地生成错误信息(幻觉)。现有不确定性估计研究主要集中在短文本 QA(如给出一个置信度分数),不适用于长文本场景。
  2. 现有痛点:(a) 短文本不确定性方法给整个回答一个统一的不确定性评分,但长文本包含多个 claim,有的正确有的错误,需要细粒度处理;(b) LLM 存在"不确定性抑制"——倾向于给出自信回答而非承认不知道;(c) 现有方法的不确定性表达常常模糊笼统(如"我不确定他的早年生活"),而非针对具体事实。
  3. 核心矛盾:理想的 LLM 应在知道的事实上自信生成,在不知道的事实上明确表达不确定性——但这需要模型同时具备自知能力和细粒度表达能力。
  4. 本文要解决什么? 如何让 LLM 在长文本中为每个 atomic claim 做出正确的确定/不确定判断并自然表达。
  5. 切入角度:将长文本分解为原子声明,逐个事实核查,然后有选择地将不正确声明改写为不确定性表达,重组回连贯文本。
  6. 核心idea一句话:基于分解-核查-改写-重组流程构造训练数据,SFT 解决不确定性抑制,DPO 解决不确定性错位。

方法详解

整体框架

输入为开放式问题(如"介绍某人"),输出为包含不确定性表达的长文本回答。方法分两个阶段:(1) 数据构造——将原始回答分解为原子声明,事实核查后构造正/负样本;(2) 两阶段训练——SFT 让模型学会表达不确定性,DPO 让模型精准表达不确定性。

关键设计

  1. 分解式数据构造框架:
  2. 做什么:将长文本回答转化为带不确定性表达的训练数据
  3. 核心思路:
    • 分解:用辅助 LLM(GPT-4o)将回答 \(R\) 分解为原子声明 \(C = \{c_1, ..., c_N\}\)
    • 事实核查:用 FActScore 检索 Wikipedia 段落并验证,分为支持集 \(C_s\) 和反驳集 \(C_{ns}\)
    • 正向改写 \(\Gamma_{\text{pos}}\):将反驳声明改写为不确定性表达(如"我不确定他的出生日期"),保留支持声明不变→ 得到 \(R_{\text{pos}}\)(理想回答)
    • 负向改写 \(\Gamma_{\text{neg}}\):反过来,将支持声明改写为不确定性表达,保留反驳声明不变→ 得到 \(R_{\text{neg}}\)(错误不确定性示例)
    • 重组:用辅助 LLM 将改写后的声明重组为连贯文本
  4. 设计动机:直接让 LLM 生成带不确定性的文本质量不高;分解到原子声明级别后操作更精确,且可精确控制不确定性比例

  5. 不确定性比例控制:

  6. 做什么:控制训练数据中不确定性表达的占比
  7. 核心思路:通过下采样比例 \(\alpha\) 限制被改写的声明数量,选择 \(\min(\frac{\alpha}{1-\alpha}|C_s|, |C_{ns}|)\) 个声明进行改写
  8. 设计动机:过多不确定性表达会降低回答的可读性和信息量;需要在"减少错误"和"保持全面性"之间平衡

  9. 两阶段训练流水线:

  10. LoGU-SFT:用正向改写数据 \((q, R_{\text{pos}})\) 进行 SFT,让模型学会在回答中自然嵌入不确定性表达,解决不确定性抑制
  11. LoGU-DPO:构造偏好对——\(R_{\text{pos}} \succ R \succ R_{\text{neg}}\),产生 3 对偏好数据(\(\binom{3}{2}\)),用 DPO 让模型学会在正确地方表达不确定性(而非对已知事实也表达不确定),解决不确定性错位
  12. 设计动机:单纯 SFT 只能让模型"学会说不确定",但无法区分何时该说;DPO 通过正负对比让模型学会对齐

损失函数 / 训练策略

  • LoGU-SFT:标准交叉熵损失,仅在回答部分计算
  • LoGU-DPO:标准 DPO 损失,以 SFT 模型 \(\pi_{\text{sft}}\) 为参考策略
  • 10 种手工设计的不确定性表达模式(如"I'm not sure about..."、"I don't have information on...")

实验关键数据

主实验(Llama3-8B-Instruct)

数据集 方法 FA(↑) UA(↑) #错误(↓)
Bios Original 51.9 - 20.4
Bios Unc-Zero (prompt) 53.8 65.4 14.9
Bios LoGU-SFT 62.7 76.7 10.2
Bios LoGU-DPO 71.6 84.3 5.81
LongFact Original 85.5 - 7.45
LongFact LoGU-DPO 92.2 62.5 2.14
WildHallu Original 74.4 - 6.24
WildHallu LoGU-DPO 88.3 62.6 2.47

消融实验(Mistral-7B, Bios)

配置 FA(↑) UA(↑) #错误(↓) 说明
Original 38.8 - 27.9 无不确定性表达
LoGU-SFT only 54.5 77.1 11.4 学会表达但精度有限
LoGU-SFT+DPO 65.4 80.7 6.54 DPO 进一步提升对齐
Prompt (Self-Refine) 38.3 57.4 27.2 提示方法效果有限

关键发现

  • 两阶段训练远优于提示方法——LoGU-DPO 在 Bios 上 FA 比最佳提示方法高 28pp(Mistral)
  • DPO 阶段对不确定性精度的提升至关重要——SFT→DPO 在 Mistral 上 FA 从 54.5% 提升到 65.4%
  • 基线方法的不确定性表达多为模糊笼统("I'm not sure about their career"),而 LoGU 产生更具体的表达("I'm not sure about the exact founding year")
  • 在域外数据集 ASQA 上也表现良好,说明泛化能力不错
  • 不确定性比例 \(\alpha\) 在 15-20% 时效果最佳,过高会牺牲信息量

亮点与洞察

  • 分解-改写-重组的数据构造范式非常通用——不仅可用于不确定性表达,还可迁移到其他细粒度文本属性控制(如安全性、形式度、情感)。
  • 正/负改写构造 DPO 偏好对巧妙——正向改写(不知道的说不知道)和负向改写(知道的也说不知道)自然形成了高质量偏好对,无需人工标注。
  • 不确定性比例控制是被忽视但重要的设计点——过度表达不确定性同样有害(用户期望得到有用信息)。

局限性 / 可改进方向

  • 对"真正不确定"的判定依赖短文本 QA 回答是否正确,这是一个近似
  • 不确定性表达是否"模糊"由 GPT-4o 判定,主观性较强
  • 依赖辅助 LLM(GPT-4o)进行数据构造,成本较高
  • 仅在 7-8B 模型上验证,更大模型的效果未知
  • 可考虑实时推理时的不确定性表达(而非训练时固化)

相关工作与启发

  • vs 短文本不确定性方法(如 verbalized confidence):短文本方法给整体打分,无法处理长文本中多个 claim 的不同不确定性程度
  • vs Self-Refine:自我改进方法在不确定性表达上效果有限(FA 几乎没提升),说明需要专门训练
  • vs IDK probing:IDK 方法主要检测模型是否"知道",但不能自然地将不确定性嵌入长文本中
  • 该方法的数据构造流程可为 RLHF/DPO 的偏好数据构造提供参考

评分

  • 新颖性: ⭐⭐⭐⭐ 定义了有意义的新任务(LoGU),分解式数据构造新颖
  • 实验充分度: ⭐⭐⭐⭐ 三个数据集+两个模型+消融+域外测试,分析全面
  • 写作质量: ⭐⭐⭐⭐⭐ 问题定义清晰,两个子挑战的抽象到位,方法逻辑流畅
  • 价值: ⭐⭐⭐⭐ 实用且重要的研究方向,对提升LLM可靠性有直接价值