大模型Agent的论文研读:REACT:SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS
本文阅读了ReAct的论文。在HotpotQA和FEVER任务中,ReAct通过结合推理(Thought)和外部检索(Action/Observation),显著优于仅依赖内部推理的CoT和仅依赖外部检索的Act方法。实验表明,ReAct+CoT-SC混合策略表现最佳,能有效平衡推理和检索。在决策任务(ALFWorld和WebShop)中,ReAct通过目标分解和环境跟踪,成功率达到71%,优于仅
这篇论文可以说是Agent推行的奠基论文。
前两章读的时候还没开始写,这里从第三章开始梳理,放在实验中更好理解。
第三章 KNOWLEDGE-INTENSIVE REASONING TASKS 知识密集型任务
知识密集型任务:模型无法依赖记忆做出判断,需要查询知识才能做出判断。
HotpotQA:多跳问答。例,Which film did the director of Inception also direct in 2006?
模型需要先找到这个电影的导演A,再去查他 2006年的电影。跨文档、多步检索 + 推理
FEVER:事实验证。例,给一个陈述:“Barack Obama was born in Kenya.”
模型需要去 Wikipedia 检索 → 验证 → 判断 SUPPORTS/REFUTES/NOT ENOUGH INFO。典型的事实验证,依赖准确检索。
ReAct Prompting
包含 Thought(推理)、Action(动作)、Observation(环境反馈)
Baselines
Standard:移除所有的 Thought(推理)、Action(动作)、Observation(环境反馈)。就是普通的问模型问题,模型回答。
CoT:只保留 Thought(推理链条),但移除 Action 和 Observation。 模型一步步推理,完全靠内部知识,不能查外部信息。 可以展示逻辑结构。
作用:和 ReAct 对比,观察“加上外部交互”能否减少幻觉。
CoT-SC:生成多条 CoT 推理链(比如 21 条),然后投票选多数答案,减少随机错误。 能显著提升CoT性能,但依旧不会查询。
Action only prompt(Act): 移除所有 Thought,只保留 Action + Observation。只会执行动作(例如搜索),再根据反馈直接给答案,没有“语言推理轨迹”。 完全依赖外部信息;缺乏高层次计划,容易盲目尝试或陷入无效循环。
作用:验证“只有行动但不推理”是否够用。
这里是四种prompt的展示对比
Combining Internal and External Knowledge
在原有baseline上实验观察,作者发现:
ReAct:推理过程更 factual 和 grounded(基于事实,有外部检索,不容易幻觉)。
CoT:在逻辑结构 formulation 上更准确,但很容易产生幻觉。
所以作者提出启发式的策略:设计了两个切换规则,让模型在需要时“退回到另一种方法”:
A) ReAct → CoT-SC
当 ReAct 在限定的步数内(比如查了几次资料,推理了几次)还没得到答案时,就切换到 CoT-SC。
ReAct 在检索时如果没找到有用信息,会卡住(search error),此时让 CoT-SC 来补救,用内部知识推理出答案。实验里设置了HotpotQA 最多 7 步,FEVER 最多 5 步。再多步也不会提高性能(他们试过,发现没用)。
B) CoT-SC → ReAct
当 CoT-SC 生成的 n 条推理链中,多数答案占比不到一半(说明内部知识不够自信),就切换到 ReAct。这时 CoT-SC 的内部知识不可靠。于是用 ReAct 让模型去外部检索补充信息。
这里插入一句,什么是多数答案?
CoT-SC:模型生成 n 条不同的推理链(通过随机性,比如 sampling temperature > 0),然后把每条推理链的最终答案收集起来,做投票。最终答案 = 出现次数最多的那个答案(majority vote)。
举例:假设生成 n=10 条 CoT 推理链,最后的答案分布可能是:
4 条 → 答案 A 3 条 → 答案 B 3 条 → 答案 C
这里“多数答案”是 A,因为它出现次数最多。但 A 只占了 4/10,也就是说没有形成半数以上的共识。
Finetuning
人工去标注「推理轨迹 (thoughts)、动作 (actions)、观察 (observations)」太困难。所以作者采用一种 bootstrapping(自举)方法:类似做法参考了 Zelikman et al., 2022(self-training 思路)。
(A)用 ReAct 的prompt形式让LLM自动生成大约 3000 条正确答案的轨迹。
(B)再用这些轨迹来微调一个较小的语言模型(比如 PaLM-8B 或 PaLM-62B)。
微调细节(Appendix B.1)
batch size: 64
PaLM-8B:ReAct 和 Act 方法:4000 步 Standard 和 CoT 方法:2000 步
PaLM-62B:ReAct 和 Act 方法:4000 步 Standard 和 CoT 方法:1000 步
一个 step = 模型在一次 前向 + 反向传播 中,处理一个 batch 的数据,并更新一次参数。
如果 batch size = 64,就意味着这个 step 用了 64 条训练样本。所以:2000 步=模型进行了 2000 次参数更新,2000 步 = 2000 × 64 ≈ 128,000 个样本被训练过。这里并不是说数据集真的有那么大,而是训练中可以 重复利用同一个轨迹数据(epoch > 1)。
发现:ReAct/Act 方法:随着训练步数增加,模型性能还会持续提升。
Standard/CoT 方法:训练太多反而会退化(因为它们没有外部交互,容易过拟合)。所以他们给 ReAct/Act 设 4000 步,而给 Standard/CoT只设2000步(在小模型上),避免过度训练。
RESULTS AND OBSERVATIONS
1、在 知识密集型推理任务(HotpotQA, FEVER)上,ReAct consistently outperforms CoT 和 Act-only。它把Reasoning和Acting结合,既做逻辑推理,又借助外部检索得到更事实化的答案。
2、CoT容易幻觉,但推理路径更自由,反而较少出现“陷入死循环”的情况。
React更可靠但是结构化约束让模型在推理步骤上 灵活性下降。模型会“卡住” → 重复生成之前的 Thought 和 Action,陷入循环,这是 ReAct 特有的“reasoning error”。
ReAct 成败强依赖检索结果:如果检索到的信息无效(non-informative search),会直接干扰推理。大约 23% 的错误是因为没检索到有用信息,导致模型难以恢复、重建思路。
3、ReAct + CoT-SC perform best for prompting LLMs
这条是2的延伸
4、小模型 + 微调的 ReAct >大模型 + 只靠提示 > 小模型 + 只靠提示。
ReAct 在小模型 + prompting 下最差:因为 ReAct 轨迹需要同时学习“思考 (Thought) + 行动 (Action)”,对小模型来说负担太大。所以CoT在没微调的小模型中表现更好,CoT 的 Prompt 只要求“写出思维链”,对小模型来说更容易:不需要和环境交互;只要生成一段逻辑即可。
ReAct 一旦微调就表现最好:微调等于给了模型显式的训练样本,教会它如何交替做 Reasoning 和 Acting。
Standard/CoT 微调效果差:这两种其本质上让模型死记硬背内部知识,容易产生幻觉,缺乏泛化。ReAct/Act 教模型如何通过外部交互获取事实,更具通用性。
ReAct 的优势在 finetuning 时体现得最明显,只要少量训练样本,就能显著超越 CoT、Standard、Act。提示学习 (prompting) 下,ReAct 不占优,特别是小模型。这说明 ReAct 的潜力需要依赖 过程监督数据(推理+行动轨迹) 来释放。
启示:虽然 ReAct 在零微调的情况下不如 CoT,但一旦用少量 ReAct 生成的数据进行微调,它能让小模型表现远超大模型的纯 prompting ——证明了 ReAct 在“低资源 + 小模型”场景下的巨大价值。
第四章 DECISION MAKING TASKS 决策型任务
这种任务需要连续多步行动,在复杂环境里完成目标,而不仅仅是回答一个问题。需要长期规划,在执行过程中不断推理和行动,和知识密集型任务(HotpotQA, FEVER)相比,决策型任务更考察规划、分解任务、执行操作。
作者此处使用了两个实验场景:
1、ALFWorld 实验
环境:文字版的 ALFRED 家居任务环境。Agent 要完成高层目标,比如“把书放在书桌下面”。
任务难点:环境很大(>50 个位置),需要分解子目标(subgoal),比如“找到书桌 → 打开书桌 → 放书”,需要常识知识(比如“书桌灯可能在书桌上”)。
ReAct prompt设计,每条轨迹包含 4 种推理步骤:分解整体目标——跟踪子目标完成情况——确定下一个子目标——基于常识判断该去哪里、做什么
实验设置:从训练集中随机挑选 3 条带推理的轨迹作为 few-shot 示例,对比 ReAct 和 Act-only prompt(没有 Thought,只有 Action),使用 baseline 方法 BUTLER(一个模仿学习 agent)。
2、WebShop 实验
环境:一个模拟真实电商网站(1.8M 商品 + 12K 人类指令)。
任务:用户给指令(例如“我要一个带抽屉的床头柜,价格低于 140 美元”)。Agent 需要理解自然语言指令,在网页上搜索、点击按钮、浏览商品,最终找到符合条件的商品并“购买”。
ReAct prompt:在执行之前加上 推理步骤(例如“用户要找便宜的床头柜 → 我先点搜索 → 再过滤价格”)。Act-only prompt:直接执行网页操作。
结果:两个实验中,ReAct均优于Act,前者能能保持目标分解与环境跟踪,更能识别和推理出商品属性,避免被嘈杂的文本描述干扰。但在购物场景中仍旧比人类差。
与IM对比,这里是一个消融实验,将ReAct和去掉 Action/Observation只保留Thought,其类似于IM,作者想要突出Action/Observation的作用,不直接用CoT做对比是因为它的 prompt 格式和 ReAct 不一样,这样更加严谨。
IM (Inner Monologue, Huang et al. 2022b):只依赖“内部独白”,但没有灵活的外部反馈机制。
ReAct 成功率 71% > ReAct–IM 成功率 53%。
ReAct–IM 常见错误:无法判断子目标是否完成;无法确定下一个子目标是什么;缺乏常识,导致推理出错(比如 ALFWorld 中判断错误物品位置)。单纯 IM太局限,只能观察环境,不够灵活。
更多推荐
所有评论(0)