如何利用验证链技术减少大型语言模型中的幻觉

一、前言

随着大型语言模型在自然语言处理领域取得了惊人的进步。相信深度使用过大模型产品的朋友都会发现一个问题,就是有时候在上下文内容比较多,对话比较长,或者是模型本身知识不了解的情况下与GPT模型对话,模型反馈出来的结果都是看似合理却不是我们需要的答案,实际上就是大模型出现了“幻觉”,即生成不真实的信息或虚构的回答。这对模型的可信度产生了负面影响。

验证链技术为减少模型中的幻觉提供了一种有效方法。它要求模型在生成每个断言时,同时提供一个证据链以支持该断言。这强制模型生成更加符合事实和逻辑的输出,减少臆造信息的概率。

在本文中,我将详细介绍验证链技术的工作原理,以及如何应用这一技术来减少大型语言模型生成的虚假信息。我们将探讨验证链的不同构建方法,以及它们对模型生成结果的影响。最后,我将讨论验证链技术在提高模型可信度方面的优势、存在的 LIMIT、以及未来的发展方向。

二、幻觉频繁发生的几种场景

在大型语言模型(LLM)中,幻觉频繁发生的几种典型场景包括:

2.1、开放域问答

在开放域问答中,LLM可能会自信地生成错误或虚构的答案。例如,当被问及一些模型不了解的专业知识问题时,LLM可能会自造信息来回答问题。

2.2、长文本生成

让LLM进行长文本的自由生成时,它可能会逻辑混乱,产生大量不真实的内容。例如让其编故事或创作文章时,就容易出现脱离事实的虚构内容。

2.3、将个人价值判断作为事实

LLM可能会将自己的个人观点、偏见作为客观事实来生成文本,从而产生与真实情况明显不符的输出。

2.4、数值预估

在进行数值预估时,LLM可能给出完全不合理的数字,比如被问及一座山的高度时却给出明显不准确的估算。

2.5、推理和多步触发

在需要进行多步推理时,LLM容易在逻辑上出现断层,导致最后的输出存在诸多幻觉。

这些都是LLM目前容易产生幻觉的场景。我们需要通过验证链等技术来约束模型,减少这种虚假信息的生成。

三、什么是验证链 (Cove)?

验证链是一项新技术,由Meta AI的研究人员 Shehzaad Dhuliawala 等人在论文《验证链减少大型语言模型中的幻觉》中提出。它结合了模型的提示和一致性检查。验证链(CoVe)背后的概念是,由大型语言模型(LLM)生成的回答可以用来验证自身。这种自我验证过程用于评估初始回答的准确性,并对其进行精炼以提高精度。要实现这一点,需要巧妙地构建和排序LLM提示。

该研究旨在解决大型语言模型产生可信但不正确信息的问题,即幻觉。研究人员提出了一种名为验证链(CoVe)的方法,首先模型生成初稿回答,然后创建问题来检查初稿中的事实,以无偏见地回答这些问题,并最终生成经过验证的最终回答。研究发现,验证链在各种任务中减少了幻觉的发生。

四、验证链 (CoVe) 减少幻觉的4个步骤

  1. 生成基准回答:从大型语言模型中获得一个简单的输出作为起点,无需任何其他特殊提示,以获得初始回答。这一初始步骤不仅作为验证链的起点,还作为通过验证链提升的基准。然而,由于这样的基准回答通常容易出现幻觉,CoVe方法旨在在后续阶段检测和纠正这些不准确之处。

  2. 计划验证问题:在给定原始查询和基准回答的条件下,模型被指示生成一组验证问题,旨在评估初始基准回答中所做的事实断言的准确性。重要的是强调,这些验证问题不是预定义的模板;相反,语言模型可以根据需要以任何适当的方式来表达它们。然而,这些验证问题应该以一种有助于改进基准回答的方式构建。

  3. 回答验证问题:大型语言模型通过多种变体(如联合、两步、分解和分解+修订)回答计划的验证问题,每种变体都有其独特的方法和复杂程度。这个验证过程可以包括通过网络搜索进行验证等工程技术/外部工具。同时,您可以在验证链的所有阶段依赖LLM本身,LLM将验证自己的回答。

  4. 生成最终验证的回答:利用这些答案,模型对初始草稿进行了改进,并生成了一个更准确的最终回答。

五、基于 LangChain 来测试验证链

作者引入的验证过程通过一系列的问题进行基准测试。这些问题被分为三个主要类别(尽管作者最初将它们分为四个类别):

  1. 维基数据与维基类别列表:这个类别涉及到期望以实体列表形式回答的问题。例如,像“哪些政治家出生在波士顿?”或者“能举出一些越南特有的兰花吗?”这样的问题,应该得到提供特定实体列表的答案。

  2. 多跨度 QA:这个类别的问题寻求多个独立的答案,每个答案都来自文本中不相邻的不同部分。一个例子是:“谁发明了第一台机械化印刷机,是在哪一年?”答案是“约翰内斯·古腾堡,1450年”。

  3. 长篇生成:这个类别主要包括作者基准测试中强调的传记性问题,但并不仅限于传记。任何需要详细或长篇回答的问题都属于此类别。

我已经按照原始论文中概述的四个阶段实施了 CoVe 管道测试。基于前面提到的问题类型,我建立了三个不同的 CoVe 链。此外,我还加入了一个路由机制,将原始查询引导到适当的链条。

路由器机制:当用户输入他们的查询或问题时,这个机制就开始运作。它将用户的问题分类为之前提到的三个类别之一:维基列表问题、多跨度问题或长篇问题。根据这种分类,路由器然后将问题引导到适当的链条,每个链条都专门设计来处理三种问题类型中的一种。这种分类是通过一个简单的少量提示设计实现的。你可以在这里获取更多关于提示的想法。

基线响应:这个阶段很直接,不需要任何提示制作。此时,用户的查询被 LLM 处理,得到我们称之为“基线响应”的结果。这个初始响应将随后被评估和精炼,以产生最终答案。你可以在这里获取更多关于所有类型问题的提示。

验证问题生成:这个阶段至关重要,需要精心制作和优化提示,以确保验证问题与原始查询无缝对接。如果这些验证问题偏离了主要意图,整个链条的目的可能会受到损害。为了更好地理解这一点,我们举一个例子。

基线响应:1. 萨蒂亚·纳德拉 (Microsoft 的 CEO),2. 桑达尔·皮查伊 (Google 的 CEO)3. 马克·扎克伯格 (Meta 的 CEO)

验证问题(第一套):1. 萨蒂亚·纳德拉是 Microsoft 的 CEO 吗?2. 桑达尔·皮查伊是 Google 的 CEO 吗?3. 马克·扎克伯格是 Meta 的 CEO 吗?

验证问题(第二套):1. 萨蒂亚·纳德拉是 Microsoft 的 CEO,他是印度裔吗?2. 桑达尔·皮查伊是 Google 的 CEO,他是印度裔吗?3. 马克·扎克伯格是 Meta 的 CEO,他是印度裔吗?

仔细观察两套验证问题,我们可以发现以下情况:

在第一套中,所有三个问题都会得到“是”的验证答案。最终精炼后的答案将包括基线响应中提供的三个名字。这并不是我们希望的结果,因为问题的主要目标是识别出印度裔的 CEO。第一套问题没有捕捉到这个特定的意图。

相反,第二套更符合我们的目标。例如,第三个验证问题将正确地排除马克·扎克伯格,因为虽然他是 Meta 的 CEO,但他并非印度裔。

因此,在此阶段,精确的提示工程和彻底的实验至关重要。关于各种问题类型的提示结构的进一步了解,你可以参考这里。

执行验证问题:这个阶段与前一个阶段同样重要。即使有高度准确的验证问题与主要目标对齐,最终精炼答案的质量也很大程度上取决于这个阶段。虽然完全依赖 LLM 来处理生成的验证问题,但一个人可以灵活地利用各种概念或外部工具来达到这个目的。在我的方法中,我使用了一个免费的搜索工具,“duckduckgo-search”,来获取答案。这些搜索结果然后作为 LLM 处理每个验证问题的参考上下文。替代方案包括更复杂的搜索工具,基于 RAG 的系统,数据库,或其他检索工具和机制来回答早期制定的验证问题。

最终精炼答案:这一步相对简单。它涉及利用所有的前面的数据(原始查询,基线响应,验证问题,及其各自的答案)来制定一个提供最终精炼答案的提示。参见示例提示以供参考。

六、CoVe 的实践结果

CoVe 的有效性在各种任务中进行了测试,包括Wikidata、Wikipedia分类列表、MultiSpanQA和长篇传记。结果还是很不错的:

  • 在基于列表的任务中显著提高了准确性。

  • 在闭卷问答中表现出色,F1分数提高了23%(这表示准确率和召回率都有所提高)。

  • 长篇生成中事实得分提高了28%。

  • 值得注意的是,通过CoVe,Llama 65B在长篇生成任务中超过了ChatGPT、InstructGPT和PerplexityAI等领先模型,标志着开源大型语言模型领域的重大成就。

七、CoVe 的改进方法

1️. 提示工程:改进任何LLM驱动的应用性能的主要方法之一是通过提示工程和优化。您可以查看我在GitHub上实现的所有提示。尝试进行自己的提示工程,在您的具体用例中进行实验。

2️. 外部工具:由于最终输出高度依赖于验证问题的答案,根据不同的用例,您可以尝试不同的工具。对于事实问答,您可以使用高级搜索工具,如Google搜索或serp API等。对于自定义用例,您可以使用RAG方法或其他检索技术来回答验证问题。

3️. 更多链条:我已经根据作者在研究中使用的三种问题类型(Wiki Data、多段问答和长篇问答)实现了三个链条。根据您的用例,您可以创建其他链条,以处理其他类型的问答方法,增加多样性。

4️. 人机交互(HIL):在许多LLM驱动的应用中,人在环(HIL)是一个重要的步骤。在您的特定应用中,可以将整个流程设计为将HIL纳入其中,无论是为了生成适当的验证问题还是回答验证问题,以进一步改进整体的CoVe流程。

八、Cove 方法的局限性

尽管CoVe采用了开创性的方法,但它并非没有限制。虽然它显著减少了幻觉,但并不能完全消除。模型仍有可能生成误导性信息。此外,幻觉可能以其他形式出现,例如在错误的推理过程中或在长篇回答中表达观点时。

幻觉的不完全消除:CoVe并不能完全消除生成内容中的幻觉,这意味着它仍然可能产生不正确或误导性的信息。

幻觉缓解的范围有限:CoVe主要解决直接陈述的事实不准确性形式的幻觉,但可能无法有效处理其他形式的幻觉,如推理错误或观点错误。

计算开销增加:在CoVe中生成和执行验证问题会增加计算成本,类似于其他推理方法(如思维链)。

改进的上限:CoVe的有效性受限于底层语言模型的整体能力,特别是其识别和纠正自身错误的能力。

九、总结

验证链(CoVe)方法在减少大型语言模型中的幻觉方面迈出了重要的一步,提高了它们在各种任务中的可靠性和准确性。通过使模型能够验证自己的回答,CoVe将我们带向了更可靠和无误的人工智能的目标,尽管仍然存在一些限制和挑战需要解决。

对于单个问题的答案包含的错误明显减少,从而使 CoVe 能够显着改进提示的最终输出。对于基于列表的问题,例如政治家的例子,Cove 可以将准确率提高一倍以上,从而显着降低错误率。

对于更复杂的问答场景,该方法仍然可以提高 23%,即使对于长格式内容,Cove 也可以将事实准确性提高 28%。然而,对于较长的内容,团队还需要检查验证答案是否不一致。

在他们的测试中,Meta 团队还可以证明指令调整和思维链提示不会减少幻觉,因此带有 CoVe 的 Llama 65B 击败了更新的指令调整模型 Llama 2。在较长的内容中,带有 CoVe 的模型也优于 ChatGPT 和 PerplexityAI,后者甚至可以收集其世代的外部事实。 Cove 完全利用模型中存储的知识来工作。

然而,在未来,该方法可以通过外部知识来改进,例如通过允许语言模型通过访问外部数据库来回答验证问题。

十、References

[1]. CHAIN-OF-VERIFICATION REDUCES HALLUCINATION IN LARGE LANGUAGE MODELS(https://arxiv.org/pdf/2309.11495v1.pdf)

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

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

相关文章

阿里云服务器续费流程_一篇文章搞定

阿里云服务器如何续费?续费流程来了,在云服务器ECS管理控制台选择续费实例、续费时长和续费优惠券,然后提交订单,分分钟即可完成阿里云服务器续费流程,阿里云服务器网aliyunfuwuqi.com分享阿里云服务器详细续费方法&am…

微信扫一扫抽奖活动怎么做

在当今数字化时代,微信作为中国最大的社交媒体平台之一,拥有着庞大的用户群体和广泛的影响力。微信扫一扫抽奖活动作为一种创新的营销方式,可以利用微信的用户基础和社交属性,吸引更多的目标用户参与,提高品牌知名度和…

鸿蒙状态栏设置

鸿蒙状态栏设置 基于鸿蒙 ArkTS API9,设置状态栏颜色,隐藏显示状态栏。 API参考文档 参考文档 新建项目打开之后发现状态栏是黑色的,页面颜色设置完了也不能影响状态栏颜色,如果是浅色背景,上边有个黑色的头&#…

众和策略:题材股什么意思?

题材股是股票商场上的一个术语,许多刚接触股票出资的人可能对它不太熟悉。那么,题材股什么意思呢?在本文中,咱们将从多个角度剖析这个问题,帮忙读者更好地了解。 一、什么是题材股 题材股是指某个工作或主题的股票集结…

机器学习笔记 - 深度学习中跳跃连接的直观解释

一、概述 如今人们利用深度学习做无数的应用。然而,为了理解在许多作品中看到的大量设计选择(例如跳过连接),了解一点反向传播机制至关重要。 如果你在 2014 年尝试训练神经网络,你肯定会观察到所谓的梯度消失问题。简单来说:你在屏幕后面检查网络的训练过程,你看到的只…

跨越单线程限制:Thread类的魅力,引领你进入Java并发编程的新纪元

线程的概述 线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用…

【C++】不是用new生成的对象调用析构函数

2023年10月23日&#xff0c;周一上午 #include <iostream>class Book{ private:int price; public:~Book(){std::cout<<"调用析构函数"<<std::endl; } };int main(){Book b1;b1.~Book(); } 从运行结果可以看出&#xff1a; 手动调用b1.~Book()时&…

机器人系统 ROS 常用命令行工具

1. 启动ros 主节点 roscore roscore运行成功如图&#xff1a; 1.1 rosrun 启动服务节点 例子&#xff1a;启动一个小乌龟节点 rosrun turtlesim turtlesim_node运行结果如图&#xff1a; 1.2 启动键盘控制 打开新的命令窗口&#xff0c;启动turtle_teleop_key 节点 rosr…

单窗口单IP适合炉石传说游戏么?

游戏道具制作在炉石传说中是一个很有挑战的任务&#xff0c;但与此同时&#xff0c;它也是一个充满机遇的领域。在这篇文章中&#xff0c;我们将向您展示如何在炉石传说游戏中使用动态包机、多窗口IP工具和动态IP进行游戏道具制作。 作者与主题的关系&#xff1a;作为一名热爱炉…

JSX看着一篇足以入门

JSX 介绍 学习目标&#xff1a; 能够理解什么是 JSX&#xff0c;JSX 的底层是什么 概念&#xff1a; JSX 是 javaScriptXML(HTML) 的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a; 在 React 中创建 HTML 结构&#xff08;页面 UI 结构&#xff09; 优势&a…

VM虚拟机 13.5 for Mac

VMware Fusion Pro for Mac是一款强大的虚拟机软件&#xff0c;可以在Mac操作系统中创建、运行和管理多个虚拟机&#xff0c;使用户可以在一台Mac电脑上同时运行多个操作系统和应用程序。 以下是VMware Fusion Pro for Mac的主要特点&#xff1a; 1. 支持多种操作系统&#xff…

【数据结构】线性表(九)队列:链式队列及其基本操作(初始化、判空、入队、出队、存取队首元素)

文章目录 一、队列1. 定义2. 基本操作 二、顺序队列三、链式队列0. 链表1. 头文件2. 队列结构体3. 队列的初始化4. 判断队列是否为空5. 入队6. 出队7. 存取队首元素8. 主函数9. 代码整合 堆栈Stack 和 队列Queue是两种非常重要的数据结构&#xff0c;两者都是特殊的线性表&…

【Java 进阶篇】深入浅出:Bootstrap 轮播图

在现代网页设计中&#xff0c;轮播图是一个常见的元素。它们可以用于展示图片、广告、新闻、产品或任何您希望吸引用户注意力的内容。要实现一个轮播图&#xff0c;您通常需要一些复杂的HTML、CSS和JavaScript代码&#xff0c;这对于初学者来说可能会感到困难。但幸运的是&…

React环境初始化

环境初始化 学习目标&#xff1a; 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档&#xff1a;(https://create-react-app.bootcss.com/)    - 打开命令行窗口    - 执行命令      npx create-react-app projectName    说明&#xff1a…

四、网络请求与路由

一、网络请求 1、Axios请求 Axios是一个基于promise的网络请求库 &#xff08;1&#xff09;安装 npm install --save axios&#xff08;2&#xff09;引入 import axios from "axios"全局引入 import axios from "axios" import { createApp } from …

靶机 DC_1

DC_1 信息搜集 存活检测 详细扫描 网页目录扫描 网页信息搜集 cms 为 Drupal 漏洞利用 使用 msf 搜索 drupal 的漏洞 启动 msfconsole搜索 search drupal尝试编号为 0 的漏洞 失败 利用编号为 1 的漏洞 use 1查看需要配置的选项 show options设置目标 ip set rhost 10…

【Linxu工具】:vim使用及简单配置

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux工具&#xff1a;vim的使用&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从…

不知道怎么选CRM系统?看这篇就够了

CRM客户管理系统近年来已经从简单的客户管理软件发展成为了帮助企业运营发展的工具。它能够帮助企业优化业务流程、提高客户转化率、获得更多业绩。那么企业在选择CRM系统时有什么要点吗&#xff1f; 1、明确是否有自动化功能 自动化功能可以自动处理那些手动且琐碎的销售流程…

【Docker从入门到入土 4】使用Harbor搭建Docker私有仓库

私有仓库 一、Harbor简介1.1 什么是Harbor?1.2 Harbor的特性1.3 Harbor和docker registry的关系1.4 Harbor的构成1.4 Harbor 配置文件中的两类参数1.4.1 所需参数1.4.2 可选参数 二、Harbor部署2.1 部署Docker-Compose服务2.2 部署 Harbor 服务Step1 下载或上传 Harbor 安装程…

看得懂的——数据库中的“除”操作

通过一个例子来解释数据库中的“除”操作 R➗S其实就是判断关系R中X各个值的象集Y是否包含关系S中属性Y的所有值 求解步骤 第一步 找出关系R和关系S中相同的属性&#xff0c;即Y属性。在关系S中对Y做投影&#xff08;即将Y列取出&#xff09;&#xff1b;所得结果如下&#x…