【论文精读】REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS

  • 前言
  • ABSTRACT
  • 1 INTRODUCTION
  • 2 REACT: SYNERGIZING REASONING + ACTING
  • 3 KNOWLEDGE-INTENSIVE REASONING TASKS
    • 3.1 SETUP
    • 3.2 METHODS
    • 3.3 RESULTS AND OBSERVATIONS
  • 4 DECISION MAKING TASKS
  • 5 RELATED WORK
  • 6 CONCLUSION
  • 阅读总结

前言

一篇来自ICLR 2023的文章,可以称得上是当今火爆全网的Agent的鼻祖工作了,它提出了基于LLM初始的Agent的范式,在问答任务和决策任务上都取得了不错的结果,但是受限于LLM的能力,导致与人类的SOTA相距甚远。


Paperhttps://arxiv.org/pdf/2210.03629.pdf
Codehttps://github.com/ysymyth/ReAct
FromICLR 2023

ABSTRACT

LLMs在语言理解和交互决策上表现出令人印象深刻的性能,其推理能力也作为了一个单独研究的主题。本文探索使用交互的方式生成推理任务特定动作,使二者具有更大的协同性。推理帮助模型归纳、跟踪和更新计划以及处理异常,动作则允许与外部接口相连并收集额外的信息。本文的ReAct方法可以应用于多语言决策任务,在最新的基线上证明了其有效性、人类可解释性和可信度。具体来说,在问答和事实验证方面,ReAct与简单的维基百科API交互,生成了类似人类解决任务的轨迹,克服了CoT中广泛存在的幻觉和错误累积问题。此外在两个交互式决策benchmark上,ReAct在只有一两个上下文示例的情况下优于模仿学习和强化学习的方法。

1 INTRODUCTION

人类智能的一个特点是可以做到言行一致,在对自我调节、制定策略以及维护工作记忆有着重要作用。最近的工作暗示了在自动系统中,语言推理和交互式决策的结合是可能的。首先,LLM展现出其强大的推理能力,比如CoT推理,但是其CoT能力只能对自身使用,可以理解为一个黑盒,这种无法与外界交互的方式会带来幻觉和错误累积的问题。其次,最近有工作利用预训练的语言模型在交互式环境中进行规划和行动,虽然加入了多模态的信息以文本形式引入,但是它们只能根据当前的状态解决现有的问题,无法解决更抽象的高级目标(需要多步推理交互式执行)。目前还没有研究将推理和行动结合起来解决一般的问题,是否能够带来系统性的提升还有待商榷。
image.png
本文提出ReAct,一个将推理和动作与语言模型相结合的通用范式,用于解决不同语言推理和决策任务。ReAct提示LLMs以交错的方式生成与任务相关的语言推理轨迹和动作,让模型动态推理去创建、维护和调整行动的计划,同时也与外部环境交互来引入外部的知识。
作者在四个不同的benchmarks上对ReAct进行了评估,包括问答(HotPotQA)、事实验证(Fever)、基于文本的游戏(ALFWorld)以及网页浏览(WebShop)。对于前两个数据集,ReAct+CoT方法的效果是最好的,在后两个数据集上,两次甚至一次ReAct提示就能将成功率分别提高34%和10%。此外,作者还展示了相对于仅采用动作的优势,证明了稀疏多功能推理在决策中的重要性。推理和动作的结合提高了模型的可解释性和可信度,与人类的行为对齐。
总的来说,本文的贡献如下:

  1. 提出ReAct,一个新颖的基于prompt的范式,在语言模型中协同推理和动作来解决一般问题。
  2. 在多个benchmarks上验证ReAct的性能与优势。
  3. 系统的消融分析,了解推理任务中动作以及交互任务中推理的重要性。
  4. ReAct在进一步微调下可以提升性能。与强化学习结合可以进一步释放LLM的潜力。

2 REACT: SYNERGIZING REASONING + ACTING

考虑到智能体与环境交互以解决问题的一般场景,在时间步 t t t时,一个智能体获得当前环境的观察 o t ∈ O o_t \in \mathcal{O} otO,然后遵循策略 π ( a t ∣ c t ) \pi (a_t|c_t) π(atct)选择动作 a t ∈ A a_t \in \mathcal{A} atA,其中 c t = ( o 1 , a 1 , . . . , o t − 1 , a t − 1 , o t ) c_t = (o_1,a_1,...,o_{t-1},a_{t-1},o_t) ct=(o1,a1,...,ot1,at1,ot),即历史观察动作上下文。当历史上下文与动作的映射很不清晰时,学习一个策略是具有挑战的。
ReAct的思想很简单,它将智能体的动作空间增强为 A ^ = A ∪ L \mathcal{\hat{A}}=\mathcal{A} \cup \mathcal{L} A^=AL,其中 L \mathcal{L} L是语言空间。动作 a ^ t ∈ L \hat{a}_t \in \mathcal{L} a^tL在语言空间中,称之为思想或者推理痕迹,它不会影响外部环境,通过上下文信息进行推理来支持接下来的动作。
然而,语言空间是无限的,在这个空间中学习是困难的,需要很强的先验。而LLM只需要借助少量的示例先验进行提示,就可以生成解决任务的语言思维。对于推理重要的任务,ReAct交替产生思维和动作,这样解决问题的轨迹就由多步思想-动作-观察步骤组成。
由于决策和推理的能力已经集成到LLM中,ReAct具有一些独特的功能:

  1. 符合直觉,易于设计。
  2. 通用且灵活。ReAct适用于具有不同动作空间和推理需求的多种任务。
  3. 高性能且稳健。对新任务展现出强大的泛化能力。
  4. 和人类对齐且可控。ReAct决策和推理过程具有可解释性,并且人类可以通过编辑思想来控制或纠正智能体的行为。

3 KNOWLEDGE-INTENSIVE REASONING TASKS

对于推理任务,ReAct通过与维基百科API交互,能够检索信息支持推理。

3.1 SETUP

作者在HotPotQA和FEVER两个数据集上来验证ReAct的知识检索与推理能力。前者是多跳问答benchmark,需要对两个或多个维基百科片段进行推理,后者是事实验证benchmark,每个声明都基于维基百科中存在的片段而标注为支持、反对或者信息不足。ReAct将只接收问题和声明,依靠自己的内部知识和外部API交互来回答。
在动作空间上,作者设计了一个简单的维基百科API,它具有三种类型的动作来支持交互式信息的检索:

  1. search[entity]。返回相应实体前五个句子或者前五个近似的实体。
  2. lookup[string]。检索出包含特定string的下一个句子。
  3. finish[answer]。完成任务给出答案。模拟人类的检索过程。

3.2 METHODS

作者从训练集中随机选择6个和3个示例,并手动编写ReAct格式的轨迹用于小样本的示例。类似于图1中的1(d),每个轨迹都由多个思想-动作-观察步骤组成。
在baseline部分,作者系统地消融了ReAct轨迹以构建多个baseline的prompt。

  1. 标准prompt。移除了轨迹中的思想,动作和观察。
  2. CoT。移除了动作和观察,只做推理。其中CoT-SC(多CoT投票)能持续提高CoT的性能。
  3. Acting-only prompt。移除了思想的过程。

在实验部分,作者观察到ReAct解决任务的过程更符合事实,CoT在推理逻辑上更准确,但容易受到幻觉的影响。因此,作者将ReAct和CoT-SC结合在一起,让模型根据以下情形切换方法:

  1. ReAct未能在限定步骤给出答案,采用CoT-SC。
  2. 当n个CoT-SC样本中多数答案少于一半,采用ReAct。

此外,由于手动构建推理路径具有一定的挑战,因此作者采用3000个有正确答案的轨迹来微调PALM-8/62B,用于轨迹的生成。

3.3 RESULTS AND OBSERVATIONS

image.png
上图显示在两个任务上,ReAct都要优于Act,这证明了推理对指导动作的价值。在HotPotQA数据集上,ReAct要略差于CoT,但是在Fever上要优于CoT。为了准确理解二者在HotPotQA上的差异,作者对结果进行了观察,得到如下的分析:

  1. CoT中幻觉问题是个严重的问题。相比之下,ReAct解决问题的轨迹更值得
  2. 虽然推理和行动以及观察步骤的交错提高了ReAct的可信度,但是约束了其灵活性,导致其推理错误率高。
  3. 对于ReAct,通过搜索成功检索出知识非常重要。

CoT-SC+ReAct的范式在两个数据集上都得到了更好的结果,这表明正确结合模型内在知识和外在知识对模型推理具有显著价值。
image.png
当对小模型进行微调后,8B的PaLM优于62Bprompt的PaLM,62B的PaLM优于540B的PaLM,此外,Standard和CoT与ReAct的差距拉大,原因是前者本质上是学习可能是错误的知识事实,而后者是教会模型如何推理和行动来访问来自外部的知识。当然,现有的方法与特定领域的SoTA相距甚远,作者认为精心微调会填平gap。

4 DECISION MAKING TASKS

作者还在语言交互决策任务ALFWorld和WebShop上测试了ReAct的能力。前者是一款基于合成文本的游戏,Agent需要通过文本操作与模拟家庭进行交互和导航,从而实现高级目标(6中类型任务)。特别的,ALFWorld有一个内置挑战是你需要对常见家具的位置有一个概念。为了提示ReAct,对于每种任务类型,作者从训练集中随机标注了三个轨迹,每个轨迹都包括:

  1. 分解目标。
  2. 跟踪子目标完成情况。
  3. 确定下一个子目标。
  4. 通过常识推断下一个目标的位置以及如何操作。

作者在特定任务设置下的134个未见的任务上进行评估,为了鲁棒性,作者在人工标注的基础上为每个任务构建了6个prompt。baseline采用BUTLER,一种模仿学习智能体,针对每种任务进行了训练。
WebShop是一个在线购物环境网站,拥有118万个真实世界的产品和12k人工指令。它包含多种结构化和非结构化文本,需要智能体根据用户指令购买商品。该任务通过500个测试指令的平均得分和成功率来评估。ReAct的提示包括带有推理的搜索,选择产品,选项和购买操作。作者将ReAct与模仿学习方法以及模仿+强化学习方法进行对比。
image.png
ReAct在两个数据集上都要优于Act。在ALFWorld上,ReAct平均71%的成功率远高于Act和BUTLER,在Webshop上,one-shot的Act已经达到了IL和IL+RL的方法。ReAct的性能更为突出,但是与人类表现仍然相去甚远。此外,作者还和IM方法进行了消融实验的对比,让ReAct框架和IM结合,IM没有采用LLM,它局限在对环境状态进行观察以及智能体需要完成什么才能满足目标。由于缺少高级目标分解,ReAct-IM在该完成什么子目标的时候经常犯错,由于缺乏常识推理,它难以定位家具的大概位置。

5 RELATED WORK

略。

6 CONCLUSION

本文提出ReAct,一个简单有效的方法,基于LLM进行协同推理和行动。无论是在问答推理还是决策任务上都带来了卓越的性能。尽管方法简单,但是由于token长度的限制,在一些复杂的任务上做的不好(需要更多的演示)。虽然微调模型有效果,但是数据还是不够。未来通过多任务训练扩大ReAct的规模,与RL相结合,可能会产生更强大的Agent。

阅读总结

在我看来,ReAct这篇工作可以说是2023年爆火的Agent的鼻祖,它的方法很简单,思路很清晰,整篇工作最大的贡献在于提出了一个初始Agent的范式,那就是推理+动作。一个真正意义上的Agent,就应该像人一样,面对一个问题时先思考,再执行,走一步想一步,从而完成任务。当然了,Agent还得有自己的memory,有自己的技能库,以及遇到问题时需要Planing,不过这都是后面Agent的发展了。最后,文中提到在复杂任务上,ReAct还是没办法做好,并且与人类的SOTA相差甚远,其根本原因是Agent的能力不够,当ChatGPT以及后续衍生产品的出现后,所有的这些GAP都会被填平。

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

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

相关文章

phpstudy搭建WordPress教程

一、phpstudy新建配置WordPress 打开phpstudy,启动Apache(或者Nginx)和MySQL服务 来到数据库部分,点击[创建数据库],填写新建数据库的名称,用户名以及密码,完成后点击确认 来到网站部分&#x…

Course2-Week4-决策树

Course2-Week4-决策树 文章目录 Course2-Week4-决策树1. 决策树的直观理解2. 构建单个决策树2.1 熵和信息增益2.2 构建决策树——二元输入特征2.3 构建决策树——多元输入特征2.4 构建决策树——连续的输入特征2.5 构建回归树——连续的输出结果(选修)2.6 代码实现-递归构建单个…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

在使用php对mysql进行连接的过程中,出现了Fatal error: Uncaught Error: Class "mysqli" not found in的问题 解决方案 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己…

Redis如何做内存优化?

Redis如何做内存优化? 1、缩短键值的长度 缩短值的长度才是关键,如果值是一个大的业务对象,可以将对象序列化成二进制数组; 首先应该在业务上进行精简,去掉不必要的属性,避免存储一些没用的数据&#xff1…

【淘宝网消费类电子产品销售数据可视化】

淘宝网消费类电子产品销售数据可视化 引言数据爬取与处理数据可视化系统功能1. 总数据量分析2. 店铺总数据3. 店铺销售额排名4. 不同电子商品销售价格5. 单个商品价格排名6. 不同省份平均销量7. 不同地区的平均销售额8. 省份数量9. 每个省份有用的平均个数 创新点结语 引言 随…

Linux 中 find 查找

目录 1.普通查询 2.按照文件大小查找 3.忽略文件字母大小写查询 4.根据修改时间查找 5. 取反 ! 6.根据用户查询 7.对查找出来的内容进行操作 1.普通查询 find 路径 -name "文件名" 如查看 etc 目录下的passwd 的文件 find /etc -name "passwd&quo…

kettle完成mysql表与表之间的更新和插入

版本:20231209 kettle完成数据库表与表之间的转换非常的简单,只需要在输入模块选择:输入表;在输出模块选择:插入和更新表模块 实例展示:将表stu1的数据同步到stu2,并覆盖掉stu2原本的数据。 cr…

嵌入式学习---ARM时钟体系

目录 时钟相关概念时钟脉冲时钟频率时钟的作用时钟信号的生成 S3C2440的时钟体系主时钟晶振两个PLL 时钟启动流程相关的寄存器 时钟相关概念 时钟脉冲 按一定电压幅度,一定时间间隔连续发出的脉冲信号。它是一个周期性的信号,每个周期内包含一个上升沿…

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

1.关于稀疏卷积的解释:https://zhuanlan.zhihu.com/p/382365889 2. 答案: 在深度学习领域,尤其是计算机视觉任务中,遮蔽图像建模(Masked Image Modeling, MIM)是一种自监督学习策略,其基本思想…

向日葵远程控制鼠标异常的问题

​ 在通过向日葵进行远程控制的时候,可能会遇到鼠标位置异常的问题。此时,不管怎么移动鼠标,都会停留在屏幕最上方,而无法点击到正确的位置。如图: 此时,如果启用了“被控端鼠标”功能,可以正…

【Docker】swarm stack部署多service应用

前面我们已经学习过了Docker Compose,它可以用来进行一个完整的应用程序相互依赖的多个容器的编排的,但是缺点是只能在单机模式使用,不能在分布式多机器上使用;前面我们也学习了Docker swarm,它可以将单个服务部署为多…

基于EIoT能源物联网的智能照明系统应用改造-安科瑞 蒋静

【摘要】:随着物联网技术的发展,许多场所针对照明合理应用物联网照明系统,照明作为工厂的重要能耗之一,工厂的照明智能化控制,如何优化控制、提高能源的利用率,达到节约能源的目的。将互联网的技术应用到工…

【PHP】学习笔记一:数组及JSON

目录 一、初始化创建数组: 1. 简单数组: 2. 索引号是字符串数组(对象数组): 3. 数组中增加一个元素: 4. 对象数组转JSON字符串 5. JSON字符串转数组 一、初始化创建数组: 1. 简单数组&am…

Python数据科学视频讲解:数据挖掘与建模的注意事项

1.7 数据挖掘与建模的注意事项 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.7节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应用的全流程,包括…

sensitive word 敏感词(脏词) 如何忽略无意义的字符?达到更好的过滤效果?

忽略字符 说明 我们的敏感词一般都是比较连续的,比如 傻帽 那就有大聪明发现,可以在中间加一些字符,比如【傻!#$帽】跳过检测,但是骂人等攻击力不减。 那么,如何应对这些类似的场景呢? 我们可以指定特…

CSS3技巧36:让内容垂直居中的三种方式

让内容垂直居中,是一个很重要的应用情景,在很多场合都会需要。这也是面试的时候,一些考官喜欢拿来初面的小题目。 这里,小结下让内容垂直居中的三种方式。 当然,读者如果有更好的方法,也可以提出来。 基本…

基于ssm技术的车库智能管理平台论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本车库智能管理平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

【自定义Source、Sink】Flink自定义Source、Sink对redis进行读写操作

使用ParameterTool读取配置文件 Flink读取参数的对象 Commons-cli: Apache提供的,需要引入依赖ParameterTool:Flink内置 ParameterTool 比 Commons-cli 使用上简便; ParameterTool能避免Jar包的依赖冲突 建议使用第二种 使用Par…

西工大网络空间安全学院计算机网络实验五——ACL配置

实验五、ACL配置 一. 实验目的 1. 掌握ACL的基本配置方法 二. 实验内容 1. 基于如下图所示的拓扑图,对路由器进行正确的RIP协议配置; ​ 首先引入3台2811 IOS15型号的路由器、3台2950-T24型号的交换机、4台PC-PT型号的PC机、两台Server-PT型号的服务…

kafka学习笔记--生产者消息发送及原理

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…