【RAG】Chain-of-Verification Reduces Hallucination in LLM

2024-03-11 09:12

本文主要是介绍【RAG】Chain-of-Verification Reduces Hallucination in LLM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

note

  • 百川智能还参考Meta的CoVe(Chain-of-Verification Reduces Hallucination in Large Language Models)技术,将真实场景的用户复杂问题拆分成多个独立可并行检索的子结构问题,从而让大模型可以针对每个子问题进行定向的知识库搜索,提供更加准确和详尽的答案。

文章目录

  • note
    • Chain-of-Verification Reduces Hallucination in Large Language Models
    • 背景
    • 相关工作
    • 验证链 CoVe
      • (1)生成基准回复
      • (2)设计验证
      • (3)执行验证
      • (4)生成最终验证响应
    • 实验
      • (1)实验数据集
      • (2)对比模型
    • 实验结论
      • 1、CoVe提高了基于列表的答案任务的精确度
      • 2、CoVe提高了闭卷质检的性能
      • 3、指令微调和CoT并未减少幻觉
      • 4、因子式CoVe和两步式CoVe可提高性能
      • 5、进一步明确推理有助于消除幻觉
      • 6、基于CoVe的Llama优于InstructGPT、ChatGPT和PerplexityAI
      • 7、短式验证问题比长式查询回答得更准确
  • Reference

Chain-of-Verification Reduces Hallucination in Large Language Models

缓解LLM幻觉 :Chain-of-Verification 一种基于链式验证思想的自我修正工作解读
论文链接:https://arxiv.org/pdf/2309.11495
在这里插入图片描述

背景

CoVe生成的各代推理都带有验证,如果用户查看这些验证,就能为其决策增加更多可解释性,但这是以增加计算量为代价的,因为要在输出中生成更多token,这与Chain-of-Thought等其他推理方法类似。
在这里插入图片描述

相关工作

大多数减少幻觉的方法大致可分为三类:训练时校正、生成时校正和使用工具。

  • 在训练时校正方法中:尝试通过训练或以其他方式调整模型权重以降低幻觉生成的概率来改进编码器-解码器或仅解码器语言模型的原始从左到右生成。这包括使用强化学习(Roit et al., 2023;Wu et al., 2023)、对比学习(Chern et al., 2023b;Sun et al., 2023b)和其他方法(Li et al., 2023)。
  • 在生成时校正中:一个共同的主题是在基础 LLM 的“之上”做出推理决策,以使它们更加可靠。例如,通过考虑生成token的概率(Mielke et al., 2022;Kadavath et al., 2022)。(Manakul et al. 2023) 从模型中抽取多个样本来检测幻觉。在(Varshney et al. 2023) 使用低置信度分数来识别幻觉,并通过验证程序检查其正确性、减轻幻觉,然后继续生成。
  • 使用外部工具:第三种方法是使用外部工具来帮助减轻幻觉,而不是仅仅依赖语言模型本身的能力。例如,检索增强生成可以通过使用事实文档作为基础(Shuster et al., 2021)或思维链验证(Zhao et al., 2023)来减少幻觉。其他方法包括使用事实核查工具(Chern et al., 2023a;Galitsky, 2023),或链接到带有归属的外部文档(Menick et al., 2022;Rashkin et al., 2023;Gao et al., 2023)。

验证链 CoVe

四个核心步骤:

  • 生成基线回复:给定一个查询,使用 LLM 生成响应。
  • 设计验证:给定查询和基线响应,生成验证问题列表,有助于自我分析原始响应中是否存在任何错误。
  • 执行验证:依次回答每个验证问题,然后将答案与原始响应进行检查,以检查是否存在不一致或错误。
  • 生成最终验证响应:鉴于发现的不一致(如果有),生成包含验证结果的修订响应。

(1)生成基准回复

使用few-shot的prompt声测会给你基准回复:
在这里插入图片描述

(2)设计验证

根据query和基准回复,生成一个验证问题列表。
在这里插入图片描述

(3)执行验证

依次回答验证列表,然后对基准回复,检查是否有不一致or错误。

验证执行的几种变体,分别称为联合、两步、因子和因子+修订:

  • 在联合方法中,规划和执行(第2步和第3步)是通过使用单个LLM提示来完成的,其中的少量演示包括验证问题及其紧随问题之后的答案。这种方法不需要单独的提示。
    • 缺点: 由于验证问题必须以LLM上下文中的基线反应为条件,而且该方法是联合的,因此验证答案也必须以初始反应为条件。这可能会增加重复的可能性,也意味着验证问题可能会产生与原始基线回复类似的幻觉,这就失去了意义。

在这里插入图片描述

  • 两步:将计划和执行分为不同的步骤,这两个步骤都有各自的LLM提示。规划提示以第一步中的基准回答为条件。规划生成的验证问题在第二步中回答,关键是LLM提示的上下文只包含问题,而不包含基准回复,因此一般不会直接重复这些答案。

在这里插入图片描述

  • 因子:将所有问题作为单独的提示独立回答,不过这可能会增加计算成本,在具体实现上,将计划验证阶段生成的问题集解析为单独的问题,以逗号分隔的列表形式生成,然后将它们拆分成单独的LLM提示。

在这里插入图片描述

  • 因子+修订思想在于在回答了验证问题后,通过额外的LLM提示将其作为一个有意的步骤来执行,检查这些答案是否与原始答案不一致。

(4)生成最终验证响应

根据发现的不一致之处(如有),生成包含验证结果的修订回复,通过最后的few shot提示来执行。

实验

(1)实验数据集

  • WIKIDATA数据集,首先使用WikidataAPI在一组自动生成的问题上对CoVe进行测试。
    • 指标:精确度指标(微观平均值)
  • QUEST数据集,维基分类列表问题
    • 指标:精确度指标(微观平均值)
  • 阅读理解基准MultiSpanQA数据集。 MultiSpanQA包含有多个独立答案的问题,从文本中一系列多个不连续的跨度中得出。使用了由418个问题组成的测试集,每个跨度的答案较短。
    • 指标:精确度指标(微观平均值)
  • 长篇传记的生成数据集,模型需根据提示生成所选实体的传记,例如:“告诉我<实体>的传记”。评估指标采用FACTSCORE指标,该指标使用检索增强语言模型对回复进行事实检查(Instruct-Llama,“Llama+Retrieval+NP”)。
    • 指标:FACTSCORE指标,该指标使用检索增强语言模型对回复进行事实检查(Instruct-Llama,“Llama+Retrieval+NP”)

(2)对比模型

首先,使用Llama65B作为基础LLM,并对所有模型使用贪婪解码,由于Llama65B没有经过指令微调,采用针对每个任务的少量实例来衡量每个基准的性能。

其次,与Llama指令微调模型进行了比较,使用Llama2。

在这里插入图片描述

实验结论

1、CoVe提高了基于列表的答案任务的精确度

CoVe在基于列表的任务中提高了大量精确度,例如,在维基数据任务中,CoVe的精确度比Llama65B fewshot 基线提高了一倍多(从0.17提高到0.36)。从正负分类中发现,幻觉答案的数量大幅减少,而非幻觉答案的数量仅有相对较小的减少。
在这里插入图片描述

2、CoVe提高了闭卷质检的性能

CoVe在一般质检问题上也有所改进,这是在MultiSpanQA上测得的结果。观察到,F1比很少的基线(0.39→0.48)提高了23%,提高的原因是精确度和CoVe提高了长式生成的精确度。
在这里插入图片描述
FACTSCORE比很少的基线提高了28%(55.9→71.4),而所提供事实的平均数量也只有相对较小的减少(16.6→12.3)。还在图2中显示了不同事实的改进情况,可以看出CoVe对罕见事实和更常见事实的结果都有改进。

3、指令微调和CoT并未减少幻觉

在所有任务中,采用预训练Llama模型的少量实例基线优于指令调整模型Llama2Chat。fewshot的示例会引导模型给出符合任务预期的输出结果,而一般的指令调整则会产生更多幻觉或错误输出。

标准的思维链(CoT)提示也未能改善这些任务的结果。虽然事实证明,CoT对推理任务有帮助,但它似乎不太适合在这项工作中测量的幻觉问题。

4、因子式CoVe和两步式CoVe可提高性能

与联合CoVe相比,采用因子式CoVe方法可在所有任务中持续提高性能。例如,在长表生成中,FACTSCORE的性能从60.8提升到63.7。

在这里插入图片描述

同样,在维基数据和维基分类列表任务的测试中,两步法也优于联合法,其中两步法在维基数据中的结果最好,而在维基分类中因子法的结果最好。

5、进一步明确推理有助于消除幻觉

在长表生成任务中,CoVe"因子+修订"方法中更复杂的推理步骤,该方法明确交叉检查验证答案是否表明存在不一致。通过这种进一步的明确推理,FACTSCORE指标从63.7(因子)→71.4(因子+修正)有了大幅提高。

表明:在LLM中进行适当和明确的推理可在减少幻觉方面带来改进。
在这里插入图片描述

6、基于CoVe的Llama优于InstructGPT、ChatGPT和PerplexityAI

在长表单生成任务中,的基线Llama65B在FACTSCORE指标方面优于ChatGPT和PerplexityAI模型。

然而,将CoVe应用于基线Llama65B后,其性能不仅超过了ChatGPT和PerplexityAI,还超过了InstructGPT。

与PerplexityAI相比,这一点尤其明显,因为PerplexityAI是一个可以通过检索增强来支持其事实的模型,而CoVe仅使用基础语言模型本身,并通过验证来改进推理。

然而,可以从图2中看到,在检索非常重要的罕见事实方面,PerplexityAI的表现仍然优于CoVe,但在更高频的事实方面,CoVe的表现优于PerplexityAI。

7、短式验证问题比长式查询回答得更准确

在长式回答中,LLM很容易产生一些幻觉。然而,通常情况下,如果专门针对个别事实进行询问,LLM本身就会知道这些幻觉是错误的,与长表生成的其他部分无关。

这可以从维基数据任务中定量看出,在基于列表的问题中,只有∼17%的Llama少量基线答案实体是正确的。然而,当通过验证问题对每个实体进行查询时,发现有70%的实体得到了正确回答。

Reference

[1] Chain-of-Verification Reduces Hallucination in Large Language Models
[2] 百川智能发布Baichuan2—Turbo系列API,开启企业定制化新生态

这篇关于【RAG】Chain-of-Verification Reduces Hallucination in LLM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797371

相关文章

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

LLM应用实战: 产业治理多标签分类

数据介绍 标签体系 产业治理方面的标签体系共计200+个,每个标签共有4个层级,且第3、4层级有标签含义的概括信息。 原始数据 企业官网介绍数据,包括基本介绍、主要产品等 企业专利数据,包括专利名称和专利摘要信息,且专利的数据量大。 LLM选型 经调研,采用Qwen2-72B-Instruct-GPTQ-Int4量化版本,占用显存更少,且效果与非量化相当,

webservice系列3---chain

本节摘要:本节主要介绍webservice的高级特性chain的开发和配置 1.引言       之前在上webservice系列2---javabean&handler中讲了handler的使用,当有多个handler的时候,难道我们要一个一个的在wsdd文件中配置,然后一个一个的引入到需要的webservice中码?of course ,no。Apache组织已经替我们考虑到了这种需求,ch

LLM大模型教程:langchain 教程

软件安装 pip install pymupdfpip install langchainpip install langchain-cliconda install -c pytorch -c nvidia faiss-gpu=1.7.4 mkl=2021 blas=1.0=mkl 由于langchain不支持qwen模型,我们需要自定义模型 from typing import A

LLM模型:代码讲解Transformer运行原理

视频讲解、获取源码:LLM模型:代码讲解Transformer运行原理(1)_哔哩哔哩_bilibili 1 训练保存模型文件 2 模型推理 3 推理代码 import torchimport tiktokenfrom wutenglan_model import WutenglanModelimport pyttsx3# 设置设备为CUDA(如果可用),否则使用CPU#

我的第2个AI项目-RAG with Gemma hosted on HuggingFace and Weaviate in DSPy

目录 项目简介概述时间kaggle地址主要工作和收获技术栈数据集模型表现 未来项目说明思路和原则为什么不把现在的项目做深一点?博客风格转变 bug修复版本兼容问题 项目简介 概述 本项目简要介绍了如何使用 DSPy 构建一个简单的 RAG 管道,且利用了托管在 Hugging Face 上的 Gemma LLM模型 和 Weaviate 向量数据库。 时间 2024.09

设计模式 -- 职责链模式(Chain of Responsibility Pattern)

1 问题引出 1.1 学校 OA 系统的采购审批项目 如果金额 小于等于 5000, 由教学主任审批 (0<=x<=5000)如果金额 小于等于 10000, 由院长审批 (5000<x<=10000)如果金额 小于等于 30000, 由副校长审批 (10000<x<=30000)如果金额 超过 30000 以上,有校长审批 ( 30000<x) 1.2 传统方式 传统方式是

[论文笔记] LLM大模型剪枝篇——2、剪枝总体方案

https://github.com/sramshetty/ShortGPT/tree/main My剪枝方案(暂定):         剪枝目标:1.5B —> 100~600M         剪枝方法:                 层粒度剪枝                 1、基于BI分数选择P%的冗余层,P=60~80                 2、对前N%冗余层,

jmeter压力测试,通过LLM利用RAG实现知识库问答,NEO4J部署,GraphRAG以知识图谱在查询时增强提示实现更准确的知识库问答(9/7)

前言         这周也是杂七杂八的一天(高情商:我是一块砖,哪里需要往哪里搬),首先是接触了jemter这个压力测试工具,然后帮公司的AIGC项目编写使用手册和问答手册的第一版,并通过这个平台的智能体实现知识库问答的功能展示,以及部分个人扩展和思考(NEO4J创建知识图谱的GraphRAG)。 Jmeter         Jmeter是一个压力测试工具,一开始导师叫我熟悉的时候我还说