ReAct: Synergizing Reasoning and Acting in Language Models

2210.03629v3

Abstract

LLM 在语言理解和决策任务中表现出色, 但在推理和行动方面的能力很少被联系起来研究. 本文探讨了如何让 LLM 交错生成推理轨迹和针对任务的特定行动, 从而增强两者之间的协同作用: 推理轨迹帮助模型生成, 追踪并更新行动计划, 处理异常情况, 而特定行动允许模型与外部来源 (知识库或环境) 进行接口交互并获取额外信息. 作者将该方法命名为 ReAct (Reason+Act), 并将其应用于多种语言和决策任务, 展示了它在先进的基准上的有效性和更高的人类可读性与可靠性. ReAct 在问答和事实验证中, 通过和简单的维基百科 API 交互, 在思维链 (CoT) 中克服了普遍存在的幻觉和错误传播问题, 生成了类似人类的解决任务轨迹, 比基准更具可解释性, 不带推理痕迹. 此外, 在两个交互式决策基准测试中, ReAct 的成功率显著超过了模仿和强化学习方法, 只需在 prompt 中给出一两个上下文的例子.

Introduction

  • Background: 人类能够将任务导向的动作与语言推理无缝结合起来, 这被认为在人类认知中起着重要作用. 人类可以在具体动作之间用语言推理跟踪进度 (「菜切好了, 现在我要烧水」), 处理异常或根据情况调整计划 (「酱油用完了, 我用可乐代替吧」), 并意识到需要外部信息 (「我不会准备面团, 我要去小红书看看」). 人类还可以采取行动以支持推理并回答问题 (打开冰箱看看现在能做什么菜). 这种行动与推理之间的紧密协同允许人类快速学习新任务, 在未见过的情况下做出稳健的决策和推理, 即使面对的信息不确定也是如此.
  • Motivation: 最近的研究暗示了在智能体中结合语言推理与行动的可能性. 一方面, LLM 已经可以在有适当 prompt 的情况下执行多步推理轨迹以推导出算数, 常识, 符号推理任务答案. 然而, 这种思维链是一个静态的黑箱, 模型使用内在表示而非基于外部世界生成想法, 这限制了模型反应地推理和更新知识的能力, 也可能导致幻觉和推理过程中的错误传播. 另一方面, 近来的研究探索了使用预训练语言模型在交互环境中进行规划和行动, 重点关注利用语言先验预测行动. 这些方法通常将多模态观察转换为文本, 使用语言模型生成行动或计划, 再利用控制器选择或执行行动. 然而, 这些方法没有利用语言模型进行关于高级目标的抽象推理, 也没有维护工作记忆以支撑行动. 目前几乎没有研究探讨如何将推理和行动协同在一起, 以及这种协同的系统性优势.
  • Contributions: 本文提出了 ReAct, 一种将推理和行动与语言模型结合在一起的一般范式, 以解决多样化的语言推理和决策任务. ReAct 促使语言模型交替生成与任务相关的语言推理轨迹和行动, 使得模型能够进行动态推理, 以创建, 维护和调整高级计划, 同时与外部环境互动, 将额外信息融入推理. 评估中, ReAct 表现出色, 整体表现最好的方法是结合 CoT 和 ReAct. 总的来说, 本文贡献如下:
    • 引入了 ReAct, 一种新颖的基于 prompt 的范式, 用于在语言模型中协同推理和行动, 以解决一般任务.
    • 在多种基准测试中进行了广泛实验, 展示了在学习示例较少时, ReAct 的优势.
    • 进行了系统实验与分析, 以说明在推理任务中行动的重要性, 以及行动任务中推理的重要性.
    • 分析了在 prompt 设置下 ReAct 的局限性, 并进行了初步的微调实验, 展示了 ReAct 通过增加训练数据进行优化的潜力. 将 ReAct 扩展到更多任务的训练和操作, 并将其与强化学习等互补范式结合, 将进一步释放 LLM 的潜力.

ReAct: 结合推理与行动

考虑智能体与远景交互的一般情况, 在时间步骤 tt, 智能体从环境观察到 otOo_t \in \mathcal{O}, 并依据策略 π(atct)\pi\left (a_{t} \mid c_{t}\right), 在背景 ct=(o1,a1,,ot1,at1,ot)c_{t} = \left ( o_{1}, a_{1}, \cdots, o_{t-1}, a_{t-1}, o_{t} \right) 下采取行动 atAa_t \in \mathcal{A}. 在 ctatc_{t} \mapsto a_{t} 并不明显且需要大量计算时, 学习到一条策略是有挑战性的.

ReAct 的想法很简单: 将智能体的动作空间增加到 A^=AL\hat{\mathcal{A}} = \mathcal{A} \cup \mathcal{L}, 其中 L\mathcal{L} 是语言空间, 其中的动作称为思想或推理痕迹, 不影响外部环境, 不导致观察反馈, 而是旨在通过对当前背景 cc 进行推理而得到有用的信息, 并更新背景以支持未来的推理或行动.

然而, 由于语言空间 L\mathcal{L} 是无限的, 在这个增强的动作空间中学习很困难, 且对语言先验知识要求很高. 在本文中, 作者主要关注使用 PaLM-540B, 通过少量样本的背景示例 prompt, 生成特定领域的动作和自由形式的语言思维以解决任务. 对推理很重要的任务, 交替生成思维和动作, 使任务解决轨迹由多个思维-动作-观察步骤组成; 对可能涉及大量行动的决策任务, 思维只需要在相关性较高的地方出现即可, 因此作者让 LLM 自行决定推理和行动的出现比例.

由于决策和推理能力被集成到 LLM 中, ReAct 具有以下特点:

  • 直观且易于设计, 人类标注时只需在行动上写下想法
  • 通用且灵活, 适用于具有不同行动空间和推理需求的各种任务
  • 性能优异且稳健
  • 人类对齐且可控

知识密集型推理任务

首先从知识密集型推理任务开始, 如多步骤问答和事实验证. 通过与维基百科 API 交互, ReAct 能够检索信息以支持推理, 同时使用推理来定位下一个要检索的内容, 展示了推理和行动的协同作用.

设置

作者考虑了两个测试知识获取和推理能力的数据集: HotpotQA 和 FEVER. 作者设计了一个简单的维基百科 API, 包含三种类型的动作以支持交互式信息检索: search, lookup, finish, 目的是模拟人类与维基百科的互动, 并迫使模型通过语言中的显式推理来检索.

方法

作者从数据集中随机选取几个示例, 并手动编写 ReAct 格式的思维轨迹, 作为 prompt 中的少样本示例, 每个轨迹由多个思维-行动-观察步骤组成. 作者为不同的基准编写了不同的 prompt, 分别是标准 prompt, CoT prompt, 仅行动 prompt.

ReAct 展示的问题解决过程更加贴近事实而稳固, CoT 在构建推理结构方面表现更佳, 但易受幻觉困扰. 因此, 作者提出将 ReAct 和 CoT 结合, 并让模型根据如下启发式规则决定何时切换到另一种方法: 当 ReAct 在给定步骤内无法返回答案时, 退回到 CoT, 当 n 个 CoT 样本给出的多数答案出现次数少于 n/2 时, 退回到 ReAct.

结果与观察

ReAct 表现始终优于 Act, 在 FEVER 上优于 CoT, 而在 HotpotQA 上略逊于 CoT. 对结果的观察结论如下:

  • 幻觉是 CoT 的严重问题, 在成功情况下其假阳性率比 ReAct 高得多, 且导致了其多数失败模式. 相比之下, ReAct 的解决问题轨迹更贴近事实.
  • 虽然交织推理, 行动和观察提高了 ReAct 的基于事实性和可信度, 这种结构约束也降低了其推理时的灵活性, 导致其错误率高于 CoT. 注意到 ReAct 存在一种常见的错误, 模型会反复生成先前的思考和行动, 无法跳出循环.
  • 对 ReAct 来说, 通过搜索成功检索到信息性知识非常重要. 非信息性搜索会阻碍模型推理, 使其难以恢复和重新构建思维.

ReAct+CoT 的表现最佳, 在所有样本数量下都显著优于 CoT, 这表明了在推理任务中正确结合内部知识和外部知识的价值.

ReAct 在微调方面表现最佳.

决策任务

作者还测试了 ReAct 在两个基于语言的交互式决策任务 ALFWorld 和 WebShop 上的表现, 这两个任务都包含复杂的环境, 需要代理在长范围内行动, 且奖励稀疏, 因此要求智能体进行推理以有效地行动和探索.

测试结果中, ReAct 在 ALFWorld 和 WebShop 上均优于 Act.

ReAct 是第一个在闭环系统中将 LLM 应用于交互环境并结合推理和行动的演示, 以前最接近的工作是 Inner Monologue (IM), 但其思考过程仅限于对环境状态的观察和为满足目标需要智能体需要完成的任务. 相比之下, ReAct 用于决策的推理轨迹灵活且稀疏, 允许为不同的任务诱导出多种推理类型. 实验表明 ReAct 显著优于 IM, 这表示了内部推理对外部反馈简单反应的重要性.

相关工作

推理 LLM 最著名的工作是 CoT, 此后有多项后续工作, 包括解决复杂任务的 prompt, 零样本 CoT, 基于自洽性的推理, CoT 公式化和结构, 更复杂的推理架构等.

决策用 LLM 正逐渐流行, 尤其是在交互式环境中. 相比之下, ReAct 可以在更低的成本下学习策略.

LLM 也被更多地应用于交互和具身环境中进行规划和决策. 在 LLM 的帮助下, 语言作为一种基本的认知机制将在交互和决策中发挥关键作用, LLM 的进步也促进了通用智能体的发展.

结论

本文提出了 ReAct, 一种简单有效的方法, 用于在 LLM 中协同推理和行动. 实验表明 ReAct 有着优异的性能和可解释的决策轨迹. 尽管方法简单, 但具有大动作空间的复杂任务需要更多的演示以学习, 但这很容易超出上下文长度限制. 本文在 HotpotQA 上探索了微调方法, 结果令人鼓舞, 但进一步提高表现将离不开更多高质量人类批注. 通过多任务训练 ReAct 并结合强化学习的互补范式, 可能会产生更强大的智能体, 进一步释放 LLM 的潜力.