Re-ReST: Reflection-Reinforced Self-Training for Language Agents论文学习

news2024/12/28 22:23:49

文章首先提到了一个推理-动作轨迹数据集的问题。这些数据集经常会包括一些需要多步推理的任务。但是,无论是让人去取得这些数据,还是让更高质量的模型代劳,成本都太高了。因此最好是自我监督,自己产生数据来学习(self-instruct还在追我)

文章使用Re-ReST(反射增强自训练)来优化生成的样本。具体地讲,模型先生成样本(比如说一段代码)然后把他交出去(比如说拿去运行)然后看反馈的结果,结合反馈结果优化生成样本,这样就可以得到高质量样本了。

文章做了很多方面的实验,多跳问答、顺序决策、代码生成、视觉问答和文本到图像生成都有涉及。最后还展示了一种不需要真实反馈的反射增强自训练方法(比如说不需要真的把生成的代码拿去运行的方法)

流程大致如下:

这里比较一下Re-ReST与Self-Instruct之间的区别啊。Self-Instruct是人工制作一批种子任务,然后让agent仿照产生新任务,用查重等方法筛选,最后用产生的数据集去微调。

Re-ReST是命令agent去生成某种数据(比如说代码,图像与文字啥的)然后把这些数据放到真实情况中去使用,把使用结果反馈给agent,让他自己修改自己原本生成的数据,从而得到新的高质量数据,最后用这些高质量数据去微调。

总之,Self-Instruct是根据查重筛选,而这个方法是根据真实反馈修改。

可以注意到,这个流程中实际上涉及了两个模型,一个是负责产生数据的agent(M),一个是负责修改不合格数据的Reflector(R)。其中反射模型R是可以访问外部环境的。

流程中文章会先把task输入给agent,agent会给出k种解法(文章推荐3个),然后交给环境。环境会进行反馈,没问题的话,那就把这一对input和output作为合格数据加入数据池,有问题就交给R这边。

其中M是一个大语言模型,可以接受一个task然后输出对应的解决思路,动作步骤。这个task是数据集提供的。具体做法是使用这个公开数据集中的一部分作为训练集,使用上文提到的过程进行训练啥的,然后用剩下的数据集进行测试。感觉这样子其实有一点赖皮,最后实验的时候应该测试一下假如不适用Re-ReST法,单纯的用一部分数据微调一下然后用剩下数据测试看看两者区别。

R也是一个大语言模型,可以访问外部环境获取反馈,从而修改M的输出,提高数据质量直到环境反映说达标了(也可以在修改之前生成cot)。文章发现假如R不能访问外部环境,得到真实反馈的话,其效果会很差。

M,R的参数不互通。

接下来是模型微调的具体细节。文章首先微调了R。R其实不微调也行,不过还是调了。具体做法是让M生成数据,正确的就直接拿来用,不正确的就加上环境给的反馈一起拿来给R微调用。此外,R自己也要生成一批数据(做法和M一样),也拿来微调自己。这些数据都是给R微调用的,没有做Re-ReST,就算有低质量数据也只是加上环境反馈就拿来用了。反正R也不需要太好。

这样,我们拥有了一个比较好的R之后,就可以开始使用上文提到的Re-ReST过程生成数据了。最后拿精修过的高质量数据交给agent(M)来微调。

这样训练部分就完成了。做inference的时候只需要agent(M)就可以了,R不用。

接下来是实验部分。在信息检索任务方面,文章使用HotpotQA数据集,其包含大量有关在维基百科上搜索信息之类的任务(是多步的)。agent能做的动作就三种,(1) 搜索[实体],在维基百科上搜索确切的实体,(2)查找[关键字],在检索到的段落中定位关键字,以及(3)完成[答案]。agent要做的就是给出一系列动作,给出之后会用维基百科的api执行这些动作,看看能不能完成task。具体的检查方法就是看agent最后得到的答案和数据集里的一样不一样,不一样就把检索结果和评估结果作为环境反馈交给R去矫正。这里提到了用LoRA来训练,什么意思?可以学一下LoRA。

此外,文章还做了序列决策,代码生成,用文字生成图片等方面的实验。

最后,文章进行了分析,证明了使用Re-ReST方法比单纯的让agent生成数据,不做反馈精修的方法更好。同时,实验开头的先微调R的做法被证明具有一定的作用。

最后,文章还做了一个小测试。之前有提到做inference的时候是没有R参与的,毕竟按照之前的思路,难不成做inference的时候还要把agent输出的结果先用api试一遍,然后把反馈交给R再把精修过的结果交给用户?但R不一定要这么用,这里测试了一下假如让R也来会怎么样。这里使用了一种self-consistent方法,就是让M和R各自生成三个output(总共6种解法)然后少数服从多数,选择最多人选择的那种方法,发现效果更好了。这样可以让R也参与进来,而且不需要环境反馈那一步,这里的R相当于只是普通的模型,不是负责精修数据的。

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

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

相关文章

在Excel中通过Python运行公式和函数实现数据计算

目录 一、引言 1.1 背景介绍 1.2 Python in Excel 的意义 二、环境准备 2.1 安装必要的软件 2.2 配置 Excel 三、基础操作 3.1 输入 Python 代码 3.2 调用 Python 库 四、案例分析 4.1 数据读取与处理 4.1.1 读取 Excel 数据 4.1.2 数据处理 4.2 数据可视化 4.2…

SprinBoot+Vue学生信息管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

【信息论与编码原理】自学成才还在学ing

绪论 多的咱不写,只写干干的 点对点通讯系统模型 干扰和噪声不可避免 消息是 信息的载体,消息包含信息,是具体的非物理的 信息是有效的data 信号是 适合信道传输的物理量,可携带消息,可以显示或者描述 香农信息定义…

Java重修笔记 第五十二天 Junit

Junit 的使用 1. 为了方便程序员测试某一个方法而使用 2. 在方法上面加上 Test 并引用 5.X 版本 3. 就能在方法前面看到可运行的按钮 public class Homework07 {public static void main(String[] args) {}Testpublic void testList() {DAO<User> dao new DAO<&g…

大数据与人工智能:脑科学与人工神经网络ANN

文章目录 大数据与人工智能&#xff1a;脑科学与人工神经网络ANN一、引言ANN简介研究背景与应用领域发展背景应用场景 二、ANN背后的人脑神经网络人脑神经网络的专业描述神经元的结构信号处理 思考和认知过程认知功能的实现 对机器学习算法的启示 三、ANN的研究进展初始阶段&am…

通过docker overlay2目录名查找容器名和容器ID

有时候经常会有个别容器占用磁盘空间特别大&#xff0c;这个时候就需要通过docker overlay2 日录名查找对应容器名. 1.首先进入到 /var/lib/docker/overlay2 目录下 # cd /var/lib/docker/overlay2 2.查看谁占用容间最大 # du -h -d 1 | grep G |sort -nr 3.再通过目录名查找…

存储课程学习笔记4_设计数据结构管理nvme磁盘(基于已经通过struct nvme_user_io和ioctl实现了对nvme设备的读写)

已经测试了直接操作nvme磁盘的方式&#xff0c;那么基于可以读写nvme磁盘的功能&#xff0c;如何扩展呢。 通过struct nvme_user_io结构体ioctl实现对nvme磁盘的读写访问&#xff0c;可以定义结构&#xff0c;对整个磁盘进行管理&#xff0c;以配合业务进行衍生功能。 0&…

使用Idea新建一个Demo项目基于WebApp目录下的服务器访问测试-作业篇

文章目录 前言一、Maven环境搭建二、创项目总结 前言 例如&#xff1a;第一堂JAVAweb 轻量级的项目搭建运行作业。 一、Maven环境搭建 环境变量配置 新建系统变量 MAVEN_HOMEC:\apache-maven-3.6.3path后边加上 %MAVEN_HOME%\bin然后控制台cmd 检查变量配置是否完全 mvn -v…

ABC 370 E - Avoid K Partition

原题链接&#xff1a;E - Avoid K Partition 题意&#xff1a;给长度为n的数组&#xff0c;将数组划分成任意份&#xff0c;但是每一份的总和都不能是k&#xff0c;问有多少种分割方法。 思路&#xff1a;dp&#xff0c;f[i]&#xff0c;代表前i个元素满足题意的划分的总和&a…

申请Shopify PayPal账号的时间和所需资料如下

申请流程 注册账户&#xff1a; 访问 PayPal官网。点击右上角的“注册”按钮&#xff0c;选择“企业账户”。输入电子邮箱地址和密码&#xff0c;点击“继续”。填写公司信息&#xff1a; 提供公司名称、营业执照地址、联系方式等信息。确保公司名称与营业执照上的名称一致。填…

1.2 半导体二极管笔记

文章目录 一、符号二、 伏安特性1、正向特性2、反向特性3、反向击穿特性 二、二极管的主要参数1、最大整流电流 I F I_F IF​2、反向击穿电压 U B R U_{BR} UBR​3、反向饱和电流 I S I_S IS​4、最高工作频率 f m f_m fm​5、极间电容 C d C_d Cd​ 四、二极管的测试1、二极管…

突破最强算法模型,Transformer !!

这几天&#xff0c;大家对于Transformer的问题&#xff0c;还是不少。 今儿再和大家聊聊~ 简单来说&#xff0c;Transformer 是一种神经网络模型&#xff0c;在机器翻译、语言理解等任务中表现特别好。它的核心思想是自注意力机制&#xff08;Self-Attention&#xff09;&…

el-image(vue 总)

一 加载静态资源 在第一次使用vue3开发项目时&#xff0c;使用require&#xff08;‘图片路径’&#xff09;&#xff0c;结果浏览器报错&#xff1a; Uncaught (in promise) ReferenceError: require is not defined 因为require是webpack提供的一种加载能力&#xff0c;但…

经典文献阅读之--Multi S-Graphs(一种高效的实时分布式语义关系协同SLAM)

0. 简介 协作同时定位与建图&#xff08;CSLAM&#xff09;对于使多个机器人能够在复杂环境中操作至关重要。大多数CSLAM技术依赖于原始传感器测量或低级特征&#xff0c;如关键帧描述符&#xff0c;这可能由于缺乏对环境的深入理解而导致错误的闭环。此外&#xff0c;这些测量…

[SDK]-菜单 和 树控件

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解菜单和树控件的相关知识 菜单 认识菜单 及 创建自定义菜单栏 资源文件 -> 项目名.rc ->Menu 这是系统提供的默认菜单&#xff0c;也可以往里面添加修改内容 以下是 自定义菜单栏&#xff1a; 创…

如何通过Autoscaler实现Kubernetes的伸缩?

本文将介绍如何在流量高峰之前使用KEDA和Cron scaler主动调整工作负载规模。 在设计Kubernetes集群时&#xff0c;我们可能经常需要回答以下问题&#xff1a; 集群伸缩需要多长时间&#xff1f;在新Pod创建之前需要等待多长时间&#xff1f; 有四个主要因素会影响集群的伸缩…

Windows环境下 VS2022 编译 OGG 源码

OGG OGG音频编码格式&#xff0c;全称为Ogg Vorbis&#xff0c;是一种开源且无专利限制的音频压缩格式。它被设计用来提供高质量的音频存储和传输&#xff0c;同时保持较小的文件大小。OGG Vorbis支持多声道音频&#xff0c;并且可以处理可变比特率&#xff0c;这意味着它可以根…

分享从零开始学习网络设备配置--任务6.3 使用基本ACL限制网络访问

任务描述 某公司构建了互联互通的办公网&#xff0c;为保护公司内网用户数据的安全&#xff0c;该公司实施内网安全防范措施。公司分为经理部、财务部和销售部&#xff0c;分属3个不同的网段&#xff0c;3个部门之间用路由器进行信息传递。为了安全起见&#xff0c;公司领导要求…

npm 清除缓存

npm cache clean --forcenpm cache verify# 安装依赖 npm install# 建议不要直接使用 cnpm 安装依赖&#xff0c;会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 npm install --registryhttps://registry.npmmirror.com npm彻底清理缓存_npm cache verify-CSD…

OpenCV仿射变换和透视变换函数(C++)

文章目录 引言图像仿射变换 warpAffine()图像的旋转仿射变换 透视变换 warpPerspective()透视变换例子参考文献 **仿射变换相关函数** cv::transform()&#xff1a;对一组点进行仿射变换 cv::warpAffine()&#xff1a;对整幅图像进行仿射变换 cv::getAffineTransform()&#xf…