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相距甚远。
Paper | https://arxiv.org/pdf/2210.03629.pdf |
---|---|
Code | https://github.com/ysymyth/ReAct |
From | ICLR 2023 |
ABSTRACT
LLMs在语言理解和交互决策上表现出令人印象深刻的性能,其推理能力也作为了一个单独研究的主题。本文探索使用交互的方式生成推理任务特定动作,使二者具有更大的协同性。推理帮助模型归纳、跟踪和更新计划以及处理异常,动作则允许与外部接口相连并收集额外的信息。本文的ReAct方法可以应用于多语言决策任务,在最新的基线上证明了其有效性、人类可解释性和可信度。具体来说,在问答和事实验证方面,ReAct与简单的维基百科API交互,生成了类似人类解决任务的轨迹,克服了CoT中广泛存在的幻觉和错误累积问题。此外在两个交互式决策benchmark上,ReAct在只有一两个上下文示例的情况下优于模仿学习和强化学习的方法。
1 INTRODUCTION
人类智能的一个特点是可以做到言行一致,在对自我调节、制定策略以及维护工作记忆有着重要作用。最近的工作暗示了在自动系统中,语言推理和交互式决策的结合是可能的。首先,LLM展现出其强大的推理能力,比如CoT推理,但是其CoT能力只能对自身使用,可以理解为一个黑盒,这种无法与外界交互的方式会带来幻觉和错误累积的问题。其次,最近有工作利用预训练的语言模型在交互式环境中进行规划和行动,虽然加入了多模态的信息以文本形式引入,但是它们只能根据当前的状态解决现有的问题,无法解决更抽象的高级目标(需要多步推理交互式执行)。目前还没有研究将推理和行动结合起来解决一般的问题,是否能够带来系统性的提升还有待商榷。
本文提出ReAct,一个将推理和动作与语言模型相结合的通用范式,用于解决不同语言推理和决策任务。ReAct提示LLMs以交错的方式生成与任务相关的语言推理轨迹和动作,让模型动态推理去创建、维护和调整行动的计划,同时也与外部环境交互来引入外部的知识。
作者在四个不同的benchmarks上对ReAct进行了评估,包括问答(HotPotQA)、事实验证(Fever)、基于文本的游戏(ALFWorld)以及网页浏览(WebShop)。对于前两个数据集,ReAct+CoT方法的效果是最好的,在后两个数据集上,两次甚至一次ReAct提示就能将成功率分别提高34%和10%。此外,作者还展示了相对于仅采用动作的优势,证明了稀疏多功能推理在决策中的重要性。推理和动作的结合提高了模型的可解释性和可信度,与人类的行为对齐。
总的来说,本文的贡献如下:
- 提出ReAct,一个新颖的基于prompt的范式,在语言模型中协同推理和动作来解决一般问题。
- 在多个benchmarks上验证ReAct的性能与优势。
- 系统的消融分析,了解推理任务中动作以及交互任务中推理的重要性。
- ReAct在进一步微调下可以提升性能。与强化学习结合可以进一步释放LLM的潜力。
2 REACT: SYNERGIZING REASONING + ACTING
考虑到智能体与环境交互以解决问题的一般场景,在时间步
t
t
t时,一个智能体获得当前环境的观察
o
t
∈
O
o_t \in \mathcal{O}
ot∈O,然后遵循策略
π
(
a
t
∣
c
t
)
\pi (a_t|c_t)
π(at∣ct)选择动作
a
t
∈
A
a_t \in \mathcal{A}
at∈A,其中
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,...,ot−1,at−1,ot),即历史观察动作上下文。当历史上下文与动作的映射很不清晰时,学习一个策略是具有挑战的。
ReAct的思想很简单,它将智能体的动作空间增强为
A
^
=
A
∪
L
\mathcal{\hat{A}}=\mathcal{A} \cup \mathcal{L}
A^=A∪L,其中
L
\mathcal{L}
L是语言空间。动作
a
^
t
∈
L
\hat{a}_t \in \mathcal{L}
a^t∈L在语言空间中,称之为思想或者推理痕迹,它不会影响外部环境,通过上下文信息进行推理来支持接下来的动作。
然而,语言空间是无限的,在这个空间中学习是困难的,需要很强的先验。而LLM只需要借助少量的示例先验进行提示,就可以生成解决任务的语言思维。对于推理重要的任务,ReAct交替产生思维和动作,这样解决问题的轨迹就由多步思想-动作-观察步骤组成。
由于决策和推理的能力已经集成到LLM中,ReAct具有一些独特的功能:
- 符合直觉,易于设计。
- 通用且灵活。ReAct适用于具有不同动作空间和推理需求的多种任务。
- 高性能且稳健。对新任务展现出强大的泛化能力。
- 和人类对齐且可控。ReAct决策和推理过程具有可解释性,并且人类可以通过编辑思想来控制或纠正智能体的行为。
3 KNOWLEDGE-INTENSIVE REASONING TASKS
对于推理任务,ReAct通过与维基百科API交互,能够检索信息支持推理。
3.1 SETUP
作者在HotPotQA和FEVER两个数据集上来验证ReAct的知识检索与推理能力。前者是多跳问答benchmark,需要对两个或多个维基百科片段进行推理,后者是事实验证benchmark,每个声明都基于维基百科中存在的片段而标注为支持、反对或者信息不足。ReAct将只接收问题和声明,依靠自己的内部知识和外部API交互来回答。
在动作空间上,作者设计了一个简单的维基百科API,它具有三种类型的动作来支持交互式信息的检索:
- search[entity]。返回相应实体前五个句子或者前五个近似的实体。
- lookup[string]。检索出包含特定string的下一个句子。
- finish[answer]。完成任务给出答案。模拟人类的检索过程。
3.2 METHODS
作者从训练集中随机选择6个和3个示例,并手动编写ReAct格式的轨迹用于小样本的示例。类似于图1中的1(d),每个轨迹都由多个思想-动作-观察步骤组成。
在baseline部分,作者系统地消融了ReAct轨迹以构建多个baseline的prompt。
- 标准prompt。移除了轨迹中的思想,动作和观察。
- CoT。移除了动作和观察,只做推理。其中CoT-SC(多CoT投票)能持续提高CoT的性能。
- Acting-only prompt。移除了思想的过程。
在实验部分,作者观察到ReAct解决任务的过程更符合事实,CoT在推理逻辑上更准确,但容易受到幻觉的影响。因此,作者将ReAct和CoT-SC结合在一起,让模型根据以下情形切换方法:
- ReAct未能在限定步骤给出答案,采用CoT-SC。
- 当n个CoT-SC样本中多数答案少于一半,采用ReAct。
此外,由于手动构建推理路径具有一定的挑战,因此作者采用3000个有正确答案的轨迹来微调PALM-8/62B,用于轨迹的生成。
3.3 RESULTS AND OBSERVATIONS
上图显示在两个任务上,ReAct都要优于Act,这证明了推理对指导动作的价值。在HotPotQA数据集上,ReAct要略差于CoT,但是在Fever上要优于CoT。为了准确理解二者在HotPotQA上的差异,作者对结果进行了观察,得到如下的分析:
- CoT中幻觉问题是个严重的问题。相比之下,ReAct解决问题的轨迹更值得
- 虽然推理和行动以及观察步骤的交错提高了ReAct的可信度,但是约束了其灵活性,导致其推理错误率高。
- 对于ReAct,通过搜索成功检索出知识非常重要。
CoT-SC+ReAct的范式在两个数据集上都得到了更好的结果,这表明正确结合模型内在知识和外在知识对模型推理具有显著价值。
当对小模型进行微调后,8B的PaLM优于62Bprompt的PaLM,62B的PaLM优于540B的PaLM,此外,Standard和CoT与ReAct的差距拉大,原因是前者本质上是学习可能是错误的知识事实,而后者是教会模型如何推理和行动来访问来自外部的知识。当然,现有的方法与特定领域的SoTA相距甚远,作者认为精心微调会填平gap。
4 DECISION MAKING TASKS
作者还在语言交互决策任务ALFWorld和WebShop上测试了ReAct的能力。前者是一款基于合成文本的游戏,Agent需要通过文本操作与模拟家庭进行交互和导航,从而实现高级目标(6中类型任务)。特别的,ALFWorld有一个内置挑战是你需要对常见家具的位置有一个概念。为了提示ReAct,对于每种任务类型,作者从训练集中随机标注了三个轨迹,每个轨迹都包括:
- 分解目标。
- 跟踪子目标完成情况。
- 确定下一个子目标。
- 通过常识推断下一个目标的位置以及如何操作。
作者在特定任务设置下的134个未见的任务上进行评估,为了鲁棒性,作者在人工标注的基础上为每个任务构建了6个prompt。baseline采用BUTLER,一种模仿学习智能体,针对每种任务进行了训练。
WebShop是一个在线购物环境网站,拥有118万个真实世界的产品和12k人工指令。它包含多种结构化和非结构化文本,需要智能体根据用户指令购买商品。该任务通过500个测试指令的平均得分和成功率来评估。ReAct的提示包括带有推理的搜索,选择产品,选项和购买操作。作者将ReAct与模仿学习方法以及模仿+强化学习方法进行对比。
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都会被填平。