引言
今天带来一篇经典论文REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS的阅读笔记,论文中文意思是 在语言模型中协同推理和行动。
虽然大型语言模型(LLMs)在语言理解和互动决策任务中展现出强大的能力,但它们在推理(例如思维链提示)和行动(例如行动计划生成)方面的能力主要被研究为独立的主题。在本篇工作中,作者探讨了使用LLMs以交错方式生成推理轨迹和任务特定行动的方法,从而在两者之间实现更大的协同作用:推理轨迹帮助模型归纳、跟踪和更新行动计划,并处理异常情况,而行动则使其能够与外部源(如知识库或环境)进行接口交互并收集额外信息。
作者将该方法命名为ReAct。
1 总体介绍
人类智能的一个独特特征是能够将面向任务的行动与语言推理无缝结合,据理论推测,这在人类认知中发挥着重要作用,能够实现自我调节或策略化并维持工作记忆。以在厨房里烹饪一道菜为例。在任何两个具体行动之间,我们可能会用语言进行推理,以跟踪进展(“现在所有东西都切好了,我应该把锅里的水烧热”),处理异常情况或根据情况调整计划(“我没有盐,所以我用酱油和胡椒代替”),以及意识到需要外部信息时(“我该如何准备面团?让我在互联网上搜索一下”)。我们也会采取行动(打开食谱书阅读食谱,打开冰箱,检查食材)来支持推理并回答问题(“我现在能做什么菜?”)。这种“行动”和“推理”之间紧密的协同作用使人类能够快速学习新任务,并在以前未见情况下或面对信息不确定性时执行强大的决策或推理。
最近的研究结果表明了将语言推理与交互式决策在自主系统中结合的可能性。一方面,适当提示1的大型语言模型(LLMs)已经展示了进行推理步骤以从算术、常识和符号推理任务中提取答案的新能力。然而,这种思维链推理是一个静态黑匣子,模型使用自己的内部表示来生成思维,而不是基于外部世界,这限制了其反应性推理或更新知识的能力。这可能导致在推理过程中出现事实幻觉和错误传播等问题。另一方面,最近的研究探讨了在交互环境中使用预训练语言模型进行规划和行动,重点是通过语言先验来预测行动。这些方法通常将多模态观察转换为文本,使用语言模型生成领域特定的行动或计划,然后使用控制器选择或执行它们。然而,它们并没有利用语言模型对高级目标进行抽象推理或维护工作记忆以支持行动,除了Huang等人2对当前状态的空间事实进行有限形式的言语推理。除了与几个方块互动的简单具体任务外,还没有研究如何以协同方式将推理和行动结合起来以进行一般任务解决,并且这种组合是否可以相对于单独推理或行动带来系统性的好处。
在这项工作中,作者提出了ReAct,一种将推理和行动与语言模型结合以解决各种语言推理和决策任务的通用范式(如上图)。ReAct提示LLMs以交错方式生成与任务相关的语言推理轨迹和行动,使模型能够进行动态推理以创建、维护和调整用于行动的高级计划(推理到行动),同时与外部环境(例如维基百科)交互以将额外信息纳入推理(行动到推理)。作者在四个不同基准测试上对ReAct和最先进的基线进行了实证评估:问题回答(HotPotQA)、事实验证(Fever)、基于文本的游戏(ALFWorld)、网页导航(WebShop)。对于HotPotQA和Fever,在模型可以与维基百科API交互的情况下,ReAct在超越普通行动生成模型的同时,可以与思维链推理竞争。
总体而言,最佳方法是ReAct和CoT的结合,允许在推理过程中同时使用内部知识和外部获取的信息。在ALFWorld和WebShop上,即使是一个或两个提示的ReAct也能够在成功率上超越使用 1 0 3 ∼ 1 0 5 10^3 ∼ 10^5 103∼105个任务实例训练的模仿或强化学习方法,分别绝对提高了34%和10%。作者还展示了在决策制定中稀疏、多功能推理(versatile reasoning)的重要性,通过显示相对于仅具有行动的对照基线一直具有一致的优势。除了一般适用性和性能提升外,推理和行动的结合还有助于模型的可解释性、可信度和诊断能力,在所有领域中,人类可以轻松区分模型内部知识和外部环境的信息,并检查推理轨迹以理解模型行动的决策基础。
作者的主要共享包括:
- 介绍了ReAct,一种新颖的基于提示的范式,用于在语言模型中协同推理和行动以进行通用任务解决;
- 在各种基准测试中进行了广泛实验,展示了ReAct在少量学习设置中相对于之前单独进行推理或行动生成的方法的优势;
- 进行了系统的切除和分析,以理解行动在推理任务中的重要性,以及推理在交互任务中的重要性;
- 分析了ReAct在提示设置下的局限性(即推理和行动行为的有限支持),并进行了初步的微调实验。
2 REACT:协同推理和行动
考虑一个智能体与环境互动以解决任务的一般设置中。智能体在时间步 t t t接收来自环境的观察 o t ∈ O o_t ∈ \mathcal O ot∈O,并根据某些策略 π ( a t ∣ c t ) π(a_t|c_t) π(at∣ct)采取行动 a t ∈ A a_t ∈ \mathcal A at∈A,其中 c t = ( o 1 , a 1 , ⋅ ⋅ ⋅ , o t − 1 , a t − 1 , o t ) c_t = (o_1, a_1, · · · , o_{t−1}, a_{t−1}, o_t) ct=(o1,a1,⋅⋅⋅,ot−1,at−1,ot)是智能体的上下文。当映射 c t → a t c_t \rightarrow a_t ct→at是非隐式并且需要大量计算时,学习策略变得具有挑战性。
例如,如图1(1c)所示的智能体无法生成正确的最终动作(Act 4)来完成QA任务,因为这需要对轨迹上下文(问题,Act 1-3,Obs 1-3)进行复杂推理。类似地,如图1(2a)所示的智能体无法从上下文中理解到sinkbasin 1不包含peppershaker 1,因此不断产生错误的行动。
ReAct的想法很简单:将智能体的行动空间增加到 A ^ = A ∪ L \hat{ \mathcal {A}} = \mathcal A \cup \mathcal L A^=A∪L,其中 L \mathcal L L是语言空间。语言空间中的一个行动 a ^ t ∈ L \hat a_t \in \mathcal L a^t∈L,作者将其称为思考或推理轨迹,不会影响外部环境,因此不会产生观察反馈。相反,一个思考 a ^ t \hat a_t a^t的目的是通过对当前上下文 c t c_t ct进行推理来组成有用的信息,并更新上下文 c t + 1 = ( c t , a ^ t ) c_{t+1} =(c_t,\hat a_t) ct+1=(ct,a^t)以支持未来的推理或行动。
如图1所示,可能存在各种类型的有用思考,例如分解任务目标并创建行动计划(2b, Act 1;1d,Thought 1),注入与任务解决相关的常识知识(2b, Act 1),从观察中提取重要部分(1d, Thought2, 4),跟踪进展并转移行动计划(2b, Act 8),处理异常并调整行动计划(1d, Thought 3)等等。然而,由于语言空间 L \mathcal L L是无限的,学习在这种增强的行动空间中是困难的,并且需要强大的语言先验。在本篇工作中,主要关注这样一个设置:一个冻结的大型语言模型PaLM-540B 接受少样本在上下文中示例的提示,以生成领域特定的行动和自由形式的语言思考,用于任务解决。对于决策和推理能力至关重要的任务(图1(1)),我们交替生成思考和行动,以使任务解决轨迹包含多个思考-行动-观察步骤。相比之下,对于可能涉及大量行动的决策任务(图1(2)),思考只需要在轨迹中最相关的位置间隔出现,因此我们让语言模型自行决定思考和行动的异步发生。由于决策制定和推理能力集成在一个大语言模型中,ReAct具有几个独特的特点:
A) 直观且易于设计:设计ReAct提示非常简单,因为人类标注者只需在他们采取的行动之上用语言键入他们的思考。本文中没有使用特定的格式选择、思考设计或示例选择。
B) 通用且灵活:由于灵活的思考空间和思考-行动发生格式,ReAct适用于具有不同行动空间和推理需求的各种任务,包括但不限于问答、事实验证、文本游戏和网络导航。
C) 性能优越且稳健:ReAct在仅从一个到六个上下文示例中学习时对新任务实例具有很强的泛化能力,始终优于仅具有推理或行动的基线模型跨不同领域。
D) 与人类对齐且可控:ReAct承诺一种可解释的顺序决策制定和推理过程,人类可以轻松检查推理和事实的正确性。此外,人类还可以通过思考编辑来控制或纠正智能体的行为,正如后面的图5所示。
3 知识密集型推理任务
知识密集型的推理任务,例如多跳问答和事实验证。通过与维基百科API进行交互,ReAct能够检索支持推理的信息,并使用推理来确定下一步要检索的内容,展示了推理和行动的协同效应。
3.1 设置
领域 考虑了两个具有挑战性的知识检索和推理数据集:(1)HotPotQA,一个需要对两个或更多维基百科段落进行推理的多跳问题回答基准测试,以及(2)FEVER ,一个事实验证基准测试,每个声明被注释为"支持"、“反驳"或"信息不足”,基于是否存在维基百科段落来验证该声明。在本工作中,作者在这两个任务中都采用了仅问题的设置,模型只接收问题/声明作为输入,没有访问支持段落的权限,必须依靠其内部知识或通过与外部环境的交互来支持推理。
动作空间 作者设计了一个简单的维基百科网页API,提供三种类型的动作来支持交互式信息检索:(1) search[entity]
,如果实体的维基页面存在,则返回对应实体维基页面的前5个句子,否则建议从维基百科搜索引擎中选择前5个相似实体;(2) lookup[string]
,返回包含字符串的页面中的下一个句子,模拟浏览器上的Ctrl+F功能;(3) finish[answer]
,完成当前任务并给出答案。
这个动作空间通常只能根据精确的段落名称检索到段落的一小部分,远远不及最先进的词汇或神经网络检索器。其目的是模拟人们如何与维基百科进行交互,并强迫模型通过语言中的显式推理来检索。
3.2 方法
ReAct提示 对于HotpotQA和Fever,从训练集中随机选择了6个和3个案例,手动组成了ReAct格式的轨迹,作为一些少样本示例用于提示。类似于图1(d),每个轨迹由多个思考-行动-观察步骤(即密集思考)组成,其中自由形式的思考用于各种目的。具体而言,使用一系列思考来分解问题(我需要搜索x,找到y,然后找到z
),从维基百科的观察中提取信息("x是在1844年开始的","这段话没有提到x"
),进行常识推理("x不是y,所以z必须是..."
)或算术推理("1844 < 1989"
),引导搜索重构("也许我可以搜索/查找x代替"
),并综合得出最终答案("...所以答案是x"
)。更多详细信息请见附录C。
基线 系统地剔除了ReAct轨迹的一些部分,构建了多个基线的提示(格式如图1(1a-1c)):(a) 标准提示 (Standard),移除所有的思考、行动和观察。 (b)思维链提示 (Chain-of-thought, CoT),移除行动和观察,作为仅有推理的基线。还构建了一个一致性基线 (CoT-SC) ,在推理期间使用解码温度为0.7的21个CoT轨迹进行采样,并采用多数答案,发现这种方法能够稳定提升CoT的性能。©仅行动提示 (Act),移除ReAct轨迹中的思考,粗略地类似于WebGPT如何与互联网进行交互以回答问题,尽管它在任务和行动空间上有所不同,并且使用的是模仿学习和强化学习而不是提示。
结合内部和外部知识 ReAct所展示的问题解决过程更加事实和具体,而CoT在构建推理结构方面更准确,但容易出现虚构的事实或思考。因此,作者将ReAct和CoT-SC结合起来,让模型根据以下启发式规则决定何时切换到另一种方法:
A) ReAct → CoT-SC:当ReAct在给定步骤内无法返回答案时,退回到CoT-SC。为HotpotQA和FEVER设置了7步和5步,因为更多的步骤不会提高ReAct的性能。
B) CoT-SC → ReAct:当n个CoT-SC样本中的多数答案出现次数小于n/2时(即内部知识可能不够自信地支持任务),退回到ReAct。
微调 由于在大规模手动注释推理轨迹和行动上存在挑战,采用了类似于Zelikman等人的自举方法,使用ReAct(以及其他基线模型)生成的3000个包含正确答案的轨迹,来微调较小的语言模型(PaLM-8/62B)以在输入问题/声明的条件下解码轨迹(包括所有思考、行动、观察)。
3.3 结果与观察
ReAct在两个任务上均表现出色 表1展示了使用PaLM540B作为基础模型的HotpotQA和Fever结果,使用不同的提示方法。ReAct在两个任务上表现优于Act,展示了推理在指导行动方面的价值,特别是在综合最终答案方面,如图1(1c-d)所示。微调结果也证实了推理轨迹对于更加明智的行动的好处。
ReAct vs. CoT 另一方面,ReAct在Fever上的表现优于CoT,而在HotpotQA上稍逊于CoT。Fever中的SUPPORTS/REFUTES之间的差异可能只有很小的量,因此检索准确和最新的知识是至关重要的。为了更好地理解ReAct和CoT在HotpotQA上的行为差异,作者分别从ReAct和CoT中随机抽样了50个轨迹,其中包括正确答案和错误答案(由EM判断)(总共200个样本),并在表2中标记了它们的成功和失败模式。以下是一些关键观察结果:
A) 幻觉是CoT的严重的问题 导致其在成功模式下的误报率远高于ReAct,并成为其主要的失败模式。相比之下,ReAct的问题解决轨迹更加扎实、以事实为导向,更值得信赖,这要归功于它可以访问外部知识库。
B) 虽然交错推理、行动和观察步骤可以提高ReAct的扎实性和可信度,但这种结构约束也降低了它在制定推理步骤方面的灵活性,导致其推理错误率比CoT更高 ReAct中存在一种经常出现的错误模式,即模型反复生成先前的思考和行动,将其归类为“推理错误”的一部分,因为模型无法推理出下一步采取的正确行动并跳出循环(可能使用束搜索能解决该问题)。
C) 对于ReAct来说,通过搜索成功地检索到有信息量的知识至关重要 23%的错误案例属于非信息性搜索,这会使模型的推理偏离轨道,使其难以恢复和重构思考。这或许是事实性和灵活性之间的一种预期权衡,这也激发了将两种方法结合起来的策略。
ReAct + CoT-SC对LLM的提示效果最好 如表1所示,HotpotQA和Fever的最佳提示方法分别是ReAct → CoT-SC和CoT-SC → ReAct。此外,图2显示了不同方法在使用不同数量的CoT-SC样本时的表现。虽然两种ReAct + CoT-SC方法在一个任务上具有优势,但它们在不同数量的样本上都显著且一致地优于CoT-SC,仅使用3-5个样本就能达到使用21个样本时的CoT-SC性能。这些结果表明,将模型内部知识和外部知识合理结合对于推理任务是有价值的。
ReAct对于微调效果最好 图3展示了在HotpotQA上对四种方法(Standard、CoT、Act、ReAct) 进行提示/微调的规模效应。使用PaLM-8/62B,由于从上下文示例中学习推理和行动的困难,ReAct的提示效果是四种方法中最差的。然而,当仅使用3000个示例进行微调时,ReAct成为了四种方法中最好的方法。相比之下,Standard或CoT的微调对于PaLM8/62B来说要差得多,因为前者本质上教导模型记住(可能是虚构的)知识事实,而后者教导模型如何(推理并)通过访问维基百科来获取信息,这是一种对于知识推理更具普适性的技能。由于所有提示方法仍然远远落后于特定领域最先进的方法(表1),作者相信使用更多人工编写的数据进行微调可能是释放ReAct潜力的更好方式。
4 决策任务
略
5 相关工作
略
6 结论
ReAct是一种结合推理和行动的方法,用于提高大型语言模型的性能。它在各种任务中表现出色,并具有可解释的决策路径。通过更多的人类注释进行微调和通过多任务训练扩展,可以进一步提高性能。
总结
⭐ 作者结合了推理和行动以交错方式生成推理轨迹和任务特定行动的方法,用于通用任务的解决。
参考
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models ↩︎
Inner Monologue: Embodied Reasoning through Planning with Language Models ↩︎