AB
AiBoss
Wiki

什么是 ReAct(ReAct)?一种让语言模型交替推理与行动的方法

ReAct 是 arXiv 论文《ReAct: Synergizing Reasoning and Acting in Language Models》提出的一种提示与交互方法,让大语言模型以交错的方式同时生成推理轨迹与任务动作。论文报告称,在问答与事实验证任务上,它通过与简单的 Wikipedia API 交互缓解了思维链推理中的幻觉与错误传播;在两个交互式决策基准上,其成功率高于模仿学习与强化学习方法。

ReAct(ReAct)是论文《ReAct: Synergizing Reasoning and Acting in Language Models》提出的一种方法,其核心是让大语言模型(Large Language Model,LLM)以交错(interleaved)的方式同时生成推理轨迹(reasoning traces)与任务相关的动作(task-specific actions)。它要解决的问题是:在此之前,语言模型的推理能力(例如思维链提示,chain-of-thought prompting)与行动能力(例如动作计划生成,action plan generation)大多被当作两个彼此独立的方向来研究,模型要么只“想”不“做”,要么只“做”不想,缺少把两者接起来的机制。

为什么重要

论文在摘要中指出,大语言模型在语言理解与交互式决策等任务上已经展现出可观的能力,但对其推理能力与行动能力的研究此前主要是分开进行的。这种分离带来两类现实困难。

第一类是纯推理路线的困难。以思维链提示为代表的推理方法让模型在给出答案前先写出中间推理步骤,但论文指出,这类方法存在幻觉(hallucination)与错误传播(error propagation)的问题:一旦中间某一步推理出错,后续步骤会沿着错误继续推进,而模型本身没有渠道去核实或纠正。模型只能依赖参数中固化的知识,无法在推理过程中主动去外部获取新信息。

第二类是纯行动路线的困难。只生成动作、不显式产生推理过程的方法,缺少对计划的归纳、跟踪与更新能力,也难以处理执行过程中出现的异常情况。动作序列本身不携带“为什么这么做”的信息,人类也难以判断模型的行为是否合理。

ReAct 的重要性在于,它把这两条路线放进同一个生成循环里,让推理为行动提供依据、让行动为推理提供外部信息,从而在同一个框架下同时获得可解释性与外部交互能力。论文称,相比没有推理或没有行动组件的方法,ReAct 在人类可解释性与可信度上有所改善。

工作机制

ReAct 的基本做法是让模型在同一个输出流中交替产生推理轨迹与动作,形成“想一步、做一步、看结果、再想”的循环。可以拆成以下几个要点来理解。

  • 交错生成。模型不是先写完一整段推理再统一执行动作,而是把推理轨迹与动作穿插生成。推理轨迹与动作共享同一个上下文,彼此可见。
  • 推理轨迹的作用。论文指出,推理轨迹帮助模型归纳(induce)、跟踪(track)与更新(update)动作计划,并处理异常情况。也就是说,推理部分承担的是规划与纠偏的职能。
  • 动作的作用。动作让模型能够与外部来源(external sources)对接,例如知识库或环境,从而收集额外信息。这一步是打破纯参数化知识限制的关键。
  • 外部反馈回灌。动作执行后返回的观察结果会回到上下文,成为下一轮推理的输入,使模型可以在推理中利用新获得的信息,而不是仅凭既有参数作答。
  • 提示方式。论文在交互式决策基准上的实验使用了上下文示例(in-context examples)进行提示,摘要中提到只用了“一个或两个”这样的示例。

需要强调的是,上述机制描述来自该论文自身的表述。论文把 ReAct 定位为一种将推理与行动协同起来的使用方式,而非对模型本身结构的改造。

典型例子

论文把 ReAct 应用到了多类语言任务与决策任务上,并给出了具体的对比结果。以下均为论文摘要中报告的内容。

问答与事实验证。在问答任务 HotpotQA 与事实验证任务 Fever 上,论文报告 ReAct 通过与一个简单的 Wikipedia API 交互,克服了思维链推理中普遍存在的幻觉与错误传播问题,并生成了类似人类解题过程的轨迹(task-solving trajectories),这些轨迹比没有推理轨迹的基线更具可解释性。

交互式决策。在两个交互式决策基准 ALFWorld 与 WebShop 上,论文报告 ReAct 的成功率分别以 34% 与 10% 的绝对幅度超过模仿学习(imitation learning)与强化学习(reinforcement learning)方法,且仅使用一个或两个上下文示例进行提示。

论文本身的信息。该论文提交于 2022 年 10 月 6 日,最新修订版本 v3 于 2023 年 3 月 10 日发布,v3 为 ICLR camera ready 版本并修正了一些笔误。作者为 Shunyu Yao、Jeffrey Zhao、Dian Yu、Nan Du、Izhak Shafran、Karthik Narasimhan、Yuan Cao 共七人。论文附带项目站点与代码。

边界与常见误解

第一,ReAct 是论文提出的一种方法,不是行业统一标准。论文中关于效果、可解释性与可信度的结论,均是该论文在自身实验设置下报告的结果,不应被当作对所有模型、所有任务的普遍保证。不同模型、不同任务、不同外部接口下的表现可能不同。

第二,ReAct 不等于“模型自己会思考并行动”。它的推理轨迹与动作都是由语言模型生成的文本序列,外部交互依赖被接入的具体工具或环境。论文中问答与事实验证任务接入的是 Wikipedia API,交互式决策任务接入的是相应基准环境。没有可用的外部接口时,动作这一侧的能力就无从发挥。

第三,ReAct 与思维链提示不是同一件事。思维链提示侧重让模型写出中间推理步骤,而 ReAct 在此之外还要求模型产生动作并与外部来源交互。论文的表述是,ReAct 通过与外部交互来应对思维链推理中的幻觉与错误传播问题,也就是说它把思维链视为需要被补足的对照路线,而不是简单替代。

第四,交错生成会带来额外开销。推理轨迹与动作都会占用上下文长度,多轮交互意味着多次模型调用与外部请求。论文摘要并未给出成本或延迟方面的量化结论,因此不宜替它推断这方面的表现。

第五,论文报告的优势幅度有明确范围。34% 与 10% 这两个数字分别对应 ALFWorld 与 WebShop 两个基准上的绝对成功率提升,比较对象是模仿学习与强化学习方法,且提示示例数量为一个或两个。把这些数字外推到其他任务或生产环境并不在论文的结论范围内。

参考资料