论文学习day01

news2024/11/28 22:51:16

1.自我反思的检索增强生成(SELF-RAG)

1.文章出处:
Chan, C., Xu, C., Yuan, R., Luo, H., Xue, W., Guo, Y., & Fu, J. (2024). RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation. ArXiv, abs/2404.00610.

2.摘要:

尽管具有显著的能力,大型语言模型(LLMs)往往会因完全依赖其封装的参数性知识而产生包含事实错误的回应。检索增强生成(RAG)是一种临时方法,它通过检索相关知识来降低这类问题。然而,无差别地检索和合并固定数量的检索段落,不考虑检索是否必要或段落是否相关,会降低LM的多功能性,或导致生成无用的回应。我们介绍了一种名为“自我反思的检索增强生成”(SELF-RAG)的新框架,通过检索和自我反思来增强LM的质量和事实准确性。我们的框架训练一个单一的任意LM,**在需要时自适应地检索段落,并使用称为反思标记的特殊标记生成和反思检索段落及其自己的生成。生成反思标记使LM在推理阶段可控,使其能够根据不同的任务需求来调整其行为。**实验表明,SELF-RAG(7B和13B参数)在各种任务上显著优于最先进的LLMs和检索增强模型。具体而言,SELF-RAG在开放域QA、推理和事实验证任务上优于ChatGPT和检索增强的Llama2-chat,在改进长篇生成中的事实性和引用准确性方面相对于这些模型显示出明显的增益。
总结: 传统RAG没有考虑到需要检索内容和所检索段落的关系,因此降低了响应能力,该文章提出了一个方法:“自我反思的检索以此增强RAG检索能力”,主要是通过token标记检索的段落以及对应的生成,通过这个token使其LM在推理可控,方便调整行为。

3.Introduction:

第一段:现代语言模型在处理事实错误方面仍然存在困难(Mallen等,2023年;Min等,2023年),尽管它们的模型规模和数据规模不断增大(Ouyang等,2022年)。检索增强生成(RAG)方法(见图1左侧;Lewis等,2020年;Guu等,2020年)通过增加LLMs的输入相关检索段落,减少知识密集任务中的事实错误(Ram等,2023年;Asai等,2023a年)。然而,由于这些方法不加选择地检索段落,可能会阻碍LLMs的多功能性,或者引入不必要或离题的段落,导致生成质量低【1error】(Shi等,2023年)。此外,由于模型没有显式训练来利用和遵循提供的段落中的事实,生成结果也不能保证与检索的相关段落一致【2error】(Gao等,2023年)。本项工作引入了自我反思的检索增强生成(SELF-RAG),通过按需检索和自我反思来提高LLM的生成质量,包括事实准确性,而不损害其多功能性。我们以端到端的方式训练一个任意的语言模型,在给定任务输入的情况下,通过生成任务输出和临时的特殊标记(即反思标记)来学习反思自己的生成过程。反思标记被分类为检索和批评标记【way】,以指示检索的需求及其生成的质量(见图1右侧)。具体而言,给定一个输入提示和先前的生成结果,SELF-RAG首先确定是否在继续生成过程中增加检索到的段落是否有帮助【method】。如果有帮助,它会输出一个检索标记,以便根据需要调用一个检索模型(第1步)。接着,SELF-RAG同时处理多个检索到的段落,评估它们的相关性,然后生成相应的任务输出(第2步)。然后,它生成批评标记来批评自己的输出,并选择最佳输出(第3步),评估其准确性和整体质量【method】。这个过程与传统的RAG有所不同(见图1左侧)。
【总结:利用反思标记,分为检索标记和批评标记;检索标记-判断检索的片段是否跟生成内容相关;批评标记-批评自己的输出,选择最佳输出(应该有个并行,选择最佳输出)】

流程图如下所示:
传统RAG和Self-reflective RAG的对比
传统的RAG方法(图中左侧): 传统的RAG方法首先从数据库中检索相关文档(步骤1),然后使用检索到的文档和初始提示作为输入,通过语言模型生成文本(步骤2)。这个方法有助于减少知识密集任务中的事实错误,但可能会引入与任务无关或不必要的内容,影响生成的质量。此外,生成的内容不一定与检索到的相关文档保持一致,因为模型并未明确训练以利用和遵循提供的文档中的事实。

自反射检索增强生成(SELF-RAG)方法(图中右侧): SELF-RAG方法首先根据输入提示和前序生成内容决定是否需要通过检索增强继续生成内容。如果需要,它会输出一个检索令牌,调用检索器模型按需检索(步骤1)。然后,SELF-RAG同时处理多个检索到的文档,评估它们的相关性,然后生成相应的任务输出(步骤2)。接下来,它生成批评令牌来批评自己的输出,并选择最佳输出(步骤3),以提高事实性和整体质量。【图中1和3与输入相关,根据批评令牌得知1的相关性最高】

第二段:“SELF-RAG是一种技术,可以在生成文档时始终检索固定数量的文档,而不考虑检索的必要性【speciality1】(例如,底部的示例中并不需要事实知识),并且不会二次访问生成质量。此外,SELF-RAG为每个段落提供引用,同时通过自我评估判断输出是否由文段支持,从而使事实验证变得更加容易【speciality2】。SELF-RAG通过统一将反思标记訓练任意语言模型生成文本,使其成为扩展模型词汇表中的下一个标记预测【speciality3】。我们将生成器语言模型训练在各种文本和检索段落的交错集合上,这些文本中插入的反思标记灵感来自于强化学习中使用的奖励模型(Ziegler 等, 2019; Ouyang 等,2022),由经过训练的评论模型线下插入原始语料库。这消除了在训练期间托管评论模型的需要,从而减少了开销。评论模型在一定程度上是通过促使专有语言模型(即 GPT-4;OpenAI 2023)收集的输入、输出和相应的反思标记数据集进行监督的。虽然我们受到使用控制标记来开始和引导文本生成的研究的启发(Lu 等,2022; Keskar 等,2019),但我们训练的语言模型在生成每个段落后使用评价标记来评估自己的预测输出,作为生成输出的一个组成部分。SELF-RAG进一步实现了一个可定制的解码算法,以满足硬性或软性约束,这些约束由反思标记的预测定义。特别是,我们的推理算法使我们能够(1)灵活调整不同下游应用的检索频率,以及(2)通过使用反思标记通过基于段的加权线性总和的分数,定制模型行为到用户偏好【speciality4】。六项任务的实证结果,包括推理和长篇生成,表明SELF-RAG明显优于具有更多参数和被广泛采用的RAG方法的预训练和指导调节的LLMs,以及具有更高引用准确性的方法。特别是,在四项任务中,SELF-RAG优于增强检索的ChatGPT,Llama2-chat(Touvron 等,2023)和Alpaca(Dubois 等,2023)在所有任务上的表现统计学分析表明,通过反思标记进行训练和推理可以在整体表现提升以及测试时模型自定义方面(例如,平衡引用准确性和完整性之间的权衡)取得显着效果。”

【speciality1】无需事实的生成与自我评估: SELF-RAG能够在生成文本时根据需要检索信息,而不是无论何时都检索固定数量的文档。这意味着,即使某些任务(如创造性写作)可能不需要事实支持,它也能适应并避免不必要的检索,从而提高效率。

例如,如果任务是编写一首诗,SELF-RAG将识别出这一任务不需要事实性背景,因此不会执行不必要的文档检索。【我的想法是:需要决策模型进行判断】

【speciality2】段落引用和自我评估: SELF-RAG为每个生成的段落提供引用,并通过自我评估来判断输出是否由支持的文段(即检索到的文档)支撑。这意味着,当模型生成一个段落时,它会同时标识出这段内容的信息来源,并评估这些信息与生成内容的相关性和支持程度。这样做使得事实验证更加容易,因为每部分内容都有明确的来源标记,用户或系统可以快速验证信息的准确性和可靠性。

自我评估功能使得SELF-RAG系统能够在生成过程中实时检查和评估生成内容的质量和相关性。这包括对生成文本的准确性、完整性和符合任务要求的程度进行评估。

【speciality3】反思标记的使用: SELF-RAG通过插入“反思标记”(reflection tokens)来训练语言模型,这些标记是基于强化学习中使用的奖励模型灵感设计的。在生成文本时,这些标记帮助模型评估和调整其生成策略,提高生成内容的相关性和质量。

反思标记是自我评估过程的一部分,它们被设计为在生成文本中标记出需要特别注意或可能需要修改的部分。这些标记帮助模型在生成过程中进行自我反思,评估其输出的质量,并据此调整未来的生成策略。反思标记的存在使得模型能够识别和响应生成过程中出现的问题,从而优化输出内容。

【speciality4】定制解码算法: SELF-RAG采用了一个可定制的解码算法,允许根据预测的反思标记来灵活调整检索频率和模型行为。这意味着可以根据不同的应用需求定制模型的行为。

根据反思标记对生成文本的评估,进行检索频率的调整以保证信息的准确性。

3.我的感受:
根据introduction的过程可以知道,作者利用并行的方式得到与输入提示词相关的prompt给到llm大模型,然后对得到的响应进行批判进而得到最准确的回答。这样精准性是毋庸置疑的,但是会不会丢掉其他相关的部分呢?比如图中3部分也有和问题相关的内容,难道它就应该丢弃吗?我们能不能将1和3组合起来,然后利用一个合适的prompt【比如:请帮我把以下几段话结合起来成为一段话:…】,这样是不是可以保证信息的完整性呢?

4.示例:生成关于“气候变化对全球农业的影响”的文章
假设用户请求SELF-RAG生成一篇关于“气候变化对全球农业的影响”的详细分析文章。

  1. 任务解析:

系统识别出这是一个需要事实支持的信息密集型任务。

  1. 执行检索:

模型检索相关的科学研究报告、数据和专家文章,例如关于气候模型的预测、作物产量的统计数据等。

  1. 内容生成与反思标记插入:

使用检索到的信息,模型开始撰写文章,同时插入反思标记来标记那些需要进一步验证或可能需要调整的内容段落。

  1. 自我评估:

模型评估生成的每个段落,使用反思标记作为指导来检查信息的准确性和论点的合理性。

  1. 调整与优化:

根据评估结果,模型对文章进行必要的调整,例如增加缺失的统计数据,修改不准确的预测信息。

  1. 输出最终文本:

最终,模型完成文章的生成,确保文本不仅信息全面,而且论据支持充分,准确性高。

通过这一过程,SELF-RAG能够有效地生成符合高标准的专业文章,满足用户对于高质量、高准确性文本的需求。

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

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

相关文章

快速上手SpringBoot

黑马程序员Spring Boot2 文章目录 1、SpringBoot 入门程序开发1.1 创建一个新的项目 2、浅谈入门程序工作原理2.1 parent2.2 starter2.3 引导类2.4 内嵌tomcat 1、SpringBoot 入门程序开发 1.1 创建一个新的项目 file > new > project > empty Project 创建新模块&a…

如何在 Vue 3 中使用 vue3-print-nb 实现灵活的前端打印

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 前言 在前端开…

Linux中Web服务器配置和管理(Apache)

文章目录 一、WEB服务器介绍1.1、WEB服务器概述1.2、WEB服务器的发展历史1.3、WEB服务器的优点与缺点1.4、WEB服务器的工作流程 二、Apache介绍2.1、Apache是什么2.2、Apache的发展史与应用场景2.3、Apache的特点2.4、Apache的工作原理2.5、Apache的模块 三、安装使用Apache服务…

iOS 18 中全新 SwiftData 重装升级,其中一个功能保证你们“爱不释手”

概览 在最新的 WWDC 2024 中,苹果对多个系统框架都做了重量级的功能升级。这怎么能够少了 SwiftData 这位“后起之秀”呢? 万象更新的 iOS 18 为 SwiftData 增加了全新的唯一性、自定义数据仓库、富表达式以及字段索引等超赞功能。 在本篇博文中&#…

论文中引用网页链接的简单操作

一、参考资料 中文论文或者申请书中网页新闻引用格式 自制网页:在论文中快速引用网页链接 二、相关介绍 1. 常用文献类型用单字母标识 学术论文参考文献中文献类型字母标识 常用文献类型用单字母标识,具体如下: (1&#xf…

自动控制理论---线性时不变系统的单位脉冲响应

1、实验设备 PC计算机1台,MATLAB软件1套。 2.实验目的: 学习并理解线性时不变系统的单位脉冲响应的计算方法。掌握MATLAB编程,计算整个系统的单位脉冲响应。 3.实验原理说明: 单位脉冲响应是指在输入信号为单位脉冲序列时&am…

【Java】内部类、枚举、泛型

目录 1.内部类1.1概述1.2分类1.3匿名内部类(重点) 2.枚举2.1一般枚举2.2抽象枚举2.3应用1:用枚举写单例2.4应用2:标识常量 3.泛型3.1泛型认识3.2泛型原理3.3泛型的定义泛型类泛型接口泛型方法 3.4泛型的注意事项 1.内部类 1.1概述 内部类:指…

高分文章发文圣体!一周80%二区以上 | GBD数据库周报(6.05~6.11)

全球疾病负担(GBD)是迄今为止规模最大、最全面的一项研究,旨在量化不同地区和不同时期的健康损失,从而改善卫生系统并消除差异。 该研究由华盛顿大学健康指标与评估研究所 (IHME) 牵头,是一项真正的全球性研究&#xf…

移动UI:小小工作台,竟然别有洞天(N多样式),上图了。

设计移动UI的工作台页面时,可以考虑以下几个方面: 布局设计:首先确定页面的布局,可以使用单栏、双栏或九宫格等等布局方式。布局应该简洁明了,方便用户快速找到需要的功能模块。功能模块:根据用户需求确定需…

Windows安装配置CUDA12.5

搞大模型往往都需要GPU加速,本次在家里的PC上安装CUDA来实现GPU加速。 一、环境准备 操作系统:Windows11 23H2 GPU:RTX 4070 Ti Super 显卡驱动:555.99 (NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIA) …

从入门到高手的99个python案例(2)

51. 列表和数组比较 - 列表通用,NumPy数组高效。 import numpy as np normal_list [1, 2, 3] np_array np.array([1, 2, 3]) print(np_array.shape) # 输出 (3,), 数组有形状信息 52. Python的内置模块datetime - 处理日期和时间。 from datetime import…

H5拟态个人主页

演示地址:科技语者个人主页 (chgskj.cn) 文末有该项目的源码~ 这张图片的效果你是不是非常想要get同款? 源码就是这个样子 这段HTML代码构建了一个个人主页,结合了CSS样式和JavaScript功能。 下面是对代码的主要组成部分的详细解释&#x…

FPGA - Verilog题目: 非整数倍数据位宽转换24to128

题目描述: 实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。 电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性…

建筑电工精选最新模拟试题(含答案)

一、填空题 1、我国安全生产的基本方针是 安全 第一,预防 为主,综合治理。 2、特种作业人员,必须积极主动参加培训与考核 。既是法律法规的规定,也是自身工作,生产及生命安全 的需要 3、触电急救&#x…

QT调用vs2019生成的c++动态库

QT调用vs2019生成的c动态库 dll库的创建方法: VS2019创建c动态链接库dll与调用方法-CSDN博客 加减法示范: 头文件 // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS // 符号编…

植物ATAC-seq文献集锦(三)——果实发育篇

ATAC-seq在植物研究领域的应用我们已经介绍2期了,本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 文献一:Ident…

Java学习笔记之基本数据类型转换

前言 本篇文章是基于我本人在初学JAVA阶段想记录的的学习笔记,如有错误,恳请指正。今天要干掉的是JAVA的基本数据类型转换 Java的基本数据类型转换 前言一,基本数据类型复习二,基本介绍什么是自动类型转换? 三&#…

如何实现 Python 源码压缩加密常用解决方案详细教程(更新中)

Python是一种高级的、解释型的、面向对象的编程语言,Python 码简洁易读,并且Python语言跨平台,拥有丰富的标准库和第三方库,深受开发人员的喜爱。 Python 程序扩展名 .py:这是 Python 程序的标准文件扩展名。当你创建…

B端颜值无所谓?麻痹自己可以,麻痹业务人员和客户试一试。

很多老铁觉得B端系统颜值和体验无所谓,功能好就行了,我不认同这种说法,我觉得优秀的B端系统应该是内外兼修的,而不是偏科的。你想一想你费尽研发的系统,就是因为颜值问题,你的业务人员没信息推销&#xff0…

用Canvas绘制2D平面近大远小的马路斑马线

用Canvas绘制2D平面近大远小的马路斑马线 设置canvas和上下文: 首先,你需要创建一个元素,并获取其2D渲染上下文。 绘制斑马线: 使用fillRect或strokeRect方法绘制斑马线。你可以通过循环和计算来绘制多条具有不同宽度和间隔的…