Chain of Verification(验证链、CoVe)—理解与实现

原文地址:Chain of Verification (CoVe) — Understanding & Implementation

2023 年 10 月 9 日

GitHub 存储库

介绍

在处理大型语言模型(LLM)时,一个重大挑战,特别是在事实问答中,是幻觉问题。当答案看似合理但实际上不正确时,就会出现幻觉。在高级别检查中检测这些幻觉可能具有挑战性,并且通常需要更详细的检查。

为了应对这一挑战,Meta AI 团队引入了一种称为验证链 (CoVe) 的方法,该方法由以下四个连续步骤组成:

  1. 创建初始基线响应:在此步骤中,生成对原始问题的初始响应作为起点。
  2. 验证问题生成:创建验证问题是为了对基线响应进行事实检查。这些问题旨在检查初始响应的准确性。
  3. 执行验证:独立回答验证问题,以最大程度地减少任何潜在的偏差。此步骤确保验证过程客观、彻底。
  4. 最终细化答案生成:根据验证过程的结果,生成最终细化答案。这个答案预计会更加准确和可靠,减少响应中出现幻觉的可能性。

验证链(CoVe)方法旨在通过系统地验证和细化响应以最大程度地减少不准确性来增强大型语言模型提供的答案的可靠性,特别是在事实问答场景中。

在本文中,我将尝试提供对 CoVe 流程的简单理解以及入门级实施。您可以在这里阅读该论文。

验证链

验证链 (Cove) 背后的概念基于这样的概念:大型语言模型 (LLM) 生成的响应可用于验证自身。这种自我验证过程用于评估初始响应的准确性并对其进行改进以获得更高的精度。实现这一目标依赖于熟练地设计和排序 LLM 提示。

根据研究论文,我们将深入研究创建连贯链所涉及的每个步骤,使LLMs能够自我验证其响应。

生成基线响应:当提出初始查询时,它会直接输入 LLM,无需任何其他特殊提示即可获得初始响应。这一初始步骤不仅作为 CoVe 管道的起点,而且作为旨在通过该 CoVe 管道进行增强的基线。由于像这样的基线反应往往容易产生幻觉,因此 CoVe 方法旨在在后续阶段检测并纠正这些不准确之处。

计划验证:给定原始查询和基线响应作为条件,指示模型生成一组验证问题,旨在评估初始基线响应中所做事实断言的准确性。需要强调的是,这些验证问题并不是预先定义的模板,而是预先定义的。相反,语言模型可以灵活地以它认为合适的任何方式表达它们。尽管如此,这些验证问题的构建方式应使其答案有助于完善基线响应。

执行验证:计划好验证问题后,下一步就是系统地回答这些问题,以确定是否存在幻觉。此验证过程可以包括工程技术/外部工具,例如通过网络搜索进行验证。此外,您可以在 CoVe 过程的所有阶段依赖 LLM 本身,这将验证其自身的响应。作者探索了几种不同的验证执行方法,包括联合两步因子因子+修订变体。

1.联合:在此方法中,计划和验证步骤是使用向LLMs提出的单个提示请求联合完成的。不过,不建议使用这种方法,因为验证结果可能会产生幻觉并受到偏差的影响。

2.两步:此步骤与“联合”步骤完全相反。第一步生成验证问题,第二步回答验证问题。

3.因子与其使用一个大的答案,不如单独回答每个问题。这样,答案将不仅仅是基线响应的副本。这种方法还有助于避免不同问题之间的混淆,并且它可能能够处理更多验证问题,尽管它的计算成本可能很高。

4.因子+修订在我们得到验证问题的答案后,Cove管道需要检查答案是否与基线响应匹配。这是通过将答案与基线响应进行比较来完成的。这是通过使用 LLM 的附加提示作为一个单独的步骤。这个额外的步骤有助于系统更仔细地考虑这种比较。

实现

Cove管道

作者介绍的验证过程是使用一系列问题进行基准测试的。这些问题分为三大类(尽管作者最初将它们分为四类):

1. Wiki 数据和 Wiki 类别列表:此类别涉及期望以实体列表的形式得到答案的问题。例如,诸如“谁是出生在波士顿的政客?”之类的问题。“说出一些越南特有的兰花?” 应该得到呈现特定实体列表的答案。

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

3.长篇生成:这一类别主要由传记问题组成,正如作者的基准所强调的那样。然而,它不仅限于传记。任何需要详细或冗长答复的问题都属于这一组。

我已经按照原始论文中概述的四个阶段实施了 CoVe 管道。根据前面提到的问题类型,我建立了三个不同的 CoVe 链。此外,我还整合了一种路由机制,将原始查询定向到适当的链。

请访问我的GitHub 存储库以使用代码和有关入门的更多详细信息。

路由器机制:当用户输入查询或问题时,此机制就会启动。它将用户的问题分类为前面提到的三个类别之一:Wiki 列表问题、多跨度问题或长格式问题。根据这种分类,路由器将问题引导到适当的链,每个链专门设计用于处理三种问题类型中的一种。这种分类是使用简单的几次提示设计来实现的。您可以在此处了解有关提示的更多信息。

基线响应:此阶段很简单,不需要任何即时制作。此时,用户的查询由 LLM 处理,产生我们所说的“基线响应”。随后将评估和完善此初始响应以产生最终答案。您可以进一步了解此处所有类型问题的提示。

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

原始问题:美国组织中印度裔首席执行官的姓名。

基准响应: 1. Satya Nadella(微软首席执行官),2. Sundar Pichai(Google 首席执行官) 3. Mark Zuckerberg(Meta 首席执行官)

验证问题(Set-1): 1. Satya Nadella 是 Microsoft 首席执行官吗?2. 桑达尔·皮查伊是谷歌首席执行官吗?3. 马克·扎克伯格是 Meta 的首席执行官吗?

验证问题(第二组): 1. 微软首席执行官 Satya Nadella 是印度裔吗?2. 谷歌首席执行官桑达尔·皮查伊(Sundar Pichai)是印度裔吗?3. Meta 首席执行官马克·扎克伯格是印度裔吗?

仔细检查两组验证问题后,我们可以观察到以下情况:

Set-1中,所有三个问题都将得到“是”的验证答案。最终的改进响应将包括基线响应中提供的三个名称。这不是期望的结果,因为该问题的主要目的是确定印度裔首席执行官。Set-1中的问题未能捕捉到这一具体意图。
相反,Set-2更符合我们的目标。例如,第三个验证问题将正确排除马克·扎克伯格,因为虽然他是 Meta 的首席执行官,但他不是印度裔

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

执行验证问题:此阶段与前一阶段一样重要。即使有与主要目标一致的高度准确的验证问题,最终完善答案的质量很大程度上取决于此阶段。虽然作者仅依靠LLMs来解决生成的验证问题,但人们可以灵活地利用各种概念或外部工具来实现这一目的。在我的方法中,我使用了免费的搜索工具“duckduckgo-search”来寻找答案。然后,这些搜索结果将作为LLMs解决每个验证问题的参考上下文。替代方案包括更复杂的搜索工具基于 RAG 的系统数据库或其他检索工具和机制来回答之前提出的验证问题。要进一步了解提示结构,您可以参考此处。

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

如何改进整体 CoVe 管道

1️. 提示词工程:提高任何 LLM 支持的应用程序性能的主要方法之一是通过提示词工程和提示词优化。大家可以查看我的GitHub实现中用到的所有提示。在您的用例中尝试您自己的即时工程和实验。
2️. 外部工具:由于最终输出很大程度上取决于验证问题的答案,因此根据不同的用例,您可以尝试不同的工具。对于事实问题和回答,您可以使用高级搜索工具,如 google 搜索或 serp API 等。对于自定义用例,您始终可以使用 RAG 方法或其他检索技术来回答验证问题。
3️. 更多链:我根据作者在研究中使用的三种问题类型(Wiki Data、Mutli-Span QA 和 Long-Form QA)实现了三个链。根据您的用例,您可以创建其他链来处理其他类型的 QA 方法以增加可变性。
4️. 人机交互 (HIL): HIL 是许多LLMs支持的应用程序中的重要步骤之一。在您的特定应用中,整个管道可以设计为合并 HIL,以生成适当的验证问题或回答验证问题,以进一步改进整体 CoVe 管道。

局限性

验证链 (Cove) 方法的主要局限性:

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

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

3.增加计算成本:在 CoVe 中生成和执行验证以及响应会增加计算成本,类似于思想链等其他推理方法。

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

结论

该论文提出了验证链(Cove)方法,这是一种旨在制作大型语言模型的策略,更批判性地思考他们的答案,并在需要时进行自我纠正。人们发现这些模型比仅仅回答初始问题更擅长回答详细的验证问题。这是因为这种方法将验证分解为更简单、更易于管理的问题。此外,人们还发现,阻止模型重新审视之前的答案有助于避免重复任何错误或“幻觉”。简而言之,该技术只需仔细检查其答案就可以极大地提高模型的响应。一项潜在的改进可能是为 CoVe 提供额外的工具,例如允许它从外部来源提取信息,这可以进一步提高其性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React-路由导航

1.声明式路由导航 1.1概念 说明&#xff1a;声明式导航是指通过在模版中通过<Link/>组件描述出要跳转到哪里去&#xff0c;比如后台管理系统的左侧菜单通常使用这种方式进行。 import {Link} from "react-router-dom" const Login()>{return (<div>…

资源哟正版无授权模版源码(含搭建教程)

资源哟 v1.3 – 新增两种首页布局 – 新增幻灯片插件 – 优化深色模式颜色效果 – 优化导航页面左侧栏目跳转效果 – 优化后台辅助插件当前页面打开 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88898100 更多资源下载&#xff1a;关注我。

Linux多线程之线程控制

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、pthread_crate 二、pthread_join 三、p…

RAG、数据隐私、攻击方法和安全提示

原文地址&#xff1a;RAG, Data Privacy, Attack Methods & Safe-Prompts 最近的一项研究探讨了 RAG 安全漏洞以及通过检索数据集访问私有数据的方式。还讨论了防御和安全提示工程示例。 介绍 RAG 在构建生成式 AI 应用程序中非常受欢迎。RAG 在生成式 AI 应用中采用的原因…

Elasticsearch架构原理

一. Elasticsearch架构原理 1、Elasticsearch的节点类型 在Elasticsearch主要分成两类节点&#xff0c;一类是Master&#xff0c;一类是DataNode。 1.1 Master节点 在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然后使用Zen D…

指针数组和数组指针(详细解释)

指针数组 指针数组的作用 指针数组和数组指针是C语言中常用的概念&#xff0c;它们分别有不同的作用和用法。 指针数组&#xff1a; 指针数组是一个数组&#xff0c;其中的每个元素都是指针类型。它可以用来存储多个指针&#xff0c;每个指针可以指向不同的数据类型或者相同…

Pytorch学习 day08(最大池化层、非线性激活层、正则化层、循环层、Transformer层、线性层、Dropout层)

最大池化层 最大池化&#xff0c;也叫上采样&#xff0c;是池化核在输入图像上不断移动&#xff0c;并取对应区域中的最大值&#xff0c;目的是&#xff1a;在保留输入特征的同时&#xff0c;减小输入数据量&#xff0c;加快训练。参数设置如下&#xff1a; kernel_size&#…

类与对象-对象特性

师从黑马程序员 对象的初始化和清理 构造函数和析构函数 用于完成对象的初始化和清理工作 如果我们不提供构造和析构&#xff0c;编译器会提供编译器提供的构造函数和析构函数是空实现 构造函数&#xff1a;主要用于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编…

了解华为(PVID VLAN)与思科的(Native VLAN)本征VLAN的区别并学习思科网络中二层交换机的三层结构局域网VLAN配置

一、什么是二层交换机&#xff1f; 二层交换机&#xff08;Layer 2 Switch&#xff09;是一种网络设备&#xff0c;主要工作在OSI模型的数据链路层&#xff08;第二层&#xff09;&#xff0c;用于在局域网内部进行数据包的交换和转发。二层交换机通过学习MAC地址表&#xff0…

毅速3D打印随形透气钢:模具困气排气革新之选

在注塑生产过程中&#xff0c;模具内的气体若无法有效排出&#xff0c;往往会引发困气现象&#xff0c;导致产品表面出现气泡、烧焦等瑕疵。这些瑕疵不仅影响产品的美观度&#xff0c;更可能对其性能造成严重影响&#xff0c;甚至导致产品报废&#xff0c;从而增加生产成本。 传…

政安晨:【深度学习处理实践】(四)—— 实施一个温度预测示例

在开始使用像黑盒子一样的深度学习模型解决温度预测问题之前&#xff0c;我们先尝试一种基于常识的简单方法。 它可以作为一种合理性检查&#xff0c;还可以建立一个基准&#xff0c;更高级的机器学习模型需要超越这个基准才能证明其有效性。对于一个尚没有已知解决方案的新问…

Linux之生产消费者模型

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 我们在条件满足的时候&#xff0c;唤醒指定的线程&a…

超越Chain-of-Thought LLM 推理

原文地址&#xff1a;Beyond Chain-of-Thought LLM Reasoning 2024 年 2 月 13 日 介绍 最近的一项研究解决了需要增强大型语言模型 (LLM) 的推理能力&#xff0c;超越直接推理 (Direct Reasoning&#xff0c;DR) 框架&#xff0c;例如思想链和自我一致性&#xff0c;这些框架可…

分割模型TransNetR的pytorch代码学习笔记

这个模型在U-net的基础上融合了Transformer模块和残差网络的原理。 论文地址&#xff1a;https://arxiv.org/pdf/2303.07428.pdf 具体的网络结构如下&#xff1a; 网络的原理还是比较简单的&#xff0c; 编码分支用的是预训练的resnet模块&#xff0c;解码分支则重新设计了。…

HTML入门:属性

你好&#xff0c;我是云桃桃。今天来聊一聊 HTML 属性写法和特点。 HTML 属性是用于向 HTML 标签&#xff08;也叫 HTML 元素&#xff09;提供附加信息或配置的特性。 如果说&#xff0c;把HTML 标签比作一个房子&#xff0c;HTML 标签定义了房子的结构和用途&#xff0c;比如…

基于SpringBoot的闲置房屋搜索平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 jQuery技术简介 3 1.2 SpringBoot框架简介 3 1.3 Bootstrap框架简介 4 1.4 ECharts框架简介 4 1.5 百度地图API简介 4 1.6 Ajax技术简介 5 1.7 MySQL数据库简介 5 1.8本章小结 6 2系统分析 7 2.1功能需求 7 2.2非功能需求 …

微软财务GPT Excel Copilot for Finance使用攻略

功能本身不收费&#xff0c;但是这个功能需要微软的商业版office账号才能使用&#xff0c;如果你没有账号&#xff0c;可以直说。 在桌面Excel软件中登录账号后&#xff0c;点击“copilot for finance”按钮&#xff0c;如果没有出现&#xff0c;则点击“加载项”&#xff0c;…

2024 年中国高校大数据挑战赛赛题 D:行业职业技术培训能力评价完整思路以及源代码分享

中国是制造业大国&#xff0c;产业门类齐全&#xff0c;每年需要培养大量的技能娴 熟的技术工人进入工厂。某行业在全国有多所不同类型&#xff08;如国家级、 省级等&#xff09;的职业技术培训学校&#xff0c;进行 5 种技能培训。学员入校时需要 进行统一的技能考核&#xf…

简述epoll实现

所有学习笔记&#xff1a;https://github.com/Dusongg/StudyNotes 文章目录 epoll数据结构的选择&#xff1f;以tcp为例&#xff0c;网络io的可读可写如何判断&#xff1f;epoll如何做到线程安全&#xff1f;LT和ET如何实现&#xff1f;tcp状态和io的读写有哪些关系&#xff1…

文本生成视频:从 Write-a-video到 Sora

2024年2月15日&#xff0c;OpenAI 推出了其最新的文本生成视频模型——Sora。Sora 能够根据用户的指令生成一分钟长度的高质量视频内容。这一创新的发布迅速在社会各界引发了广泛关注与深入讨论。本文将围绕本实验室发表于SIGGRAPH AISA 的 Write-a-video和 Sora 展开&#xff…