ReAct: Synergizing Reasoning and Acting in Language Models
[2210.03629] ReAct: Synergizing Reasoning and Acting in Language Models
ICLR 2023
这是一篇在2022年挂出来的论文,不要以现在更加强大且性能综合的LLM来对这篇文章进行批判。
思想来源于作者对人类行为的分析:在人类从事一项需要多个步骤的任务时,而步骤和步骤之间,或者说动作和动作之间,往往会有一个推理过程
以做一道菜为例,切好菜和打开煤气之间,有一个这样的推理,或者说内心独白:"现在我切好菜了,后面要煮菜了,我需要打开煤气。"在做菜过程中,如果发生意外,发现没有盐时,有这样一个推理:"没有盐了,今天我就用胡椒粉调味",然后我们就会去拿胡椒粉。
基于这样的洞察,作者提出的方法:让大模型把内心独白说出来,然后根据独白做相应的动作来提高LLM答案的准确性。
乍一看,好像就是思维链COT方案,但是实际上是融合了动作执行,比如主动去搜索引擎搜索答案、翻阅文档等
就像下面图1中,
直接询问LLM,得到的是iPod这个作物的答案
使用思维脸:答案错误,思维脸的范式也是在胡编乱造,因为模型内部参数并不知道正确的答案,COT也只是猜想结果
使用动作范式:隐式推理,对LLM的推理能力要求很高,因为直接隐去了思考过程,只去执行一些动作。在当时,单纯使用LLM本体的推理能力是无法得到正确答案的,因此这篇文章有很高的价值,不要使用当今的价值观评判当时背景下的成功。
最后是ReAct方案:reasoning+action,推理+动作。显示推理,加之以动作,让AGENT自主找到了答案,就像一个笨孩子需要把想法写出来,综合考虑所有 的想法和观察结果然后做处动作,从结果上看是可以的,因为找到了正确答案。
这项工作提出了一种通用的范式,将推理和行动与语言模型相结合,以解决各种语言推理和决策任务。
图 1: (1) 4 种提示方法的比较,(a) 标准,(b) 思维链 (CoT,仅推理),(c) 行动 仅,和 (d) (推理+行动),解决 HotpotQA (Yang 等人,2018) 问题。 (2) (a) 行动 仅和 (b) 提示的比较,用于解决 AlfWorld (Shridhar 等人,2020b) 游戏。 在这两个领域中,我们省略了提示中的上下文示例,并且只显示了模型 (行动,想法) 和环境 (观测) 生成的任务求解轨迹。
提示 LLM 以交错的方式生成与任务相关的语言推理痕迹和行动,这允许模型执行动态推理来创建、维护和调整用于行动的高级计划(推理以行动),同时还与外部环境(例如维基百科)交互以将附加信息纳入推理(行动以推理)。
集成推理+行动
对于一个和周围环境进行交互来解决任务的agent,某一个时刻t,agent从环境中得到了观察结果ot∈𝒪,并且遵循策略 π(at|ct) 采取动作 at∈𝒜,其中 ct=(o1,a1,⋯,ot−1,at−1,ot) 是agent的上下文(context)。
当ct↦at的映射是隐形的并且需要大量计算时,学习一个策略是有挑战的。 比如在上图的(1c)和(2a)都没有执行最终的正确动作。
而ReAct的思想很简单:将agent的动作空间增强变成 行动空间与语言空间的并集 。一个属于语言空间的动作a^t∈ℒ,被称为thought 或reasoning trace,它不影响外部环境,因此也不会有观察反馈。一个thought a^t意在对现有上下文c_t推理来组合出有用的信息,并更新上下文c t + 1 = ( c t , a^t)以支持将来的推理或动作。
在上面的图1中,有用的thought的类型不定:
- 拆分任务目标和创建行动计划(2b,Act 1; 1d, Thought 1)
- 注入解决任务相关的常识知识(2b, Act 1)
- 从观察中抽取重要的信息(1d, Thought2,4)
- 跟踪进度和行动计划(2b, Act8)
- 处理异常和调整行动计划(1d, Thought 3)等等
因为语言空间L是无限的,从这个增强空间学习是困难的并且需要很强的语言先验知识。在本文中,作者主要使用语言模型:PaLM-540B,在解决任务时使用few-shot上下文例子prompt模型来生成领域相关的动作或者thought,比如上面图中的(1d),(2b)。
每一个上下文例子是人工生成的用来解决任务实例的动作、thoughts和环境观察的轨迹
对于推理更重要的任务(上图中的(1)),作者交替生成思考和动作,所以任务轨迹是包括多个"thought-action-observation"步骤。 而对于像上图中的(2)的决策任务会涉及到很多动作,thoughts只需要在轨迹中最相关位置稀疏的出现,所以作者们让语言模型自行决定thought和动作的异步发生。
因为ReAct包括决策和推理能力,所以作者们认为它有几个独特特征:
- 直观且易于设计:人类标注员将自己采取动作时的想法写上就可以了,没有特别的格式要求。
- 通用且灵活:因为不限格式,thought空间也没有限制,所以适用且不限于各种任务:QA、事实验证、文字游戏、网页浏览等。
- 高效且健壮: 只用1-6个上下文例子,ReAct对新的例子显示出强的泛化性,在不同领域内相比于只推理或只行动的基线效果都更好。
- 与人类一致且可控: ReAct的轨迹是可解释的,人很容易检查推理和事实的准确性。并且在过程中人也可以编辑thought来进行控制和纠正agent的行为
后续就是在知识密集型推理任务和决策任务上面进行实验