利用知识图谱检测并修正大模型幻觉:GraphEval策略的简单粗暴实现思路
来看知识图谱如何参与大模型全周期的最后一环——幻觉评估与修正。近期有一项工作《GraphEval: A Knowledge-Graph Based LLM Hallucination Evaluation Framework》(论文链接:arxiv.org/pdf/2407.10793),提出了一个基于知识图谱的幻觉检测框架,专门用于评估大模型的回复,并定位其中与给定知识不一致的部分——也就是常说的“幻觉”。更妙的是,该工作还附带了一个纠正思路,虽然全程依赖Prompt,但实现思路颇具巧思。
从核心思想来看,GraphEval通过知识图谱结构来表征信息,旨在解决此前幻觉检测方法缺乏可解释性的痛点。整体分为两个阶段:先构建图谱,再逐项检查。思路简洁,但效果值得关注。
1、GraphEval幻觉检测思路
GraphEval的核心流程是:
首先从LLM输出中提取知识图谱,然后逐一检查每个三元组(triple)是否与给定上下文事实一致。一旦发现某个三元组不一致,整段输出即被判为事实不一致,并返回该不一致的三元组——这就提供了可解释性。
示意图如下:
下文从两个维度展开:一是GraphEval的检测机制,二是GraphCorrect的纠正实现。
第一阶段:从待评估的LLM输出中构建知识图谱。
对应的Prompt如下:
第二阶段:迭代检查知识图谱中的每个三元组,判定其是否与给定上下文事实一致。
具体做法:将每个三元组输入到一个现成的幻觉检测方法(如自然语言推理模型)中,与提供的上下文比对,判断是否存在不一致。若任一三元组被识别为不一致,整个输出即标记为事实不一致,同时返回该三元组作为可解释性依据。
这一步使用的自然语言推理(NLI)模型,通过将每个三元组与上下文一同输入,输出该三元组包含幻觉的概率。
若至少一个三元组的概率大于0.5,则将该示例分类为不一致。
这类方法此前已有不少代表性成果,例如:
- :基于DeBERTaV3模型,最初在NLI数据训练,再由Vectara在标注为一致性的数据库上微调。微调数据集包括FEVER、VitaminC和PAWS。模型仅需738MB内存,运行速度较快。
HHEM
- :基于T5-XXL模型,训练方式与TRUE论文类似,但数据集扩充了SNLI、MNLI和Scitail。需45.5GB内存。
TRUE
- :Gekhman等人利用LLM评估幻觉的能力,通过注释模型生成的摘要产生合成数据,再微调得到。在TRUE基准测试中达到最优,模型大小与TRUE相同。
TrueTeacher
各模型在具体任务上的对比如下:
2、GraphCorrect幻觉纠正实现思路
GraphEval的输出可以进一步扩展到幻觉纠正。首先识别出知识图谱中概率大于0.5(即可能包含幻觉)的所有三元组,然后分三步处理:
第一步,识别幻觉。
第二步,纠正三元组。
第三步,替换信息。
作为对比,还有一种不使用知识图谱的基线方法——“直接提示”(即让大模型自行纠正),其Prompt如下:
消融实验的结果很有意思。针对每种评估框架(HHEM+GraphEval、TRUE+GraphEval、TrueTeacher+GraphEval),将GraphCorrect与直接提示策略进行比较。具体做法:先用对应的评估框架检测幻觉,再用GraphCorrect或直接提示去纠正怀疑含有幻觉的LLM输出,之后重新评估纠正后的输出。
注意,这一过程仅能测量那些我们“认为”已纠正的幻觉,受限于评估框架本身的误差。
表3展示了在直接提示和GraphCorrect两种策略下,原始摘要与纠正版本之间的平均ROUGE-1、ROUGE-2、ROUGE-L分数,用于衡量相似性:
表4则给出了在SummEval、QAGS-C、QAGS-X基准测试中,被认为已纠正的幻觉百分比:
数据显示,GraphCorrect在大多数任务上显著纠正了更多幻觉,仅与QAGS-X数据集相关的两个任务表现略逊。
3、总结
GraphEval这个工作确实有趣。与过往方法相比,它把纯文本比对升级为与知识图谱结合,提升了可解释性。但也存在一些现实问题:知识图谱构建阶段,从LLM输出中抽取三元组时,难免出现信息提取不准确的情况——“吃”出来的东西未必完全正确。
另一方面,GraphCorrect的优势在于:只修改LLM输出中易受幻觉影响的文本段,其余部分保持不变,从而最大限度地维持了与原始文本的相似性。这一特性在ROUGE指标上得到了印证——与直接提示相比,GraphCorrect系统性地生成了更接近原始输出的文本。
这其实是基于知识图谱做事后校验的一个直接实现,闭环了。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名