论文 | REACT: SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS

本文首先认为,到目前为止,LLM 在语言理解方面令人印象深刻,它们已被用来生成 CoT(思想链)来解决一些问题,它们也被用于执行和计划生成。

尽管这两者是分开研究的,但本文旨在以交错的方式将推理和行动结合起来,以提高LLM的表现。

这个想法背后的原因是,如果你考虑一下作为一个人,你如何行为来执行某些任务。

第一步是你将使用“内心言语”,或者你会以某种方式写下或与自己交流,说“我如何执行任务 X? 要完成任务 X,我需要首先执行步骤 1,然后执行步骤 2,依此类推”

更具体地说,如果你要在厨房做一道菜,你可以像这样做出反应:

  • “现在一切都切完了,我该烧热锅水了”),处理异常或者根据情况调整计划(“我没有盐,就用酱油和胡椒粉代替吧”), 并意识到何时需要外部信息(“我如何准备面团?让我在互联网上搜索”)。
  • 您还可以采取行动(打开食谱阅读食谱、打开冰箱、检查成分)来支持推理并回答问题(“我现在可以做什么菜?”)。

这种推理与行动的结合使得人类即使在以前未见过的情况下或面临信息不确定性时也能学习并完成任务。

论文引入一个名为ReAct的框架,在这个框架中,LLM被用来以交互的方式生成“合理的推理轨迹”以及“特定于任务的操作”。

  • 生成合理的推理轨迹允许模型归纳、跟踪、更新动作规划,甚至处理异常
  • 特定于任务的操作允许模型与外部数据源(例如知识库或外部环境)交互并收集信息

ReAct是一种将推理和行动与LLM相结合的通用范式。通过Few-shot Prompt,引导LLM生成推理轨迹和特定任务行动。这使得系统能够在整个pipeline过程中进行动态推理,不断创造、维护、调整行动计划,同时允许通过工具调用和外部环境(例如维基百科)进行交互以此获得外部信息,并将外部信息融合到整个动态推理过程中。

1. 数据准备

  • 任务实例: 收集大量任务实例,每个实例包含目标、输入信息、行动轨迹和结果。
  • 推理轨迹和行动: 将每个实例的推理过程和行动轨迹人工标注为文本,例如:
    • 推理轨迹: 将推理过程分解为多个步骤,并用自然语言描述每个步骤的内容。
    • 行动: 将每个步骤对应的行动用自然语言描述,例如搜索关键词、点击按钮等。
  • 环境接口: 设计一个简单的环境接口,例如 API,用于模型与环境交互。

2. 提示生成

  • 任务实例: 将每个任务实例的输入信息、推理轨迹和行动轨迹组合成提示。
  • 示例: 提供一个或多个包含推理轨迹和行动轨迹的示例,以指导模型生成推理轨迹和行动。

3. 模型训练

  • 使用 ReAct 提示训练大语言模型,例如 PaLM-540B。
  • 可以使用微调方法,例如使用少量正确的推理轨迹和行动轨迹来微调较小的语言模型。

4. 任务解决

  • 使用训练好的模型解决新的任务实例。
  • 模型会根据提示生成推理轨迹和行动,并通过环境接口与环境交互。

ReAct 效果

  • 知识密集型推理任务
    • 在 HotpotQA 和 Fever 任务上,ReAct 的性能优于仅使用行动或推理的模型。
    • ReAct 生成的推理轨迹更可靠,事实驱动的,不容易出现幻觉或错误传播。
    • 结合 ReAct 和 CoT-SC 方法可以进一步提高性能,并充分利用内部知识和外部知识。
  • 决策任务
    • 在 ALFWorld 和 WebShop 任务上,ReAct 的性能优于模仿学习和强化学习方法。
    • ReAct 生成的推理轨迹可以帮助模型更好地规划行动,并有效地探索环境。
    • ReAct 的推理轨迹可以由人类进行编辑,从而更好地控制模型的行为。

与现有方法的对比

  • Chain-of-Thought (CoT): CoT 可以揭示 LLM 的推理过程,但容易出现幻觉和错误传播。
  • 模仿学习 (IL): IL 可以学习专家的行为,但缺乏灵活性,无法适应新的任务。
  • 强化学习 (RL): RL 可以学习复杂的决策过程,但需要大量的数据和计算资源。

局限性

  • 标注数据需求: ReAct 的训练需要大量的人工标注数据,这对于实际应用来说可能是一个挑战。
  • 推理和行动行为的有限支持: ReAct 目前对推理和行动行为的支持有限,需要进一步改进。
  • 模型的可解释性: 虽然ReAct 生成的推理轨迹更容易理解,但对于一些复杂的推理过程,仍然难以解释。

未来方向

  • 改进标注数据收集: 开发自动标注或半自动标注方法,以减少人工标注数据的需求。
  • 扩展推理和行动行为: 研究更丰富的推理和行动行为,以支持更复杂的任务。
  • 提高模型的可解释性: 开发新的技术,例如可视化或解释方法,以帮助人类理解模型的决策过程。
  • 与其他方法结合: 将 ReAct 与其他方法结合,例如强化学习,以进一步提高模型的性能和灵活性。

总结

ReAct 是一个很有潜力的方法,它将推理和行动结合起来,为解决各种语言推理和决策任务提供了新的思路。论文的实验结果也表明,ReAct 在推理和行动方面都优于现有的方法。未来可以进一步改进 ReAct 的性能和扩展其应用范围,从而推动大语言模型在各个领域的应用。

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

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

相关文章

JSP入门基础

JSP入门基础 软件开发环境这门课程的复习资料 Web开发技术概述 URL的组成部分 协议、主机DNS名或IP地址和文件名 Tomcat服务器 Tomcat服务器的默认端口号是8080 概念 软件开发环境是围绕着软件开发的一定目标而组织在一起的一组相关软件工具的有机集合 JSP和HTML的区别…

SPE连接器技术革新汽车制造业

概述 新的SPE标准在汽车制造业中的应用正日益受到重视,它不仅推动了汽车通信技术的革新,还对汽车性能测试方法产生了深远影响。本文将详细探讨SPE标准在汽车制造业中的应用案例分析,以及它对供应链的挑战与机遇。 SPE标准在汽车制造业中的应…

[leetcode]subarray-product-less-than-k 乘积小于K的子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int numSubarrayProductLessThanK(vector<int>& nums, int k) {if (k 0) {return 0;}int n nums.size();vector<double> logPrefix(n 1);for (int i 0; i < n; i) {logPrefix[i 1] …

揭秘!chatGPT核心技术应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

prometheus回顾(2)--如何使用Grafana对接Prometheus数据源的详细过程,清晰易懂。

文章目录 Grafana简介什么是GrafanaGrafana 能做什么&#xff1f;什么时候我们会用到Grafana?Prometheus有图形化展示&#xff0c;为什么我们还要用Grafana? 环境操作步骤一、Grafana安装二、Grafana数据源Prometheus添加三、Grafana添加数据仪表盘补充、如何查找仪表盘 Graf…

在Linux下直接修改磁盘镜像文件的内容

背景 嵌入式Linux系统通常在调试稳定后&#xff0c;会对磁盘&#xff08;SSD、NVME、SD卡、TF卡&#xff09;做个镜像&#xff0c;通常是.img后缀的文件&#xff0c;以后组装新设备时&#xff0c;就将镜像文件烧录到新磁盘即可&#xff0c;非常简单。 这种方法有个不便之处&a…

Oracle学习笔记

Oracle 一、简介&#xff1a; 特点&#xff1a; 多用户、大事务量的事务处理 数据安全性和完整性控制 支持分布式数据处理 可以移植性 Oracle 19c 安装 登录甲骨文&#xff0c;安装Oracle 解压压缩包 安装 完毕 此处账户&#xff1a;qfedu 密码&#xff1a;wang8218.…

染色法判定二分图

什么是二分图&#xff1f; 二分图&#xff0c;也称作二部图&#xff0c;是图论中的一种特殊模型。在一个无向图G(V,E) 中&#xff0c;如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B&#xff0c;并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…

LeetCode(2)合并链表、环形链表的约瑟夫问题、链表分割

一、合并链表 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct …

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名&#xff0c;编译器不会为引⽤变量开辟内存空间&#xff0c; 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

【Vue3】使用vite创建vue项目

一、安装Nodejs 参考文章https://blog.csdn.net/DX390609/article/details/140305585?spm1001.2014.3001.5502 二、创建项目 在要创建的目录下打开命令行输入&#xff1a; npm create vuelatestvue项目创建成功&#xff1a; 三、安装vue插件 vscode打开项目文件夹&…

谷歌个人开发者账号14天封测审核通过技巧,你还不知道吗?

众所周知&#xff0c;目前在Google play应用商店上架应用已经不是那么容易了&#xff0c;谷歌各种政策的更新以及审核系统的升级&#xff0c;给开发者们带来了不少挑战。 尤其针对个人开发者账号需要20人连续14天的封测的要求&#xff0c;周期长&#xff0c;且随着政策执行力度…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

Qt开发 | Qt模型视图代理(Model-View-Delegate)

文章目录 一、Qt MVD概念讲解二、Qt模型视图代理之&#xff1a;QTableView的使用三、Qt模型视图代理之&#xff1a;QListView的使用 一、Qt MVD概念讲解 Qt MVD&#xff08;Model-View-Delegate&#xff09;是Qt框架中的一种设计模式&#xff0c;是Qt中用界面组件显示与编辑数据…

深入解析C++11:现代特性和应用

目录 一.c11.简介二.列表初始化和initializer_list1.列表初始化2.initializer_list 三.简化声明1.auto2.decltype 四.新增容器1.array2.forward_list3.unordered_map/set 五.右值引用与移动语义1.左值和右值2.左值引用3.右值引用4.移动构造和移动赋值5.万能引用和引用折叠6.完美…

git-工作场景

1. 远程分支为准 强制切换到远程分支并忽略本地未提交的修改 git fetch origin # 获取最新的远程分支信息 git reset --hard origin/feature_server_env_debug_20240604 # 强制切换到远程分支&#xff0c;并忽略本地修改 2. 切换分支 1. **查看所有分支&#xff1a;**…

mount卡住(失败)解决方案

mount -a卡主 第一步确保两边都打开了NFS服务&#xff01;&#xff01;&#xff01;&#xff01; 客户端执行mount -av 查看信息是拒绝服务 查看服务端&#xff1a;showmount -e 192.168.25.168 看提示信息处理&#xff0c;关闭两端的防火钱 遇到这个错误就是服务端不让客户端…

JAVA--SpringCloud

SpringCloud基础 为什么需要spring cloud 单体结构--Monolith 首先请回想一下我们所开发的服务是什么样子的。通常情况下&#xff0c;这个服务所对应的代码由多个项目&#xff08;模块&#xff09;所组成&#xff0c;各个项目会根据自身所提供功能的不同具有一个明确的边界。…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体&#xff0c;括号后分号不能丢类内成员可…

算术运算符用途解析及应用案例

文章目录 常用的算术运算符及其用途&#xff1a;运算符优先级类型转换高级用法 应用案例1. 计算器程序2. 平方根计算3. 计算平均数和标准差4. 货币兑换5. 计算几何6. 动力学模拟7. 数字图像处理8. 金融计算&#xff1a;复利计算 常用的算术运算符及其用途&#xff1a; 算术运算…