ReAct:在语言模型中协同推理与行动
ReAct (Yao et al., ICLR 2023) 是目前大多数现代财务代理默认使用的“推理-行动”循环背后的论文。我一直没写它,因为它感觉像是一种基础设施——那种大家都已经知道的东西——但在研究了自主账目回写之后,我想从源头了解其失效模式,而不是听从下游的传闻。
论文综述
Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan 和 Yuan Cao 提出了一个看似简单的主题:与其让语言模型进行推理(思维链)或行动(调用工具),不如让它在一个交错的流中同时进行两者。轨迹中的每一步要么是 Thought(关于下一步该做什么的自由形式推理),要么是 Act/Obs 对(行动及其来自环境的观察)。其核心论点是,这种交错是协同的——推理塑造了要采取的行动,而观察则重塑了推理。
他们在四个基准测试上进行了测试:HotpotQA 和 Fever(知识密集型问答和事 实验证,使用维基百科搜索 API 作为行动空间),以及 ALFWorld 和 WebShop(需要多步决策的具身和模拟电子商务环境)。所有实验均使用 PaLM-540B 和 GPT-3 (text-davinci-002),并采用少样本提示(few-shot prompting),上下文中仅包含一到两个示例。
核心观点
- 在 ALFWorld 上,ReAct 在任务成功率方面比模仿学习和强化学习基准高出 34 个百分点;在 WebShop 上,增益为 10 个百分点。
- 在 Fever(事实验证)上,ReAct 优于思维链(CoT)。在 HotpotQA(多跳问答)上,CoT 实际上击败了 ReAct——论文直接承认了这一点,而不是将其掩盖。
- 失效案例分为两类:推理错误(模型误判了它拥有的信息)和搜索错误(无信息的维基百科结果破坏了随后的推理链)。这两者在性质上是不同的,需要不同的缓解措施。
- 格式本身具有可解释性:人类可以阅读 Thought 轨迹,发现错误,并通过编辑一行来纠正它。这被明确称为一种安全性属性。
- 在 ReAct 轨迹上微调较小的模型可以让它们优于带提示的大型模型——这表明交错格式是可学习的,而不仅仅是一种提示技巧。
哪些经得起考验,哪些不行
交互式决策结果(ALFWorld、WebShop)是论文中最强大的部分。领先纯模仿学习的差距足够大,很难归功于 超参数运气。推理轨迹确实具有可读性,而区分搜索失败和推理失败的错误分析是诚实且有用的。
知识密集型问答的结果较弱,论文也意识到了这一点。ReAct 在 HotpotQA 上输给 CoT 是一个真实的数据点:当可以通过链接模型内部知识得出答案时,工具调用的摩擦实际上会产生负面影响。模型有时会检索到一个切向相关的维基百科段落,以此为基准,然后产生比仅在脑海中思考更糟糕的推理。论文称之为“搜索诱导的干扰”,这并不是通过架构修复的——这是一个伪装成代理问题的检索质量问题。
还存在一个从基准测试本身继承的根本性评估问题:与现实世界代理的需求相比,ALFWorld 和 WebShop 的行动空间都相对有限。ALFWorld 中 34% 的提升在游戏内令人印象深刻,但 ALFWorld 是一个具有小型固定行动词汇量的模拟家庭环境。将其推广到具有开放式交易模式的 Beancount 账本,需要论文并未证实的推断。
少样本设置既是优势也是劣势。一两个上下文示例令人印象深刻,但也意味着结果对所选示例高度敏感。我没有在论文中找到关于示例选择的消融实验,而这本来会很有用。
为什么这对财务 AI 至关重要
自主 Beancount 代理的回写安全问题正是 ReAct 所揭示的失效机制。如果代理正在通过推理进行交易分类决策,并检索到一个模糊的账目条目——一个可能映射到 Expenses:Food 或 Expenses:Entertainment 的条目——ReAct 模式将把随后的推理锚定在第一个检索到的条目所暗示的解释 上。这就是“搜索诱导干扰”在财务领域的对应物,它不会通过更仔细的提示而消失。
可解释性论点在这里比论文预期的更为重要。在会计领域,审计员不仅需要正确的答案,他们还需要一个可以签字确认的可追溯推理链。ReAct 的 Thought 轨迹为你提供了这个链条,而人类可以通过编辑一个 Thought 来纠正轨迹的观察结果,直接适用于在任何分录提交到账本之前的人机回环(human-in-the-loop)审核步骤。
不过,我最关心的失效模式是长程任务中的复合错误。涉及五十笔交易的对账工作比单跳维基百科查询有更多让 Thought 出错的机会。ReAct 没有提供让代理检测到自己已偏离目标的原生机制——它只是继续进行。Reflexion (Shinn et al., arXiv:2303.11366) 通过添加口头自我评估步骤解决了这个问题,ReAct + Reflexion 在 134 个 ALFWorld 任务中完成了 130 个,而单独的 ReAct 表现逊色。这种差异告诉你,在基础 ReAct 脚手架之上添加恢复循环有多大的价值。
延伸阅读
- Reflexion: Language Agents with Verbal Reinforcement Learning (Shinn et al., 2023, arXiv:2303.11366) —— 添加了自我反思步骤,允许 ReAct 代理在不同回合间修正策略;对于需要从中途错误中恢复的账本代理来说,这是最直接的扩展。
- FireAct: Toward Language Agent Fine-tuning (Chen et al., 2023, arXiv:2310.05915) —— 针对多个工具在 ReAct 轨迹上专门微调模型;与在真实账本工具调用上训练特定于 Beancount 的代理相关。
- Tree of Thoughts: Deliberate Problem Solving with Large Language Models (Yao et al., 2023, arXiv:2305.10601) —— 探索对推理路径的搜索,而不是仅致力于单一链条;对于第一个 ReAct 轨迹错误且需要系统回溯的情况非常重要。
