如何度量幻觉
1️⃣ 考察意图
面试官想考察你对“幻觉”这一LLM核心缺陷的评估体系是否系统化,而非只停留在概念层面。这属于系统设计+工程取舍类问题,刁钻点在于:你能否区分“事实性幻觉”和“忠实性幻觉”并给出不同度量方案,以及是否清楚自动指标与人工评估的局限性与互补性。答好了能展示你对评估方法论(如FactScore、SelfCheckGPT)的实战理解,以及设计评估Pipeline的工程思维。
2️⃣ 标准答
度量幻觉需要先明确类型:事实性幻觉(模型编造不符合世界知识的内容)和忠实性幻觉(模型输出与给定上下文矛盾)。评估方法分三大类:自动指标、人工评估、基准数据集。以下是具体方案:
- 自动指标:基于事实性
- FactScore:将生成拆解为原子事实(atomic facts),与知识库(如Wikipedia)逐条比对,计算精确率/召回率。例如,模型说“爱因斯坦1905年提出相对论”,FactScore会检查“爱因斯坦”“1905年”“相对论”三个事实是否成立。坑:知识库覆盖不全时,漏判率高,需结合多源验证(如Google Search API)。
- TruthfulQA:用选择题形式评估模型是否避免常见误解(如“地球是平的”),但仅适用于特定测试集,不能泛化到开放域。
- 工程取舍:FactScore粒度细但计算成本高(每句需多次检索),适合离线评估;TruthfulQA轻量但覆盖窄,适合快速筛选。
- 自动指标:基于忠实性
- Entailment-based:用NLI模型(如DeBERTa)判断生成是否蕴含上下文。例如,给定文档“公司Q3营收增长10%”,模型输出“营收下降”,NLI判定为矛盾。实战坑:NLI模型对长文本、否定句(如“不是增长”)敏感度低,需用RoBERTa-large微调版。
- SelfCheckGPT:对同一输入多次采样(如temperature=0.7,采样5次),计算生成间的语义一致性(如BERTScore)。若某句与其他采样差异大,则可能幻觉。为什么这么做:无需外部知识库,适合评估模型内部知识冲突,但无法检测“一致但错误”的幻觉(如所有采样都编造同一事实)。
- 人工评估:黄金标准
- 标注员按粒度打分:句子级(每句是否事实错误)、段落级(逻辑连贯性)、文档级(整体可信度)。通常用Likert 5分制(1=完全幻觉,5=完全准确)。成本:每1000条需3-5人标注,耗时8-12小时,且标注员间一致性(Cohen’s Kappa)需≥0.7才有效。
- 工程取舍:人工评估最可靠但不可扩展,适合作为自动指标的校准集(如计算Spearman相关系数)。
- 基准数据集
- HaluEval:包含3000+条对话,每条标注了幻觉类型(事实错误/上下文矛盾/逻辑错误),用于评估检测器。实战:在HaluEval上跑FactScore,发现其与人工标注的Spearman相关系数仅0.45,说明自动指标有偏差。
- FELM:聚焦事实性幻觉,含5000条生成+知识库证据,适合评估检索增强(RAG)场景。
- TruthfulQA:817道题,覆盖38个主题,但题目偏简单(如“太阳从哪升起?”),对复杂推理场景不够。
- 评估流程设计
- 第一步:用SelfCheckGPT做快速筛选(成本低,召回率约70%)。
- 第二步:对疑似幻觉样本用FactScore+知识库验证(精确率提升至85%)。
- 第三步:人工抽检10%样本,校准自动指标阈值(如FactScore<0.6判定为幻觉)。
- 实际落地的坑:知识库更新滞后(如模型说“2024年奥运会”但知识库只到2023年),需加入时效性标记(如“知识截止日期:2023-12”)。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,按幻觉类型区分,事实性用FactScore,忠实性用SelfCheckGPT;第二,自动指标有成本-精度取舍,比如FactScore细但慢,SelfCheckGPT快但漏检一致幻觉;第三,人工评估是黄金标准但不可扩展,需用HaluEval等基准做校准。总结一句:度量幻觉没有银弹,必须组合自动+人工,并针对业务场景调阈值。”
4️⃣ 高频追问 & 应对
追问 1:你提到FactScore,具体怎么实现原子事实拆解?有没有开源工具?
原子事实拆解通常用LLM(如GPT-4)做句子分割,提示词类似“将以下句子拆成独立事实,每个事实只含一个断言”。开源工具如FactScore的官方代码(GitHub)用GPT-3.5做分割,但准确率约80%;更可靠的是用DecomP(论文“Decomposed Prompting”),它通过递归分解提高召回率。实战中,我建议先用GPT-4做分割,再用规则过滤(如去除长度<5字符的碎片),避免噪声。
追问 2:如果业务场景是实时对话(如客服),如何低延迟度量幻觉?
实时场景不能跑FactScore(太慢)。方案是:用SelfCheckGPT的变体,只采样2次(而非5次),计算余弦相似度(用Sentence-BERT),阈值设为0.8。延迟约50ms/句。另一个技巧是缓存:对高频问题(如“退款流程”)预计算知识库证据,用NLI模型做实时比对,延迟可降到20ms。取舍是:召回率会从70%降到55%,但可接受。
追问 3:自动指标和人工评估的相关性低,你怎么优化?
核心是校准。我会在HaluEval上跑多个指标(FactScore、SelfCheckGPT、Entailment),计算每个指标与人工标注的Spearman相关系数,然后做加权融合(如FactScore权重0.5,SelfCheckGPT权重0.3,Entailment权重0.2)。另一个方法是主动学习:对自动指标不确定的样本(如分数在0.4-0.6之间),优先送人工标注,再用标注结果微调指标阈值。这样能在不增加太多人工成本下提升相关性。
5️⃣ 避坑 · 常见错误答法
- ❌ 只提“用BLEU/ROUGE评估幻觉” → ✅ BLEU/ROUGE衡量词重叠,与事实性无关,必须用基于事实的指标(如FactScore)或基于一致性的指标(如SelfCheckGPT)。
- ❌ 说“人工评估最准,所以只用人工” → ✅ 人工成本高且不可扩展,正确做法是自动指标做初筛,人工做校准,并量化相关性(如Spearman系数)。
- ❌ 混淆“幻觉”和“错误输出”,认为所有错误都是幻觉 → ✅ 幻觉特指“无根据的编造”,而错误输出可能来自上下文理解偏差(如指令误解),需区分评估。
6️⃣ 简历呼应
- 如果你有RAG项目:从“检索质量影响幻觉”切入,展示你如何用FactScore评估检索结果(如Top-5文档的召回率),并对比不同检索器(BM25 vs DPR)的幻觉率。
- 如果你只做过传统NLP:用“文本蕴含任务”类比,说明NLI模型(如DeBERTa)如何迁移到忠实性评估,并强调从“分类”到“生成”的评估思维转变。
- 如果你是校招无项目:聚焦HaluEval或TruthfulQA的论文复现,展示你跑过指标(如FactScore的精确率/召回率),并讨论自动指标与人工的相关性(如Spearman系数0.45)。
- “FactScore: Fine-grained Atomic Evaluation of Factual Precision in Long-form Text Generation” (Min et al., 2023)
- “SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models” (Manakul et al., 2023)
- “HaluEval: A Large-Scale Hallucination Evaluation Benchmark for Large Language Models” (Li et al., 2023)
- “TruthfulQA: Measuring How Models Mimic Human Falsehoods” (Lin et al., 2022)
- “DecomP: Decomposed Prompting for Factual Consistency Evaluation” (Chen et al., 2023)