本文首先认为,到目前为止,LLM 在语言理解方面令人印象深刻,它们已被用来生成 CoT(思想链)来解决一些问题,它们也被用于执行和计划生成。
尽管这两者是分开研究的,但本文旨在以交错的方式将推理和行动结合起来,以提高LLM的表现。
这个想法背后的原因是,如果你考虑一下作为一个人,你如何行为来执行某些任务。
第一步是你将使用“内心言语”,或者你会以某种方式写下或与自己交流,说“我如何执行任务 X? 要完成任务 X,我需要首先执行步骤 1,然后执行步骤 2,依此类推”
更具体地说,如果你要在厨房做一道菜,你可以像这样做出反应:
这种推理与行动的结合使得人类即使在以前未见过的情况下或面临信息不确定性时也能学习并完成任务。
论文引入一个名为ReAct的框架,在这个框架中,LLM被用来以交互的方式生成“合理的推理轨迹”以及“特定于任务的操作”。
ReAct框架允许LLM与外部工具进行交互,从而获得更可靠和更真实地响应。
引入了ReAct框架给LLM带来了如下几点好处:
总的来说,作者认为最好的方法是使用ReAct与思维链(CoT)相结合,使得LLM可以同时使用模型内部和推理过程中的外部信息。
参考链接:
https://react-lm.github.io/ https://www.promptingguide.ai/techniques/react https://arxiv.org/pdf/2210.03629.pdf https://generativeai.pub/react-augmenting-llms-with-actions-b6ecfadcb4e9
ReAct的灵感来自于“行动(action)”和“推理(reasoning)”之间的协同作用,它使人类能够学习新任务并做出决策或推理。
Chain-of-thought (CoT) prompting显示LLM在常识推理和算术等问题上进行推理跟踪以生成最终答案的能力。但Cot的最大问题在于因为缺少与外部世界的连接导致无法及时更新知识,这导致了例如事实幻觉和错误传播等问题。
ReAct是一种将推理和行动与LLM相结合的通用范式。通过Few-shot Prompt,引导LLM生成推理轨迹和特定任务行动。这使得系统能够在整个pipeline过程中进行动态推理,不断创造、维护、调整行动计划,同时允许通过工具调用和外部环境(例如维基百科)进行交互以此获得外部信息,并将外部信息融合到整个动态推理过程中。
下图展示了一个基于ReAct框架进行问题回答的例子,
在上面的示例中,我们传递了类似于以下问题的prompt提示:
Aside from the Apple Remote, what other devices can control the program Apple Remote was originally designed to interact with?
我们可以看到该模型生成了任务解决轨迹(思考、行动)。 Observation对应于来自正在交互的外部环境(例如搜索引擎)的调用结果。
本质上,ReAct 可以检索信息来支持推理,而推理有助于确定下一步要检索的内容,这是一个迭代循环的过程。
论文首先在问答 (HotPotQA) 和事实验证 (Fever(opens in a new tab)) 等知识密集型推理任务上评估 ReAct。 以PaLM-540B为基础模型进行Prompt测试。
使用不同提示方式对 HotPotQA 和 Fever 进行的提示结果表明,ReAct 在这两项任务上总体表现均优于 Act(仅涉及行动)。
我们还可以观察到,ReAct 在 Fever 上的表现优于 CoT,在 HotpotQA 上落后于 CoT,关于原因论文中提供了详细的错误分析。
总之:
该论文还展示 ReAct 在决策任务上的性能结果。 ReAct 在 ALFWorld(基于文本的游戏)和 WebShop(在线购物网站环境)两个基准上进行评估。 两者都涉及复杂的环境,需要推理才能有效地采取行动和探索。
请注意,ReAct 提示针对这些任务进行了不同的设计,但仍保持推理与行动相结合的相同核心理念。
下面是涉及 ReAct 提示的 ALFWorld 问题的示例。
ReAct 在 ALFWorld 和 Webshop 上的表现均优于 Act。
没有任何思想的行动无法正确地将目标分解为子目标。
对于这些类型的任务,ReAct 中的推理似乎很有优势,但当前基于提示(prompting-based)的LLM推理方法与人类专家在这些任务上的表现仍然相去甚远。
关于ReAct Prompting的过程可以参阅这篇文章。