ReAct论文研读
ReAct:synergizing reasoning and acting in language models 语言模型中合成推理和行动
Abstract
语言模型中的reasoning(例如CoT等)和acting(action plan等)作为了单独的研究课题。本文探索LLM以交错的方式生成推理轨迹(reasoning trace)和特定于任务的动作(task-specific actions),从而让两者更大的协同作用。推理有助于更新动作计划和异常处理,动作允许模型与知识库或环境等外部资源交互收集附加信息。
在language 和decision making task上取得了sota结果,并在question answering和fact verification上克服了CoT推理的幻觉和错误传播问题。
ReAct出现之前,LLMs的研究主要沿着两个相对独立的方向发展。
- Reasoning
核心代表:思维链(Chain-of-Thought,CoT)
特点:研究如何让模型在回答复杂问题时,先生成一段“解题思路”,再给出答案。
局限:模型完全依赖于自身的内部知识,无法获取外界实时信息,易造成幻觉。
- Acting
核心代表:交互式决策(Interactive Decision Making)
特点:模型根据观察Observation直接生成动作Action。
局限:模型缺乏复杂的逻辑规划能力,易迷失在局部的状态中,难以应对多步推导任务。
Introduction
- 核心矛盾:人类思维的启发(Human-like Intelligence)
人类在执行任务导向的行动时会结合思维推理,这非常重要。将逻辑推理(Reasoning Trace)与特定任务的行动(Task-specific Actions)结合的能力,是人类处理复杂任务的核心。
- 提出ReAct架构
Reasoning与Action的结合,可以让模型在执行任务时,交替生成“推理轨迹”与“行动”:
-
推理轨迹(Reasoning Trace):模型用自然语言写下的思考过程。它可以帮助模型诱导、跟踪和更新行动计划,甚至处理异常情况。
-
行动(Acting):模型向外部环境(WikiPedia API、数据库)发出指令,用以收集新信息或改变状态。
-
协同效应(Synergy)的优势
-
更强的可靠性(Reliability/Grounding):通过行动,模型可以从外部获取实时信息,纠正内部错误,极大地减少幻觉。这也被称为知识对齐(Grounding)。
-
更强的可解释性(Interpret ability):由于模型必须写出“推理轨迹”,人类可以清晰看到它是怎么想的,以及为什么执行某个动作。
-
双向促进:推理能指引该做什么动作,而动作后的反馈(Observation)也可以启发模型下一步的思考。
-
-
验证
-
知识密集型推理(Knowledge-intensive reasoning):HotpotQA(多跳问答,需要多步搜索才能找到答案)和FEVER
-
决策任务(Decision making tasks):ALFWorld和WebShop
-
ReAct:Synergizing Reasoning + Acting
传统Agent的工作方式定义
- 在时间步,Agent会从环境中接收到一个观察结果(Observation,)
- Agent 会基于当前的上下文(Context,)采取一个行动(Action,)。这里的上下文包含了过去所有的观察和行动轨迹:
痛点
传统策略是学习一个映射,其中是外部动作空间(例如search[query]、click[button])。这种映射通常是高度隐式且复杂的计算。
解决
将思考看作是一种语言动作。
-
Action Space():会改变外部环境,并获得环境给出的观察反馈(Observation)。
-
Language Space():文章称为想法(Thought)或推理轨迹(Reasoning Trace)
-
Thought
-
不改变外部环境:不会获取外部的Observation feedback。
-
更新内部上下文:进行推理来compose有用的信息,帮助Agent整理思路、分解目标或提取关键信息。
-
具体实现 ???
In-context Learning(Few-shot Prompting)
Unlimited L增加了动作空间的复杂度,需要有强语言先验来约束。论文使用了Frozen LLM——PaLM-540B + few-show上下文提示,通过提供人类示范轨迹(包含行动、思维和环境观察的交替序列)引导LLM生成领域相关的行动和自由形式的思维。
thought与actionde交替方式
-
推理密集型任务(QA):交替生成Thought-Action-Observation-Thought…
-
决策密集型任务:Thought只在关键位置稀疏出现,语言模型自主决定出现时机。
ReAct四大特性
-
直观且易于涉及:构建ReAct的提示词极其简单,只需将自己做任务时的内心想法和具体动作记录下来写进promp
-
通用且灵活:想法-动作交替的模式普遍,不管是多跳问答、事实核查、还是文字游戏、网页导航,都适用
-
高性能且鲁棒:只需要提供1-6个少样本提示(Few-shot examples),ReAct就可以泛化到新任务中
-
符合人类直觉且绝对可控
Knowledge-Intensive Reasoning Tasks
数据集
-
HotpotQA:这是一个多跳问答任务,回答一个问题通常需要跨越多个维基百科页面进行逻辑链接。
-
FEVER:这是一个事实核查任务,要求模型判断一个陈述是“支持(SUPPORTS)”、“反驳(REFUTES)”还是“信息不足(NOT ENOUGH INFO)”。
难度:模型只接受问题或陈述作为输入,没有预设参考文档,只依靠内部知识或者外部环境交互获取知识。
交互设计
作者设计了一个wiki百科交互环境:
search[entity]:搜索特定的实体,存在返回前几句话(作为observation),不存在返回相似实体。
lookup[string, sentence_id]:当前页面查找包含特定字符的句子,模拟人类ctrl+f的行为。
finish[answer]:完成任务给出最终答案
Baseline Compare
-
Standard:标准prompt
-
CoT:只内部推理,不外部交互
-
Act-only:只允许模型执行动作(搜索/查找),无思考过程
-
ReAct:允许模型在执行每个动作前,先写下一段Thought
实验结果与发现
-
幻觉:CoT主要是事实幻觉,无法访问外部环境获取实时数据
-
ReAct主要失败模式是推理错误,因为ReAct被强制要求与外部环境交互,有时会打断模型的推理流畅性。
Decision-Making Task
ALFWord:基于文本的家庭环境模拟游戏
WebShop:模拟电商购物网站
发现:
ReAct和CoT各有优劣,将它们结合(ReAct+CoT)能达到最优效果。ReAct可以通过实时获取外部真实信息,极大地减少了幻觉(Hallucination)。CoT在某些逻辑及其复杂的步骤上,内部推理比频繁的外部搜索更具全局观。
-
ReAct →→ CoT-SC:先尝试 ReAct,如果失败或不确定,再切换到带自一致性(Self-consistency)的 CoT。
-
ReAct & CoT 集成:通过启发式方法根据推理路径的特征决定采用哪个答案。



