【LLM之RAG】RAT论文阅读笔记

研究背景

近年来,大型语言模型(LLMs)在各种自然语言推理任务上取得了显著进展,尤其是在结合大规模模型和复杂提示策略(如链式思维提示(CoT))时。然而,LLMs 在推理的事实准确性方面存在越来越多的担忧,特别是在零样本 CoT 提示和需要多步骤和上下文感知推理的长视野生成任务中。这些任务包括代码生成、任务规划、数学推理等,需要事实正确的中间思维过程来成功完成任务。

研究目标

本文探讨了如何通过信息检索迭代修改思维链显著提高大型语言模型在长视野生成任务中的推理和生成能力,同时大幅减轻幻觉现象。具体而言,提出的方法——检索增强思维(RAT),逐步修改每一步思维链,并结合检索到的相关信息,旨在改进初始零样本 CoT 生成的思维链。

相关工作

RAG: 旨在解决大型语言模型生成虚构事实的问题,通过提供从可信来源提取的相关文本,一般被用于问答(QA)任务。简单地说就是首先根据相关性找到和问题相关的内容,然后把相关的内容和用户问题拼接成 Prompt 交给大模型。然而,复杂的推理任务(例如,那些需要多步骤推理的任务)很难转化为有效的搜索查询,这导致在寻找相关文档时遇到挑战。传统上,RAG 一次性检索所有相关信息。然而,它忽略了一个事实,即很难预测在后续的推理和生成步骤中需要哪些“事实”或信息。任务提示本身几乎不足以为此提供足够的线索。

CoT:旨在提高 LLM 在需要复杂推理步骤的任务中的性能,例如多步骤的数学应用题。具体来说,CoT 提示不是直接让 LLM 生成正确答案,而是激励 LLM 首先输出中间推理步骤,这些步骤被称为“思维”。LLM 的这种行为可以通过 prompt 进行触发,比如著名的“Let’s think step by step”),或者通过在类似任务中执行少量样本示例来触发。然而,由于没有对中间思维进行直接监督,LLM 可能会因为缺乏相关的领域知识而犯错误,或者受到虚构信息的偏差。

方法论

数据处理

生成初始答案(prompt1):虽然 CoT 说自己是"step-by-step"的,但实际上是单轮的。因此需要从单轮回答中解析出有哪些步骤/思考。这里用了一个 trick,在 prompt 中让 LLM 通过换行来输出不同的 step。

生成搜索查询(prompt2):这个的流程是总结出当前文本写了什么,然后根据总结的内容去检索相关知识。prompt2 相当于生成 RAG 的 input。

根据检索到的上下文修订答案(prompt3):在 prompt3 之前,会进行 RAG 得到相关内容,然后再根据相关的内容去修订当前回答。

在这里插入图片描述

解决方案

核心思想:
利用 CoT 生成多个步骤,然后在每个步骤中加入 RAG 以减少模型幻觉并提高效果。即:RAG+CoT=RAT。

详细:
RAT 是一种着重于迭代修正模型生成思路的新方法。首先,LLM产生的初始零样本CoT以及原始任务提示将被用作查询,以检索可能有助于修改可能有缺陷的CoT的信息。其次,设计一种渐进的方法,而不是用完整的CoT进行检索和修改并立即产生最终响应,其中LLM在CoT(一系列子任务)之后逐步生成响应,并且只有当前思维步骤将根据任务提示检索到的信息、当前和过去的CoT进行修改。这种策略可以类比于人类的推理过程:在复杂的长期问题解决过程中,利用外部知识来调整我们的逐步思维。
在这里插入图片描述
案例说明:
如何在Minecraft中获得钻石剑

  1. 用户Query
    用户在Minecraft游戏中提出一个问题:“如何获得钻石剑?”

  2. 初始形态
    在接收到用户的任务提示(Query)后,模型首先进行零样本链式思维(CoT)推理。初始的思维链可能会如下生成:

T1: 获得4块木板(有误)
T2: 用木板制作工作台
T3: 挖掘钻石矿
T4: 用钻石和木棍制作钻石剑
此初始生成的思维链可能存在错误,例如第一步中的“获得4块木板”实际上应该是“获得4块木材”。

  1. 中间形态
    接下来,模型利用RAT方法,逐步修正初始的思维链。在每一步修正过程中,模型将当前的思维链步骤及其之前的步骤作为查询,检索外部知识库中的相关信息。例如:

初始生成的T1是“获得4块木板”,模型会将其作为查询的一部分,检索Minecraft的相关知识库。检索结果表明,正确的步骤是“获得4块木材”。
修正后的T1*: 获得4块木材
接着,模型继续修正下一步:

T2: 用木板制作工作台,这一步是正确的,不需要修改。
修正后的T2*: 用木板制作工作台
然后是T3和T4,同样通过检索外部信息来验证和修正步骤:

T3: 挖掘钻石矿(正确,无需修改)

修正后的T3*: 挖掘钻石矿

T4: 用钻石和木棍制作钻石剑(正确,无需修改)

修正后的T4*: 用钻石和木棍制作钻石剑

  1. 最终形态
    经过一系列逐步修正后,最终的思维链如下:

T1*: 获得4块木材
T2*: 用木板制作工作台
T3*: 挖掘钻石矿
T4*: 用钻石和木棍制作钻石剑
5. 模型输出
最终,模型根据修正后的思维链,输出完整且准确的步骤来指导用户如何在Minecraft中获得钻石剑:

获得4块木材
用木材制作木板
用木板制作工作台
挖掘钻石矿
用钻石和木棍制作钻石剑

实验

实验设计

数据集:代码生成、数学推理、创意写作和具体任务规划等多个长视野生成任务。
使用模型:不同规模的LLMs,包括GPT-3.5、GPT-4和CodeLLaMA-7b。
评价指标:代码生成的通过率(pass@k)、数学推理的准确率、创意写作和具体任务规划的可行性和合理性评分。

实验结论

代码生成:在HumanEval和HumanEval+基准测试中的pass@1和pass@5率显著提高,分别提升了20.94%和25.68%。
在这里插入图片描述
数学推理:在GSM8K和GSMHard数据集上表现优异,准确率分别提高了8.36%和31.37%。
在这里插入图片描述
创意写作和具体任务规划:在创意写作任务中的得分提高了19.19%,在Minecraft任务规划中的可执行性和合理性评分分别提升了2.96倍和51.94%。

参考资料

  • 论文
  • 代码

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

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

相关文章

.net8 blazor auto模式很爽(三)用.net8的Blazor自动模式测试,到底在运行server还是WebAssembly

Blazor自动模式到底什么时侯在运行server,什么时侯在运行WebAssembly。这个对我们来说非常重要,官方并没有很清楚地告诉我们。并且存在一些误导,让我们觉得自动模式就是不管我怎么弄,blazor都会自动识别该使用server还是WebAssemb…

Ubuntu 安装 CloudCompare

步骤: sudo apt install flatpakflatpak install flathub org.cloudcompare.CloudCompare此时会有报错: error: No remote refs found similar to ‘flathub’执行 flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.fla…

【IDEA】Spring项目build失败

通常因为环境不匹配需要在file->projectstructure里面调整一下。

详解DAC数模转换+DAC输出模拟电压的测量比对实验程序

前言:详解DAC数模转换原理DAC输出模拟电压的测量比对实验程序(使用 DAC 通道 1 输出模拟电压,然后通过 ADC1 的通道 1 对该输出电压进行读取,并显示在 LCD 模块上面,DAC 的输出电压可以通过按键(或 USMART&…

了解CDN:提升网络性能和安全性的利器

在当今的数字时代,网站性能和安全性是每一个网站管理员必须关注的核心问题。内容分发网络(CDN,Content Delivery Network)作为解决这一问题的重要工具,逐渐成为主流。本文将详细介绍CDN的定义、作用及其工作原理&#…

小白学react之Next.js 14(一)不配置路由的玩法

Next.js 14是目前最新版本,我们用就用最新的玩一下。 建一个示例之后,我在找配置,我应该在那建一个新的页面。找半天硬是没找着,答案是现在不需要配置。 我们来看一下Next.js 14的项目结构: 很明显,在src/…

数学建模系列(4/4):Matlab建模实战

目录 引言 1. Matlab简介与安装 1.1 Matlab简介 1.2 Matlab的安装 2. Matlab基础操作 2.1 Matlab基础语法和常用命令 2.2 Matlab中的数据类型和数据结构 3. 用Matlab进行建模 3.1 矩阵运算与线性代数 矩阵运算 3.2 Matlab中的绘图功能 绘制2D图形 绘制3D图形 3.3…

物联网技术-第5章-物联网数据处理

目录 1.物联网数据特征 2.物联网数据处理 (1)数据清洗 (2)数据存储 (3)数据融合 (4)数据挖掘 3.大数据基本概念 4.云计算基本概念 (1)背景 &#xf…

RTD 基础知识——电阻温度检测器简介

电阻温度检测器或 RTD 可能是简单的温度传感器类型。这些设备的工作原理是金属的电阻随温度变化。纯金属通常具有正的电阻温度系数,这意味着它们的电阻随温度升高而增加。RTD 可在 -200 C 至 850 C 的较大温度范围内工作,并提供高精度、出色的长期稳定性…

HoVer-Net复现:手把手带你实现细胞核的分割与分类,并输出叠加图像|24-06-21

小罗碎碎念 先说一下,只要你跟着我一步一步走,你能实现的效果——对细胞核进行分割和分类,并在原始图像上以颜色叠加的方式直观地展示这些结果。 昨天我在交流群里进行了一下预热,并且提供了一些前期的教程,反响还不…

C# 实现去除多行文本框光标闪烁,并设置行距

一、前言 本篇主要通过继承RichTextBox 的方式实现去除多行文本框的光标闪烁,以及能够设置行距大小,这是因为C#提供的TextBox 和 RichTextBox 本身无这样的功能 二、代码 封装 RichTextBox 为CustomTextBox using System; using System.Collections.Ge…

解决element-plus没有导出的成员FormInstance

使用element-plus的el-form时,报错“"element-plus"”没有导出的成员“FormInstance”。你是否指的是“FooterInstance”? 解决方法: 引入ElForm类型,在外重新定义FormInstance的类型为ElForm的实例类型 示例: import…

React+TS前台项目实战(十四)-- 响应式头部导航+切换语言相关组件封装

文章目录 前言Header头部相关组件1. 功能分析2. 相关组件代码详细注释3. 使用方式4. Gif图效果展示 总结 前言 在这篇博客中,我们将封装一个头部组件,根据不同设备类型来显示不同的导航菜单,会继续使用 React hooks 和styled-components库来…

Oracle最终还是杀死了MySQL

起因 大约15年前,Oracle收购了Sun公司,从而也拥有了MySQL,互联网上关于Oracle何时会“扼杀MySQL”的讨论此起彼伏。 当时流传着各种理论:从彻底扼杀 MySQL 以减少对 Oracle 专有数据库的竞争,到干掉 MySQL 开源项目&…

qt开发-07_radioButton

QRadioButton 部件提供了一个带有文本标签的单选框(单选按钮)。 QRadioButton 是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。 单选框通常呈现给用户一个“多选一”的选择。也就是说&…

Emacs之复制时:禁止转换成tab符号(一百三十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

购物网站系统

摘 要 随着互联网的快速发展,不同的平台软件也不断涌出市场,在众多的平台中,购物网站深受人们的欢迎,也成为生活中不可缺少的一部分。经过对国内外购物情况的调查,社区购物在近几年来成为电商发展的新趋势&#xff0c…

递归乘法00

题目链接 递归乘法 题目描述 注意点 保证乘法范围不会溢出 解答思路 使用加法代替乘法,递归计算A * B,每个递归的过程加上一个A,且对B减1,直到B为0为止 代码 class Solution {public int multiply(int A, int B) {if (B 0…

C++ 教程 - 05 构建编译

文章目录 构建工具cmake安装与使用CMakeLists.txt编写使用案例 构建工具 cmake, Cross Platform Make, (对C)跨平台编译工具,将CMakeLists.txt 文件编译为对应的文件,如linux下的 Makefile,然后使用make命…

[WTL/Win32]_[中级]_[MVP架构在实际项目中的应用]

场景 在开发Windows和macOS的界面软件时,Windows用的是WTL/Win32技术,而macOS用的是Cocoa技术。而两种技术的本地语言一个主打是C,另一个却是Object-c。界面软件的源码随着项目功能增多而增多,这就会给同步Windows和macOS的功能造成很大负担…