利用知识图谱检测并修正大模型幻觉:GraphEval策略的简单粗暴实现思路

我们来看知识图谱用来做大模型幻觉评估和修正的一个工作,其实是知识图谱参与大模型全周期的最后一环。

最近看到一个工作 《GraphEval: A Knowledge-Graph Based LLM Hallucination Evaluation Framework》(https://arxiv.org/pdf/2407.10793),提出了一个基于知识图谱的幻觉检测框架,用于评估大模型的回复,并检测与提供的知识不一致的地方,即所谓的“幻觉”。

此外,其还提供了一个将幻觉检测的结果进行进一步纠正的思路,虽然全是prompt,但也很有趣。从实现思想上来看,其基于通过知识图谱结构表示信息的思想,旨在解决之前幻觉检测方法缺乏可解释性的问题,从而提出了一个两阶段过程。

这种思路很有趣,也足够简单,感兴趣的可以看看,会有收获。

1、GraphEval幻觉检测思路

GraphEval首先从LLM输出中构建知识图谱,然后迭代检查每个三元组(triple)是否在给定上下文中事实一致。如果任何三元组被识别为不一致,输出将被视为事实不一致,并可能返回不一致的三元组以提供可解释性。

示意图如下所示:

我们分成两个方面来看,一个是GraphEval幻觉检测思路,另一个是GraphCorrect幻觉纠正实现思路。

第一阶段:从待评估的LLM输出中构建知识图谱。

对应的prompt如下:

第二阶段:迭代检查知识图谱中的每个三元组(triple),确定它们是否在给定上下文中事实一致。

将知识图谱中的每个三元组输入到一个现成的幻觉检测方法(如自然语言推理模型)中,并与提供的上下文进行比较,以检查是否存在不一致性。

如果任何三元组被识别为不一致,整个输出将被视为事实不一致,并返回不一致的三元组以提供可解释性。

其中,这一步使用自然语言推理(NLI)模型,通过将每个三元组与上下文一起输入NLI模型,获得每个三元组包含幻觉的概率。如果至少一个三元组产生的概率大于0.5,则将示例分类为不一致

这块的方法之前我们看到过许多,例如,代表性的有

HHEM:基于DeBERTaV3模型,并最初在NLI数据上进行训练,Vectara创建的幻觉评估模型进一步在标注为一致性的数据库上进行微调。用于微调的数据集包括:FEVER、VitaminC和PAWS。此模型相对较小,仅需要738MB的内存,因此运行时间明显更短。

TRUE:基于T5-XXL模型,并类似于TRUE论文中描述的模型进行训练。与该论文中使用的ANLI数据集不同,此模型在与HHEM相同的数据集上进行训练,再加上以下数据集:SNLI、MNLI和Scitail。此模型需要45.5GB的内存。

TrueTeacher:Gekhman等人利用LLM评估幻觉的能力,通过注释模型生成的摘要生成合成数据。然后他们使用这些合成数据进一步微调中的模型,从而在TRUE基准测试中实现最先进的性能。此模型与TRUE模型大小相同。

不同模型对应的结果对比如下:

2、GraphCorrect幻觉纠正实现思路

GraphEval 的输出可以扩展到纠正幻觉。首先识别知识图谱中可能包含幻觉的所有三元组(即那些概率大于0.5的三元组)。

分成3步:

首先,识别幻觉,先使用GraphEval检测方法识别出知识图谱中可能包含幻觉的三元组。

其次,纠正三元组,将这些三元组和上下文一起输入到LLM中,生成更正后的三元组。

最后,将原始LLM输出中的信息替换为更正后的三元组中的信息,对应的prompt如下:

与此相对应的,有不使用KG,而直接让大模型自行进行纠正的prompt,叫做“直接提示”如下:

最终对比的结果还是很有趣的,可以看看消融试验:

对提出的每种评估框架(HHEM+GraphEval、TRUE+GraphEval和TrueTeacher+GraphEval),将GraphCorrect与一种基本的提示策略进行了比较,作为幻觉纠正的基线。这种基线方法中使用的提示,也就是“直接提示”。

对于每个框架,首先识别幻觉,然后仅使用GraphCorrect或直接提示纠正怀疑包含幻觉的LLM输出,然后重新应用评估框架以检测纠正后的LLM输出中的幻觉。但此过程仅允许测量我们认为已纠正的幻觉,考虑到所使用的评估框架可能存在的错误。

表3中报告了使用直接提示和GraphCorrect在不同数据集和幻觉检测框架下,原始摘要和纠正版本之间的平均ROUGE-1、ROUGE-2和ROUGE-L分数,以衡量相似性。

表4中使用直接提示策略和GraphCorrect在SummEval、QAGS-C和QAGS-X基准测试中,认为已纠正的幻觉的百分比。幻觉首先由HHEM+GraphEval、TRUE+GraphEval和TrueTeacher+GraphEval分别检测,然后使用相同的指标进行纠正评估

可以看到,GraphCorrect在所有任务中显著纠正了更多的幻觉,除了与QAGS-X数据集相关的两个任务。

3、总结

本文主要介绍了GraphEval这个工作,其还是很有趣的,与之前的工作相比,其将纯文本格式的比对与知识图谱相结合。但也存在一些问题。例如:知识图谱构建阶段,可能会发生一些信息,吃出来的东西并不准确。

此外,GraphCorrect提供了仅修改LLM输出中易受幻觉影响的文本段的优势,同时保持其他部分不变,从而保持与原始文本的相似性。

这一特性通过在所有实验场景中评估原始摘要和纠正版本之间的ROUGE-1、ROUGE-2和ROUGE-L指标来说明,与直接提示相比,GraphCorrect系统地生成了与原始LLM输出更接近的文本。

这其实又是基于知识图谱进行事后校验的一个直接实现,这些闭环了。

参考文献

1、https://arxiv.org/pdf/2407.10793

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期围绕大模型&知识图谱&RAG&文档理解四大主题,进行前沿技术、实践项目等总结等内容,欢迎关注。

对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。

加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入


相关推荐

  • 智慧教育+大模型:技术与应用
  • 全网祝贺!Andrej Karpathy官宣创业:是自己热爱的AI+教育
  • 王者归来!LSTM 终于爆发了。。。
  • 面了一个字节60K后端大佬,见识到了基础天花板!
  • Dubbo的核心流程
  • 前端必备技能。。。
  • 代码合并分支用rebase还是merge?
  • 把 Canvas 放到 WebWorker 中去绘制?想都不敢想有多爽!
  • 腾讯文档助力业务提效的100种玩法!TVP吐槽大会邀您来探索
  • 一文搞懂大模型!基础知识、 LLM 应用、 RAG 、 Agent 与未来发展
  • 3 秒极速删除 node_modules,无需第三方工具!
  • 封装WebSocket消息推送,干翻Ajax轮询方式
  • 北漂7年,归来仍是牛马
  • Mistral AI两连发:7B数学推理专用、Mamba2架构代码大模型
  • CCL2024持续注册 | 第二十三届中国计算语言大会全日程公开
  • PyTorch团队首发技术路线图,近百页文档披露2024下半年发展方向
  • [开源]一款企业级的报表系统,支持在线设计报表,可视化生成报表
  • 分享一次 ShardingJDBC 亿级数据分表真实经验
  • 要重视!!!PLC通讯慢影响很很很大大大
  • 只需要3步!!!浏览器管理Redis