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

news2024/11/18 23:33:06

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.coloradmin.cn/o/1298478.html

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

相关文章

m_map导入本地地形数据

m_map绘制地形图时,虽然自带有1的地形图以及从NOAA下载的1分的地形图(详见:Matlab下地形图绘图包m_map安装与使用),但有时需要对地形图分辨率的要求更高,便无法满足。 此时,需要导入本地地形数…

代理IP和网络加速器的区别有哪些

随着互联网的普及,越来越多的人开始使用网络加速器来提高网络速度。然而,很多人并不清楚代理IP和网络加速器之间的区别。本文将详细介绍两者的概念及区别。 一、代理IP 代理IP是一种通过代理服务器进行网络连接的方式。在使用流冠代理IP时,用…

金南瓜SECS/GEM C# SDK 快速使用指南

本文对如何使用金南瓜SECS/GEM C# SDK 快速创建一个满足SECS/GEM通信要求的应用程序,只需简单3步完成。 第一步:创建C# .NET程序 示例使用Visual Studio 2010,使用者可以选择更高级版本 Visual Studio 第二步:添加DLL库引用&am…

Proteus仿真--基于ADC0808设计的调温报警器

本文介绍基于ADC0808实现的调温报警器设计(完整仿真源文件及代码见文末链接) 温度调节使用滑动变阻器模拟实现,ADC0808采集信号并输出在LCD上面显示,报警系统是LED灯和蜂鸣器实现声光电报警 仿真图如下 仿真运行视频 Proteus仿真…

001 LLM大模型之Transformer 模型

参考《大规模语言模型--从理论到实践》 目录 一、综述 二、Transformer 模型 三、 嵌入表示层(位置编码代码) 一、综述 语言模型目标是建模自然语言的概率分布,在自然语言处理研究中具有重要的作用,是自然 语言处理基础任务之一…

带大家做一个,易上手的家常土豆丝

搞两个土豆 就能做一盘 然后 去皮 切片 然后再将片切条 然后 绿皮辣椒切片 放一些干辣椒 一些花椒 四五个大料 准备好 然后 起锅烧油 下土豆 翻炒两下 然后放小半碗水 让它煮一下 毕竟土豆不是很好熟的东西 看水少了大半时 放入 干辣椒 绿皮辣椒 大料 花椒 然后 倒入 一滴…

前端知识(九)------------JavaScript底层知识

1.事件循环机制 在实际的编码过程中小伙伴们不知道有没有遇到过这样的问题,我们都知道js是单线程的。而且是一门解释型语言。那么正常来讲执行代码的顺序就是自上而下一句一句执行对吧 但是有的时候我们发现返回的结果并不是自上而下执行的。我们先写了一段代码 …

课堂练习3.3:进程的调度

3-6 课堂练习3.3:进程的调度 在内存中一般存放着数目远大于计算机 CPU 个数的进程,进程调度的作用是选择合适的进程来使用CPU,进程调度器对系统性能有重要影响。本实训分析Linux 0.11的进程调度算法,该操作系统采用了一种时间片与…

redis主从复制【面试必看】

在分布式系统中,希望使用多个服务器来部署redis,存在以下几种redis的部署方式 主从模式主从哨兵集群模式 主从模式 在若干个redis节点中,有的是主节点,有的是从节点 假设有三个物理服务器(称为是三个节点&#xff…

MongoDB中的$type操作符和limit与skip方法

本文主要介绍MongoDB中的$type操作符和limit与skip方法。 目录 MongoDB的$type操作符MongoDB的limit方法MongoDB的skip方法 MongoDB的$type操作符 MongoDB中的$type操作符用于检查一个字段的类型是否与指定的类型相匹配。它可以用于查询和投影操作。 $type操作符可以与以下数…

2.2 网络多线程(私聊、群发、发送文件、推送新闻、离线留言)

文章目录 一、私聊1.1 分析1.2 客户端1.2.1 MessageClientService 私聊类1.2.2 ClientConnectServerThread 线程类 1.3 服务端1.3.1 ServerConnectClientThread 线程类 1.4功能演示 二、群发消息2.1 分析2.2 客户端2.2.1 MessageClientService类2.2.2 ClientConnectServerThrea…

★102. 二叉树的层序遍历

102. 二叉树的层序遍历 很巧妙的,又学习了一种层次遍历的方法,就是说根据当前的队列的长度去遍历,遍历的当前队列的长度就是该层次的节点个数。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tr…

基于JavaWeb+SSM+Vue童装商城小程序系统的设计和实现

基于JavaWebSSMVue童装商城小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目 录 摘 要 III Abstract 1 1 系统概述 2 1.1 概述 3 1.2课题意义 4 1.3 主要内容 5…

GoldWave注册机 最新中文汉化破解版-安装使用教程

GoldWave是一个功能强大的数字音乐编辑器,是一个集声音编辑、播放、录制和转换的音频工具。它还可以对音频内容进行转换格式等处理。它体积小巧,功能却无比强大,支持许多格式的音频文件,包括WAV、OGG、VOC、 IFF、AIFF、 AIFC、AU…

Temu卖家如何获取流量?Temu新手卖家流量来源哪里?——站斧浏览器

流量对于每个平台来说都是很重要的,那么Temu卖家如何获取流量?流量来源哪里? Temu卖家如何获取流量? 1、优化产品标题和描述:在Temu平台上,买家通常通过搜索关键词来寻找他们感兴趣的产品。因此&#xff…

curl 18 HTTP/2 stream

cd /Users/haijunyan/Desktop/CustomKit/KeepThreadAlive/KeepThreadAlive //Podfile所在文件夹 git config --global https.postBuffer 10485760000 git config --global http.postBuffer 10485760000 pod install https://blog.csdn.net/weixin_41872403/article/details/86…

(七)Python 命令模式

文章目录 1 命令模式简介2 命令模式的特点和目的2.1 命令模式通常使用以下术语:2.1.1 命令模式的UML类图 2.2 命令模式的主要目的如下2.3 命令模式可用于以下各种情景: 3 命令模式python代码示例4 命令模式的优点和缺点4.1 优点4.2 缺点 1 命令模式简介 正如我们在上一章中所看…

【Com通信】Com模块详细介绍

目录 前言 1. Com模块功能介绍 2.关键概念理解 3.功能详细设计 3.1 Introduction 3.2 General Functionality 3.2.1 AUTOSAR COM basis 3.2.2 Signal Values 3.2.3 Endianness Conversion and Sign Extension 3.2.4 Filtering 3.2.5 Signal Gateway 3.3 Normal Ope…

Jenkins入门手册

目录 第一章、Jenkins是什么? 1、Jenkins的由来 1.1 、Jenkins 的目标 第二章、Jenkins安装与配置 2、Jenkins 安装 3、Jenkins 配置 3.1 系统管理 3.1.1 、提示信息 3.1.1.1 、Utf-8 编码 3.1.1.2 、新的版本 3.1.1.3、安全设置 3.1.2、系统设置 3…

Go语言深度优先搜索(DFS)

Go 语言代码段实现了深度优先搜索(DFS)算法,该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结: 深度优先搜索函数 (DFS): 接收图的邻接表 (map[int][]int)、访问记录 (map[int]bool) 和当前节点作为参数。将当前…