自相矛盾的LLM幻觉:评估、检测、缓解10.30

news2024/11/17 6:25:23

自相矛盾的LLM幻觉:评估、检测、缓解

  • 摘要
  • 引言
  • 相关工作
  • 定义和激励自我矛盾
  • 4 触发、检测和减轻自相矛盾的行为
  • 5 实例化到开放文本生成
  • 6 实验

在这里插入图片描述

摘要

大型语言模型(Large LMs)容易产生包含虚构内容的文本。其中一个重要问题是自相矛盾,即LM在同一上下文中生成两个相互矛盾的句子。在这项工作中,对各种经过指导的LM进行了全面的自相矛盾调查,包括评估、检测和缓解。揭示了当LM为开放领域的主题生成文本时,自相矛盾的普遍性,例如ChatGPT生成的所有句子中有17.7%存在自相矛盾。自相矛盾还可以作为基于检索的方法的补充,因为其中有很大一部分(例如ChatGPT的35.8%)无法通过维基百科进行验证。然后,提出了一种基于提示的新型框架,旨在有效地检测和缓解自相矛盾。检测器在提示ChatGPT时可以达到很高的准确性,例如约80%的F1得分。缓解算法迭代地改进生成的文本,去除矛盾信息,同时保留文本的流畅性和信息性。重要的是,整个框架适用于黑盒LM,不需要外部基础知识。

引言

大型语言模型在大规模文本语料库上进行预训练,并进行精调以遵循人类指令。指令调整的语言模型,如ChatGPT,在解决自然语言任务方面展示了卓越的零样本能力。因此,它们越来越多地融入到日常生活的各个方面,包括在线搜索和专业环境。然而,即使是像ChatGPT和GPT-4这样广泛采用的LM,也容易产生荒谬或不准确的内容,通常称为幻觉。这引发了对LM的可信度的重大关切。检测和缓解幻觉仍然是一个尚未解决的挑战,尤其是对于只能作为黑盒子访问的最先进的专有LM。

关于自相矛盾幻觉的推理
本研究专注于一种重要的幻觉类型,称为自相矛盾,当LM在相同的语境下生成两个逻辑上不一致的句子时会出现这种情况。关键见解是,解决自相矛盾是对抗非事实模型输出的一个便捷的途径。检测到自相矛盾必然揭示了LM的非事实性,因为这两个句子不能同时正确。此外,从一对矛盾句子中去除冲突信息严格减少了非事实性。重要的是,无论是矛盾检测还是去除,都可以通过对这两个句子进行逻辑推理来完成,而不依赖于检索外部基础知识或比较大量样本,这在实践中可能过于昂贵。

基于上述洞察,本文提出了一个三步骤的流程来推理自相矛盾。

为了引发自相矛盾,采用适当的约束条件来生成相关的句子对。然后,使用各种现有的提示策略来检测自相矛盾。最后,开发了一个迭代的缓解过程,对文本进行局部编辑,去除矛盾信息,同时保留其他重要的文本质量,如流畅性和信息性。由于本框架通过提示进行操作,因此可以直接应用于黑盒LM。

自相矛盾的意义
对四个现代语言模型进行了全面评估:GPT-4、ChatGPT、Llama2-70B-Chat和Vicuna-13B。重点关注开放领域的文本生成,这是一个使用LM内部知识生成长文本的任务,在这个任务中,可信度非常重要,但也很具有挑战性。

本文的评估凸显了自相矛盾的重要性。具体而言,自相矛盾在评估的LM中普遍存在,例如ChatGPT生成的所有句子中有17.7%存在自相矛盾。此外,相当大一部分的自相矛盾(例如ChatGPT的35.8%)无法通过维基百科进行验证,维基百科是一个全面的知识库用于检索。换句话说,本文的工作作为检索方法的有价值补充。

有效的检测和缓解
本文提出的框架在检测(例如,约80%的F1分数)和缓解自相矛盾(例如,最多减少89.5%的自相矛盾,同时保持文本的信息性和流畅性)方面非常有效。在表1(绿色部分是正确的,红色部分是错误的)中展示了两个ChatGPT生成的自相矛盾实例,这些实例通过本文的方法成功地触发、检测和缓解。在附录C中,提供了更多的长篇例子,涵盖了句子和文本级别。
在这里插入图片描述
实用工具
高准确性和高效性凸显了我们框架的实用性。我们开发了一个用户友好的工具,用于在与语言模型的交互过程中生成幻觉的警告,并自动进行缓解。我们的代码和数据集也是公开可用的。

相关工作

大型语言模型
训练现代语言模型通常需要两个步骤:预训练和指导微调。商业指导微调的语言模型通常是专有的,只提供黑盒访问。从Alpaca开始,出现了开源的指导微调语言模型,如Vicuna和Llama2。指导微调的语言模型在日常生活中的应用越来越广泛,因为它们在文本推理方面具有强大的能力。综合性的基准测试,如MMLU和HELM,已经提出来全面评估语言模型的整体能力。本文的工作在这些评估之外,专注于评估语言模型解决幻觉问题的能力。

自然语言生成中的幻觉
根据Ji等人的调查,幻觉是不同自然语言生成任务中的一个常见问题,包括翻译、摘要和对话。最近,提高用于事实问题回答的语言模型的能力引起了越来越多的关注。这些问题通常围绕个别事实展开,简短的回答就足够了。相比之下,开放领域文本生成任务面临更大的挑战,因为它需要语言模型生成包含数十个事实的长文本。另外两项研究探索了开放领域文本生成中的幻觉问题。而Lee等人需要访问训练和推理的内部,本文的工作设计成适用于黑盒语言模型。与Manakul等相比,本文的框架在幻觉检测方面更准确,并且能够进行缓解幻觉。

定义和激励自我矛盾

语言模型 考虑一个语言模型,它生成由一系列句子组成的文本:x=[x1,…,x|x|]。通常文本生成过程以指定要完成的任务的用户提示符p为条件。对于生成多个句子x,将这个过程表示为x ~ LM(·|p)。类似地,对于单个句子x,使用x ~ LM(·|p)。

语言模型的自我评估 检查语言模型生成的一对句子(x,x’)。为了使x和x’矛盾,它们必须描述相同的主题。因此,通过提供一个上下文c来限制它们的生成,形式上是一个提示。也就是说,x ∼ LM(· | c),x’ ∼ LM(· | c)。当两个句子在逻辑上不一致时,将(x,x’)定义为LM的自相矛盾。与之前使用现有句子评估LM的幻觉的研究不同,本文定义要求这两个句子都是从同一个LM生成的。与在CoT-SC的定义相对应,本定义更加广泛地涵盖了更多背景下的事实陈述。

自相矛盾与非事实性 当x和x’相互矛盾时,它们中至少有一个被保证是事实上不正确的。根据给出的注释,ChatGPT生成的自相矛盾中,在63.1%的情况下,甚至两个句子都是非事实的。由于x和x’都来自同一个语言模型,它们的矛盾必然暴露了语言模型的非事实性。进一步利用这一观点,从一对相互矛盾的句子中删除冲突信息严格减少了非事实性。这些关键特性使能够通过自相矛盾检测和缓解非事实性,每次仅使用两个抽样的句子。

删除冲突信息的过程可以通过以下示例说明:
例子:
句子1:今天是周一,我要去上班。
句子2:今天是周一,我要放假去旅行
这两个句子相互矛盾,一个说要去上班,另一个说要放假去旅行。为了删除冲突信息,我们可以执行以下步骤:
1.识别冲突点:冲突点在于句子1中强调要去上班,而句子2中强调要放假去旅行。
2.分析语境:在这个例子中,我们可以考虑工作日的常规情况,通常在周一是要去上班的,而不是放假去旅行。
3.删除冲突信息:根据分析的结果,我们可以删除句子2中的冲突信息,使其与句子1保持一致。修改后的句子2可以是:“今天是周一,我要去上班。”

与本文的方法类似,相关工作利用基于抽样的方法来检测非事实性。然而,他们并没有从上述关于非事实性和自相矛盾之间联系的洞见中获益。因此,他们需要大量样本才能达到合理的检测准确性,并且无法进行缓解操作。

自相矛盾与知识检索
解决幻觉的一种常见方法是依赖外部基于实际知识的检索,以识别非事实内容或指导事实文本生成。然而,实际上获得高质量的外部知识通常是具有挑战性和昂贵的。相比之下,自相矛盾可以在不依赖外部知识的情况下进行处理,因为它只需要逻辑推理,这正是最新的语言模型的一项特殊优势,甚至可以以零样本的方式进行。此外,语言模型的生成是灵活的,并且可以产生甚至在用于检索的综合知识库中都无法获取的信息。相反,这些情况可以通过自相矛盾来捕捉,使本工作成为基于检索方法的有价值的补充。事实上,评估结果显示,实际世界中大部分的自相矛盾无法使用维基百科进行验证,例如ChatGPT为35.8%。

4 触发、检测和减轻自相矛盾的行为

考虑两个语言模型,gLM用于生成文本x = [x1,x2,…,x|x|],aLM是一个分析器语言模型。

在本节中,描述了触发gLM自相矛盾的算法,以及使用aLM检测和减轻自相矛盾的算法。从这些算法中,分解出四个涉及解决不同文本推理任务的重要实用函数。以下是这些实用函数的通用定义。第5节将讨论它们的具体实现。

  • extract_contexts(xi,x):提取句子xi的上下文列表,可能使用来自x的元数据信息,如x的主题。
  • gLM.gen_sentence©:查询gLM以生成与上下文c兼容的新句子x’i。
  • aLM.detect(xi,x’i,c):调用aLM来预测xi和x’i在上下文c中是否相互矛盾。
  • aLM.revise(xi,x’i,c):接收一对在上下文c中相互矛盾的句子(xi,x’i)。它调用aLM生成xi的修订版本,其中删除了xi和x’i之间的冲突信息。修订后的句子还应尽可能保留非冲突信息,并与上下文c保持连贯。

触发 通常情况下,gLM只会生成每个句子一次。为了触发自相矛盾,需要适当地查询gLM,以生成第二个句子来形成一对。开发了算法1来实现这个目的。在第2行,它迭代gLM生成的文本x的句子。对于每个句子xi,它调用extract_contexts来获取上下文列表(第3行)。然后,在第4行,它运行gLM.gen_sentence,返回与上下文c对齐的替代句子x’i。在第5行,使用yield返回生成的句子对(xi,x’i)及其上下文c,遵循标准的Python语义。上下文c在生成x’i时起着关键作用。我们的目标是使c有效地约束x’i具有与xi相同的范围。同时,我们希望c提供适当的自由度,以触发gLM生成与xi相矛盾的x’i。我们将在第5节详细讨论实现这一双重目标的方法。

检测 通过在算法1的输出上调用aLM.detect来检测自相矛盾。这个过程与自然语言推理(NLI)密切相关,涉及预测前提和假设之间的关系:蕴含、中立或矛盾。检测与一般的NLI有所不同:
(i)要求两个句子都是由同一个语言模型生成的;
(ii)考虑检测过程中两个句子出现的上下文;
(iii)检测结果是二元的:矛盾或非矛盾。
在这里插入图片描述
缓解 缓解方法采用了对x进行局部修订的方式,以消除自相矛盾的信息。不会更改未检测到自相矛盾的句子,这对于保持x的其他重要文本特征(如流畅性和信息量)非常重要。修订一个句子的过程如算法2所示,该算法适用于x的所有句子。如果aLM.detect预测到自相矛盾,使用aLM.revise来消除句子对中的矛盾信息。否则,句子xi保持不变。

为了进一步减少自相矛盾,在更新后的x上重复上述步骤,创建了算法3中概述的迭代过程。在每次迭代中,针对所有句子对(xi,x’i)和上下文c(第6行)调用算法2中的mitigate_one。mitigate_one的输出重新赋值给xi,并最终写回到x的文本中。经过一定数量的迭代(例如,在实验中为3次),预期减轻过程会收敛,即使aLM.detect可能仍然会识别出一些剩余的自相矛盾。在这种情况下,选择删除相应的句子。通过这一步骤,所有预测的自相矛盾都被消除了。这通常不会影响结果文本的质量,如附录B的表7所示。
在这里插入图片描述

在这里插入图片描述

5 实例化到开放文本生成

在开放域文本生成上实例化了本框架,其中要求语言模型生成包含数十个事实的长文本,涵盖各种主题。专注于这个任务具有三个关键优势:
(i)它与现代语言模型在生成跨领域文本方面的实际应用密切相关;
(ii)它非常适合分析自相矛盾,因为它要求语言模型解开其内部知识的纠结;
(iii)它提供了超出回答关于个别事实的问题的有价值的见解。

本文的方法基于提示,因此非常适合专有的、只能通过API访问的最先进的语言模型。

生成初始文本 首先,查询gLM以根据特定领域的给定主题t生成文本x。向gLM提供提示语“请告诉我关于t的信息”,指示它以百科全书的风格生成一系列反映其对t的内部知识的句子。重要的是,这个方法除了主题t之外不需要其他输入。

定义文本 定义上下文给定由gLM生成的文本x和x中的一个句子xi,使用符号x<i来表示xi之前的句子,即x<i= [x1, x2, . . . , xi−1]。定义xi的上下文c为一个包含三个元素的元组。前两个元素是x的主题t和前缀x<i。第三个元素是从xi中使用信息抽取(IE)系统提取的关系三元组(s,r,o)。选择CompactIE因为它适用于开放领域,并从输入句子的片段构建三元组元素。需要注意的是,不同句子的三元组数量可能会有所不同。

触发 为了实例化gLM.gen_sentence©,将c格式化为一个提示语。在图1中展示了一个示例提示(为了演示目的进行了缩短;完整的提示可以在附录D中找到)。它包括c的元素,如主题t(来自MIT EECS的教授William T. Freeman),前缀x<i和关系三元组的前两个项目(s:He和r:was born)。这些元素用于限定输出句子x’i的范围。重要的是,省略了关系三元组的第三个元素o,为gLM的生成过程引入了一定的自由度。然后,提示类似于一个填空测试,LM根据其内部知识填充空白。为了使gLM生成严格的一个句子,更改了系统消息并提供了少量的示范。根据提示,gLM(在本例中为ChatGPT)成功生成了与上下文相符的句子,用红色突出显示。在附录B的表5中,对gLM.gen_sentence运行了替代的提示策略,如改写(过度约束)和要求继续(不足约束)。提示明显优于所有基线,因为它强制执行了适当的约束水平。

检测 利用一个零样本提示来实例化aLM.detect(xi,x’i,c)。这个提示包括主题t、前缀x<i和句子对(xi,x’i)。应用了思维链提示(Chain-of-Thought Prompting) ,要求aLM首先提供一个解释,然后提供一个结论。图2中演示了这样一个提示的例子。两个gLM生成的句子给出了William T. Freeman的不同出生年份,明显表明存在矛盾。aLM(ChatGPT)对于这种情况正确地预测了不一致性。根据Freeman的维基百科页面 ,他的出生年份是1957年,因此这两个句子在事实上都是不正确的。在附录B的表6中,考察了其他提示策略 ,发现思维链提示的效果优于它们。
在这里插入图片描述
修正 为了实例化aLM.revise(xi,x’i,c),坚持使用零样本提示。给定主题t和前缀x<i,提示指示aLM删除xi和x’i之间的冲突信息。还在提示中提供具体的指示,以使输出信息丰富并与上下文连贯。图3展示了一个例子。aLM(ChatGPT)成功地修订了句子,消除了问题的出生日期,并返回了一个忠实而流畅的句子。
在这里插入图片描述

6 实验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows server 2016-IIS静态服务器-设置详细过程

文章目录 1.打开仪表盘新建角色2.iis功能模块3.启动服务器4.优点 1.打开仪表盘新建角色 2.iis功能模块 能选上的尽量选上&#xff0c;除非知道自己用不上。 然后确认&#xff0c;下一步&#xff0c;安装。 3.启动服务器 搜索IIS&#xff0c;启动IIS管理器。 启动网站。 右…

【杂记】Filter过滤器和Interceptor拦截器的区别

过滤器Filter与拦截器Interception区别&#xff1f; 包的位置不同。 filter位于tomcat里面&#xff0c;interception位于Spring-webmvc filter位置&#xff1a; interceptor位置&#xff1a; 实现方式不同。在自定义的时候&#xff0c;filter我们可以实现Filter接口&#xf…

精品Python产品销售数据可视化大屏系统-仓库出入库进销存储

《[含文档PPT源码等]精品基于Python的产品销售数据可视化系统的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django …

组学数据上传(六)|GEO数据库数据上传实操

最近有些老师反馈文章发表时要求提供GEO登录号,如:GSEXXXX&#xff0c;问要怎么获取这种登录号?这时就需要把数据上传至GEO数据库了。还在等什么&#xff0c;跟着小编了解下GEO数据库&#xff0c;手把手教您上传数据至GEO数据库。 GEO数据库全称GENE EXPRESSION OMNIBUS&…

北京新一代信息技术产教联合体成立,360以ISC安全课助力建设工作

10月29日&#xff0c;北京新一代信息技术产教联合体&#xff08;简称联合体&#xff09;成立大会在北京360大厦A座报告厅成功举行。本次大会在中关村科技园区朝阳园管理委员会、北京市教委职业教育与成人教育处的指导下&#xff0c;由360数字安全集团、北京电子城高科技集团股份…

产品经理如何写好互联网产品说明书

互联网产品说明书是产品经理在产品开发过程中必不可少的文档之一。它起到了明确产品的功能和特性的作用&#xff0c;帮助团队成员更好地理解和掌握产品的核心功能。因此&#xff0c;作为产品经理&#xff0c;应该重视互联网产品说明书。那么产品经理该如何写好互联网产品说明书…

Mac电脑VS Code配置Flutter开发环境(图文超详细)

一、安装Android Studio 官网地址&#xff1a; https://developer.android.google.cn/ 历史版本下载地址&#xff1a; https://developer.android.com/studio/archive?hlzh-cn 二、安装Xcode 到App Store下载安装最新版本&#xff0c;如果MacOS更新不到13.0以上就无法安装…

【多线程面试题十四】、说一说synchronized的底层实现原理

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说synchronized的底…

三分钟带你了解JS、原型、原型链

1.什么是JS&#xff1f; JavaScript是一种基于对象的脚本语言&#xff0c;它不仅可以创建对象&#xff0c;也能使用现有的对象&#xff1b; 它是基于原型编程、多范式的动态脚本语言&#xff0c;并且支持面向对象、命令式、声明式、函数式编程范式&#xff1b; 白话一点说就是…

算法的时间复杂度及空间复杂度

目录 一、前言 二、时间复杂度 1.时间复杂度定义 2.时间复杂度描述方法 三、实例代码 实例1&#xff08;取影响最大的项&#xff09; 实例2&#xff08;舍去系数&#xff09; 实例3&#xff08;不确定大小关系的用max函数取最大&#xff09; 实例4&#xff08;常数次的…

【IDEA】每个方法之间如何设置分隔线

修改后效果&#xff1a; 各个方法之间出现了分隔线

大模型LLMs 部分常见面试题答案-基础面

题库来源&#xff1a;GitHub - km1994/LLMs_interview_notes: 该仓库主要记录 大模型&#xff08;LLMs&#xff09; 算法工程师相关的面试题 目录 1. Prefix Decoder、Causal Decoder和Encoder-Decoder的区别 1.1 Prefix Decoder 1.2 Causal Decoder 1.3 Encoder-Decoder …

前端包管理工具详解

一、npm包管理工具 1.代码共享方案 我们已经学习了在JavaScript中可以通过模块化的方式将代码划分成一个个小的结构&#xff1a; 在以后的开发中我们就可以通过模块化的方式来封装自己的代码&#xff0c;并且封装成一个工具&#xff1b;这个工具我们可以让同事通过导入的方式…

【多线程面试题十八】、说一说Java中乐观锁和悲观锁的区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说Java中乐观锁和悲…

单元化架构的思考

银行业“多活”的发展历程 受监管政策的要求&#xff0c;银行一般会在同城、异地或者多地进行数据中心建设&#xff0c;以保证系统的稳定运行&#xff0c;但从目前实际情况来看&#xff0c;“同城双活”目前仍是很多银行采用的主要形式。银行业的“多活”架构在发展过程中存在三…

文件管理怎么清内存?效率提升一倍

定期清理文件管理可以释放存储空间和提高系统性能。随着时间的推移&#xff0c;手机中可能会存储大量无用的数据&#xff0c;例如缓存、垃圾文件等&#xff0c;导致系统运行缓慢。那么如何清理文件管理的内存呢&#xff1f;下面介绍三种方法。 一、搜索无用的文件夹进行清理 1…

钛虎机械臂移植

安装软件 1 安装fcl git clone https://gitee.com/xjEzekiel/fcl.git cd fcl mkdir build cd build cmake .. make sudo make install2 安装octomap sudo apt install ros-melodic-octomap-ros3 其他 sudo apt install ros-melodic-eigen-stl-containers sudo apt install r…

SAP ABAP SALV DEMO

这几天听了翱翔云天的几个分享视频&#xff0c;发现做了这么多年的ABAP&#xff0c;更多的是实现功能&#xff0c;但是在优化和原理层面&#xff0c;还是相当欠缺&#xff0c;虽然在甲方是属于6边形战士的存在&#xff08;ABAP&#xff0c;BASIS&#xff0c;BW&#xff0c;PO&a…

【React】P2 create-react-app基础操作

文章目录 当前以及未来的开发&#xff0c;一定是&#xff1a;组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中&#xff0c;默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

生产者-消费者模型

目录 1、生产者-消费者模型是什么 2、Java中的实现 3、应用于消息队列 3.1 引入依赖 3.2 rabbitmq网站新建队列queue 3.3 模块中配置application.yml 3.4 生产者实现类 3.5 单元测试&#xff0c;发送msg到rabbitmq的队列(my_simple_queue) 3.6 消费者实现类 3.7 从ra…