经典论文ReAct精读 原创

发布于 2024-9-18 13:56
浏览
0收藏

人类智能的一个独特特征是能够将面向任务的行为与语言推理(或称作内心独白)无缝结合。理论上,这被认为是人类认知中的重要一环,能够实现自我调节或策略化并维持工作记忆。

以在厨房烹饪一道菜为例,在任何两个具体行为之间,我们可能会:(1)用语言进行推理以跟踪进度(例如“现在一切都切好了,我应该把水壶里的水加热”);(2)处理异常情况或根据情况调整计划(例如“我没有盐,所以让我用酱油和胡椒代替”);(3)意识到何时需要外部信息(例如“我该如何准备面团?让我在网上搜索一下”)。我们还可能采取行动(例如打开食谱书阅读食谱,打开冰箱,检查食材)以支持推理并回答问题(例如“我现在能做什么菜?”)。这种“行动”与“推理”之间的紧密协同使得人类能够快速学习新任务并执行稳健的决策或推理,即使在之前未见过的情境下或面对信息不确定性时也能如此。

近期的研究结果暗示了在自主系统中结合语言推理与互动决策的可能性。

一方面,适当提示的大语言模型(Large Language Models, LLMs)已经在算术、常识和符号推理等任务中展示了通过问题推导答案的多步骤推理能力。然而,这种 “链条式思考”推理是一个静态的黑箱,因为模型使用自己的内部表示来生成思考,并没有与现实世界相结合,这限制了它进行反应性推理或更新知识的能力。这可能导致诸如事实虚构和推理过程中的错误传播等问题。

另一方面,近期的研究探索了在交互环境中使用预训练的语言模型进行规划和行动,重点是利用语言先验预测动作。这些方法通常将多模态观察转换为文本,使用语言模型生成特定领域的动作或计划,然后使用控制器来选择或执行它们。然而,它们并没有使用语言模型来抽象地推理高级目标或维持工作记忆以支持行动

在超越这种简单的具身任务之外,还没有研究探讨如何在一般任务解决中将推理和行动以协同方式结合,以及这种结合是否可以与单独推理或行动相比带来系统性的好处。

基于以上考虑,姚顺雨等人提出了ReAct通用框架,用于结合大语言模型进行推理和行动,以解决多样化的语言推理和决策任务,系统示意图如下图所示。

ReAct提示大语言模型以交错的方式生成与任务相关的语言推理追踪和行动,这使得模型能够进行:(1)推理以行动:动态推理以创建、维护和调整行动的高级计划;(2)行动以推理:与外部环境(例如维基百科)互动,将额外信息纳入推理。

经典论文ReAct精读-AI.x社区

图 1 ReAct示例

1. 问题描述

考虑一个智能体(Agent)与环境进行交互,智能体的目标是解决某个特定任务。在时间步,智能体从环境接收到观测,并按照某种策略采取行动,其中表示智能体进行决策所需要的上下文。

当映射是隐式形式且需要大量计算时,学习策略是比较困难的。例如,图1(1c)中显示的智能体无法生成正确的最终行动(Act4)来完成问答(QA)任务,因为它需要对轨迹上下文(问题,Act1-3,Obs1-3)进行复杂推理。同样,图1(2a)中显示的代理无法从上下文中理解水槽1中没有胡椒瓶1,因此持续产生幻觉的行动。

2. ReAct基本想法

ReAct的想法很简单:ReAct将智能体的行动空间扩展到,其中表示语言空间。语言空间中的一个行动称为思考或推理追踪,不会影响外部环境,因此不会产生观察反馈。相反,一个思考旨在通过推理当前上下文来组合有用的信息,并更新上下文以支持未来的推理或行动。如图1所示,可能有各种类型的有用思考,例如分解任务目标并创建行动计划(2b,Act1;1d,Thought 1),注入与任务解决相关的常识知识(2b,Act1),从观察中提取重要部分(1d,Thought2,4),跟踪进度并转换行动计划(2b,Act8),处理异常并调整行动计划(1d,Thought3)等等。

然而,由于语言空间是无限的,在这个扩展的行动空间中学习是困难的,需要强大的语言先验。为此,可以使用大语言模型进行处理。在论文中,作者使用一个冻结的大语言模型PaLM-540B,通过少量示例的上下文提示来生成特定领域的行动和自由形式的语言思考以解决任务(图1 (1d),(2b))。每个上下文示例都是人类解决任务实例的行动、思考和环境观察的轨迹。对于推理至关重要的任务(图1(1)),作者交替生成思考和行动,使得任务解决轨迹包含多个思考-行动-观察步骤。相比之下,对于可能涉及大量行动的决策任务(图1(2)),思考只需要在轨迹中最相关的位置稀疏出现。因此,ReAct让语言模型自行决定思考和行动的异步发生。

由于决策和推理能力被集成到一个大语言模型中,ReAct具有几个独特的特征:

  • (1)直观且易于设计:设计ReAct提示非常直接,人类注释者只需在采取的行动之上用语言记录下他们的思考。本文没有使用特设的格式选择、思考设计或示例选择。
  • (2)通用且灵活:由于灵活的思考空间和思考-行动发生格式,ReAct适用于具有不同行动空间和推理需求的多样化任务,包括但不限于问答、事实验证、文本游戏和网页导航等任务。
  • (3)高性能且稳健:ReAct在仅从一到六个上下文示例中学习时,对新任务实例表现出强大的泛化能力,一致地优于不同领域仅含推理或行动的基线。
  • (4)与人类一致且可控:ReAct可以提供一个可解释的顺序决策和推理过程,人类可以轻松检查推理和事实的正确性。

3. 知识密集型推理任务实践

以下以一个知识密集型推理任务具体介绍ReAct如何工作。

3.1 基本设置

问题领域 作者考虑了两个颇具挑战性的知识检索和推理数据集:(1)HotPotQA,一个需要基于两个或更多维基百科段落进行推理的多跳问答基准;(2)FEVER,一个事实验证基准,每个主张根据是否存在维基百科段落来验证该主张,被标注为支持、反驳或信息不足。实验时,模型只接收问题/主张作为输入,没有支持段落的访问权限,并且必须依赖内部知识或通过与外部环境的互动来检索知识以支持推理。

行动空间 作者设计了一个简单的维基百科网络API,包含三种类型的行动以支持交互式信息检索:(1)search[实体],如果对应的实体维基页面存在,则返回该页面的前5个句子,否则从维基百科搜索引擎建议前5个相似的实体;(2)lookup[字符串],这将返回包含该字符串的页面中的下一句话,模拟浏览器上的Ctrl+F功能。(3)finish[答案],这将用答案完成当前任务。注意到,这个行动空间大多数情况下只能根据精确的段落名检索一小部分内容,这比最先进的词汇或神经检索器要弱得多。这样做的目的是模拟人类如何与维基百科互动,并迫使模型通过显式的语言推理来检索信息。

3.2 方法

ReAct提示指令 对于HotpotQA和FEVER,作者从训练集中随机选择了6个和3个示例,并手动编写了符合ReAct格式的轨迹,用作提示中的少量示例。类似于图1(d),每个轨迹包含多个思考-行动-观察步骤。具体来说,作者使用了以下几种思考的组合:分解问题(“我需要搜索x,找到y,然后找到z”),从维基百科观察中提取信息(“x始于1844年”,“段落中没有提到x”),执行常识推理(“x不是y,所以z必须是...”)或算术推理(“1844 < 1989”),指导搜索重构(“也许我可以搜索/查找x”),以及合成最终答案(“...所以答案是x”)。

基线 作者系统地消除了ReAct轨迹中的部分内容,以构建多个基线测试的提示(格式如图1(1a-1c)所示):(a) 标准提示(Standard),移除了ReAct轨迹中的所有思考、行动和观察。(b) 思考链提示(CoT),移除了行动和观察,作为一个仅推理的基线。作者还构建了一个自我一致性基线(CoT-SC),通过在推理过程中采样21个CoT轨迹,解码温度为0.7,并采用多数答案。(c) 仅行动提示(Act),移除了ReAct轨迹中的思考,松散地模拟了WebGPT与互联网互动以回答问题的方式,尽管它操作的是不同的任务和行动空间,并且使用模仿和强化学习而不是提示。

结合内部和外部知识 ReAct展示的问题解决过程更加事实化和具体,而CoT在构建推理结构方面更加准确,但容易受到虚构事实或思考的影响。因此,作者提议结合ReAct和CoT-SC,并根据以下启发式规则让模型决定何时切换到另一种方法:A) ReAct  CoT-SC:当ReAct在给定步骤内未能返回答案时,回退到CoT-SC。作者分别为HotpotQA和FEVER设置了7步和5步。B) CoT-SC  ReAct:当n个CoT-SC样本中的多数答案出现少于n/2次时(即内部知识可能不支持任务自信地完成),回退到ReAct。

微调 由于手动标注大规模推理轨迹和行动的挑战,作者考虑了一种引导式方法,使用ReAct(以及其他基线)生成的3,000个正确答案的轨迹来微调更小的语言模型(PaLM-8/62B),以解码基于输入问题/主张的条件轨迹(所有思考、行动、观察)。

经典论文ReAct精读-AI.x社区

表1 PaLM-540B的结果

3.3 实验结果

ReAct在Act上持续表现更好 表1显示了使用PaLM540B作为基础模型,不同提示方法在HotpotQA和Fever上的结果。注意到,ReAct在这两个任务上都优于Act,这证明了推理指导行动的价值,尤其是在合成最终答案方面,如图1 (1c-d)所示。微调结果3也确认了推理轨迹对于更明智的行动的益处。

经典论文ReAct精读-AI.x社区

图2 根据使用的CoT-SC样本数量,PaLM-540B的提示结果。

ReAct vs. CoT 另一方面,ReAct在Fever上优于CoT(60.9 vs. 56.3),而在HotpotQA上略逊于CoT(27.4 vs. 29.4)。Fever的主张对于支持/反驳可能只略有不同,因此通过行动检索准确和最新的知识至关重要。为了更好地理解ReAct和CoT在HotpotQA上的行为差异,作者从ReAct和CoT中分别随机采样了50个具有正确和错误答案的轨迹(总共200个示例),并在表2中手动标记了它们的成功和失败模式。一些关键观察结果如下:

  • A) 对于CoT,虚构是一个严重的问题,导致其成功模式下的假阳性率远高于ReAct(14% vs. 6%),并且是其主要失败模式(56%)。相比之下,ReAct的问题解决轨迹更加扎实、事实驱动和可信,这是由于它访问了一个外部知识库。
  • B) 尽管交错推理、行动和观察步骤提高了ReAct的扎实性和可信度,但这种结构约束也减少了它在制定推理步骤方面的灵活性,导致其推理错误率高于CoT。注意到,ReAct有一个特定的错误模式,模型会重复生成之前的思考和行动,作者将这种模式归类为“推理错误”,因为模型无法推理出正确的下一步行动并跳出循环4。
  • C) 对于ReAct,通过搜索成功检索信息知识至关重要。非信息性搜索,占错误案例的23%,使模型推理偏离轨道,并使其难以恢复和重新制定思想。这可能是事实性和灵活性之间的一种预期权衡。

经典论文ReAct精读-AI.x社区

表2  在HotpotQA上,ReAct和CoT的成功和失败模式类型,以及人类研究随机选择的示例中它们的百分比。

ReAct + CoT-SC在提示LLM上表现最佳 表1还显示,在HotpotQA和Fever上最佳的提示方法分别是ReAct  CoT-SC和CoT-SC  ReAct。此外,图2显示了不同方法随着使用CoT-SC样本数量的变化表现。虽然两种ReAct + CoT-SC方法在各自的任务上都具有优势,但它们都显著且一致地优于使用不同数量样本的CoT-SC,仅使用3-5个样本就达到了CoT-SC的表现。这些结果表明,适当结合模型的内部知识和外部知识对于推理任务的价值。

经典论文ReAct精读-AI.x社区

图3 在HotPotQA上,使用ReAct和基线进行提示和微调的扩展结果

ReAct在微调中表现最佳 图3显示了在HotpotQA上对四种方法(标准、CoT、Act、ReAct)进行提示/微调的扩展效果。使用PaLM-8/62B,提示ReAct在四种方法中表现最差,这是由于从上下文示例中学习推理和行动的困难。然而,当仅使用3,000个示例进行微调时,ReAct成为四种方法中表现最佳的方法,PaLM-8B微调的ReAct优于所有PaLM-62B提示方法,而PaLM-62B微调的ReAct优于所有540B提示方法。与此相反,微调标准或CoT远不如微调ReAct或Act对于PaLM8/62B,因为前者本质上是在教模型记住(可能虚构的)知识事实,而后者是在教模型如何推理和行动以从维基百科获取信息,这是对知识推理更可推广的技能。由于所有提示方法与特定领域的最先进方法(表1)仍有很大差距,作者认为使用更多人工编写的数据进行微调可能是释放ReAct力量更好的方式。

参考论文:https://arxiv.org/abs/2210.03629


本文转载自公众号AIGC最前线   

原文链接:​​https://mp.weixin.qq.com/s/wAcgHfFWu8ld7ZQoLYUSjg​​​

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
收藏
回复
举报
回复
相关推荐