SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

SELF-RAG: 让LLM集检索,生成跟评判等多种能力于一身

提纲

1 简介

2 SELF-RAG

3 实验结论

4 讨论

参考文献

1 简介

尽管基础能力出众,但是大模型只能依赖于被压缩到模型参数中的知识,所以经常会生成不符合事实的回复。针对这种事实性错误,目前主流的解决方案是知识增强,引入外部的知识源来引导模型生成。但是不考虑具体情形,一味地去检索外部文档可能会损害语言模型的多样性,生成不合适的回复。基于此,有研究人员提出了Self-Reflective Retrieval-Augmented Generation(SELF-RAG),一种新的大模型知识增强框架,可以通过检索跟自我反思提升大模型生成的质量跟事实可靠性。

2 SELF-RAG

SELF-RAG的框架如下图所示,SELF-RAG往语言模型的词表中引入了4种新类型的reflection tokens,分别是Retriver, IsRel, IsSup, IsUse,对应四种不同的子任务,每个子任务下包括多个对应的reflection tokens。以Retriever为例, 该任务用户判断当前问题下是否需要检索模型支持,对应的reflection tokens有yes,no跟continue,分别对应不同选择。通过让语言模型生成对应的reflection token,使得语言模型具备判断是否需要检索以及评判生成结果的能力。

图1: SELF-RAG框架

图2: 4种不同类型的reflection token

模型训练

SELF-RAG的训练过程涉及到两个模型,分别是评判模型C跟生成模块M。在该框架下评判模型C有4种用途,需要根据不同情形生成对应的判别结果,分别对应前面提到的4种类型的reflection token。其一是给定输入x后,判断是否需要引入检索模块。其二是给定输入x跟检索文档d后,判断输入x跟文档d的相关性。其三是给定输入x,检索文档d,跟模型输出y后,判断输出y是否可以由文档d支撑。其四是给定输入x跟模型输出y后,判断输出y是否可以作为x的有价值回复。

判别模型判别模型的训练数据是利用GPT-4生成得到的,对于每一种任务类型,给定对应的输出后,设置合适的任务指令instruction跟示例demonstration,让GPT4生成相应的reflection token,从而得到4种不同任务下的(input, response)数据,再利用标准的条件语言模型训练目标优化评判模型即可。

在完成评判模型C的训练后,需要利用其来生成训练生成模型M的数据。具体做法为给定初始的训练数据(x,y),首先利用评判模型C判断回复x是否需要引入检索模块,如果需要的话,就将Retriver对应的reflection token加入到之前的输出中,然后利用检索模块召回若干文档,对于每个文档,利用critic模型判断文档跟问题是否相关,即IsRel任务,若相关,则利用评判模型C判断结果y是否由文档所支撑,即IsSup任务,将召回文档以及这两个任务对应的reflection token依次加入到前面的输出中,最后再利用评判模型C判断结果y是否有用,即IsUse任务,将前面的文档,reflection token跟结果y按照顺序拼接到一起作为增强过的y,从而构建出对应的训练数据(x,augmented y)。具体流程可以参考图中样例。在完成训练数据构建后,按照标准的自回归任务训练生成模型即可,从而可以得到生成模型M。

图3: SELF-RAG训练样例

模型推理

生成模型M首先会判断当前问题是否需要使用检索,如果需要的话,就会检索召回多个相关文档,通过并行的方式同时处理多个文档,并生成对应回复,再通过排序选择其中最合适的回复作为最终结果。

图4: SELF-RAG推理流程图

图5: 生成结果排序

由于reflection token的设置,使得SELF-RAG整个推理过程更加可控,可以通过调整检索的阈值或者最终排序时的不同reflection token的权重参数,来控制模型整体行为。对于那些需要更高事实准确性的场景,可以让模型更多地去召回相关文档从而让生成结果更加有依据,对于那些开放性问题,可以限制模型调用检索模块,更多的发挥大模型本身的创造性。可以看到,SELF- RAG中的评判模型C的用途是为了构建生成模型M所需要的训练数据,当生成模型训练完成后,在具体推理时只会用到生成模型M。

3 实验结论

a) 研究人员在包括多选推理数据集,开放域问答等6个任务上进行了评测,发现SELF-RAG在大多数任务上都领先于不加检索的模型跟现存的知识增强模型。其中Llama2-FT(7B)使用了跟SELF-RAG同样的训练数据,但是效果明显不如SELF- RAG,这说明了SELF-RAG的收益不仅来源于训练数据,也来源于整体框架的有效性。

图6: 不同模型效果对比

b) 通过消融实验可以观测SELF- RAG中各个模块对于整体的贡献,尤其是可以看到相比于推理时只检索返回1个文档的做法,SELF-RAG有显著提升,说明SELF- RAG本身具备根据多种细粒度评判指标选择生成结果的能力,并不会过于依赖检索返回的结果。

图7: 消融实验

4 讨论

对于构建训练数据时候利用GPT-4生成reflection token以及推理时利用这些对应的reflection token概率值作为细粒度评判指标,模型预测的结果是否可信?研究人员对比了这些模型生成的结果跟人工标注结果,发现两者存在高度的一致,这也跟前面很多文章观点一致,只要使用妥当,可以利用GPT-4这类语言模型来构建数据,语言模型生成的标注质量是非常高的。

总体感觉SELF-RAG跟上半年清华的webcpm框架有诸多相似之处,都是希望利用一个大模型通过恰当的训练,可以独立完成知识增强里的所有任务,让模型更加智能地决定何时引入检索模块,选择哪个检索文档以及评判生成回复的质量。最大的特别之处在于SELF- RAG更加可控,可以通过对4种类型reflection token所对应的子任务进行调控来实现对整个生成过程的微调,根据不同场景让模型选择更加自由发挥或者更加依据事实。除了更加可控外,引入reflection token的方式是否比之前的通过不同prompt让模型做不同任务的方式更加高效,这一问题,文中并没有通过实验论证。个人猜测还是有提升的,通过reflection token可以把前面任务的评判结果加入到模型输入中,应该是更有利于后续任务的。

SELF-RAG还有个与众不同的地方在于,它会根据多个检索文档生成多个回复(每个文档对应1个回复),通过一定的打分规则从中选择其中一个回复。这种设计不就处理不来那些需要模型同时依赖于多个文档的问题了嘛?为此所带来这种并行生成多个回复的处理手段不就意味着需要更多算力资源了嘛?文中为何不试下把所有检索文档一同作为模型输入去生成回复,这种方式不应该很符合当下主流嘛?

参考文献

1 SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION

https://arxiv.org/pdf/2310.1151

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

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

相关文章

Devart dotConnect ADO.NET Data Providers Crack

开发数据相关 .NET 应用程序的终极解决方案:快速、灵活、全面、功能丰富、支持 ORM 的 ADO.NET 提供程序 概述 实体框架 连接字符串 博客 高性能 ADO.NET 数据提供程序 dotConnect 是基于 ADO.NET 架构和采用多项创新技术的开发框架构建的增强型数据连接解决方​​…

C++初阶-内存管理

内存管理 一、C/C内存分布二、C语言中动态内存管理方式:malloc/calloc/realloc/free三、C内存管理方式new/delete操作内置类型new和delete操作自定义类型 四、operator new与operator delete函数operator new与operator delete函数 五、new和delete的实现原理内置类…

数据同步策略解读

前言 我们都知道在大多数情况下,通过浏览器查询到的数据都是缓存数据,如果缓存数据与数据库的数据存在较大差异的话,可能会产生比较严重的后果的。对此,我们应该也必须保证数据库数据、缓存数据的一致性,也就是就是缓…

新版JetBrains ToolBox【Windows】修改应用安装位置

WIndows下新版的JetBrainse ToolBox 无法修改应用安装路径 关闭 ToolBox 应用修改配置文件.settings.json 路径:C:\Users\用户名\AppData\Local\JetBrains\Toolbox "install_location": "xxx",

【Hello Go】Go语言工程管理

工程管理 工作区工作区介绍GOPATH设置 包自定义包main包main函数和init函数导入包点操作别名操作_操作 测试案例GOPATH配置go install使用 在我们实际的工作中 直接运用到编译器进行编译链接的场景少之又少 这是因为 在工程中不会只有一个源文件 并且源文件之间也有着相互依赖…

调试/抓包工具

一、Fiddler【推荐window使用】 介绍:个人认为是 Windows 平台最好用的抓包工具; 下载:Fiddler | Web Debugging Proxy and Troubleshooting Solutions 使用方式:这一篇文章写的很全,认真看完就够用了 Fiddler 抓包工…

FL Studio21.2最新版本支持终身免费更新

你是否体验过Tomorrowland现场万人蹦迪的的激情?又是否加入过“死墙(Mosh pit:一种Bass音乐节常有的娱乐方式)”的狂欢盛宴?随着时代发展,以电子音乐为代表的数字音乐已然象征着时尚与潮流。在这股风靡全球…

YB203H系列是一组CMOS技术实现的三端低功耗高电压稳压器

概述: YB203H系列是一组CMOS技术实现的三端低功耗高电压稳压器。输出电流为200mA且允许的输入电压可高达80V。具有几个固定的输出电压,范围从2.1V到12.0V.CMOS技术可确保其具有低压降和低静态电流的特性。最高耐压100W.尽管主要为固定电压调节器而设计,…

Mysql -常见函数

目录 字符串函数 数值函数 日期函数 流程函数 字符串函数 -- 拼接 SELECT CONCAT(Hello, World); -- 小写 SELECT LOWER(Hello); -- 大写 SELECT UPPER(Hello); -- 左填充 SELECT LPAD(01, 5, -); -- 右填充 SELECT RPAD(01, 5, -); -- 去除空格 SELECT TRIM( Hello World )…

群晖邮件设置,错误535 Authenticate failed问题

设置邮件通知或者报警很方便,群晖内部内置这个功能。在设置的时候遇到错误535 Error:authentication failed。 原因是:这个错误就是认证失败! 但是相信很多的同学明明用户名和密码填的是对的,就是说认证失败&#xf…

MATLAB中plotmatrix函数用法

目录 语法 说明 示例 使用两个矩阵输入创建散点图矩阵 使用一个矩阵输入创建散点图矩阵 指定标记类型和颜色 创建并修改散点图矩阵 plotmatrix函数的功能是创建散点图矩阵。 语法 plotmatrix(X,Y) plotmatrix(X) plotmatrix(___,LineSpec) plotmatrix(ax,___) [S,AX,B…

如何啟用 BitLocker來加密硬盤

概述 什麼是 BitLocker: BitLocker 磁碟機加密是一項本機安全性功能,可對安裝 Windows 的磁碟機上的所有內容進行加密。設備加密透過加密來幫助保護您的資料。只有擁有正確加密金鑰(例如個人識別碼)的人才能解密它。 它是如何運…

2.认识中台

1.数字化中台初步认识与建设策略 中台的定义 阿里对中台的定义: 中台是一个基础的理念和架构,我们要用中台的思想建设、联通所有基础服务,共同支持上端的业务。业务中台更多的是支持在线业务,数据中台则提供基础数据处理能力和很多的数据产…

C语言百钱买百鸡(ZZULIOJ1074:百钱买百鸡)

题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡&…

跨境电商与文化多样性:市场中的机遇

在数字时代,跨境电商已经成为全球贸易的主要驱动力之一。随着互联网的普及和物流的改善,企业有机会将产品和服务推向全球市场。 然而,随着全球市场的扩大,文化多样性也成为了一个重要的考虑因素。本文将深入探讨跨境电商与文化多…

Wireshark 截取指定端口海量包分析

有个应用要分析一下协议,但是8939,8940传输一下子几个G的数据,但是要分析的端口8939实际上只有几个MB最多,如果用wireshark有界面的程序一截取就会卡死,于是使用命令行方式,截取指定端口的 tshark -i &quo…

AI先行者第三辑:石油专家正在加速“吸入”AI养分

AI对于石油行业而言,绝不是一个非此即彼、非黑即白、有用或者无用的简单命题,而是一个如何不断深入去提升效率,逐步证明自己价值的过程。 本篇作者安鹏,中国海洋石油集团有限公司信息技术中心 技术中台工程师;AICA首席…

【MyBatis】写了 10 年的代码,我最怕写 MyBatis 这些配置,现在有详解了

在使用 mybatis 过程中,当手写 JavaBean和XML 写的越来越多的时候,就越来越容意出错。这种重复性的工作,我们当然不希望做那么多。 还好, mybatis 为我们提供了强大的代码生成--MybatisGenerator。 通过简单的配置,我们…

【数据结构】图的简介(图的逻辑结构)

一.引例(哥尼斯堡七桥问题) 哥尼斯堡七桥问题是指在哥尼斯堡市(今属俄罗斯)的普雷格尔河(Pregel River)中,是否可以走遍每座桥一次且仅一次,最后回到起点的问题。这个问题被认为是图…

安全知识普及:什么是垃圾邮件和网络钓鱼欺诈

文章目录 什么是垃圾邮件?如何保护您自己免遭垃圾电子邮件和网络钓鱼侵害区分私人和公用电子邮件私人电子邮件公共电子邮件 使用反垃圾邮件过滤器推荐阅读 什么是垃圾邮件? 您的邮箱里经常会出现一些莫名其妙的邮件,而这就是电子形式的垃圾邮…