本文首先认为,到目前为止,LLM 在语言理解方面令人印象深刻,它们已被用来生成 CoT(思想链)来解决一些问题,它们也被用于执行和计划生成。
尽管这两者是分开研究的,但本文旨在以交错的方式将推理和行动结合起来,以提高LLM的表现。
这个想法背后的原因是,如果你考虑一下作为一个人,你如何行为来执行某些任务。
第一步是你将使用“内心言语”,或者你会以某种方式写下或与自己交流,说“我如何执行任务 X? 要完成任务 X,我需要首先执行步骤 1,然后执行步骤 2,依此类推”
更具体地说,如果你要在厨房做一道菜,你可以像这样做出反应:
- “现在一切都切完了,我该烧热锅水了”),处理异常或者根据情况调整计划(“我没有盐,就用酱油和胡椒粉代替吧”), 并意识到何时需要外部信息(“我如何准备面团?让我在互联网上搜索”)。
- 您还可以采取行动(打开食谱阅读食谱、打开冰箱、检查成分)来支持推理并回答问题(“我现在可以做什么菜?”)。
这种推理与行动的结合使得人类即使在以前未见过的情况下或面临信息不确定性时也能学习并完成任务。
论文引入一个名为ReAct的框架,在这个框架中,LLM被用来以交互的方式生成“合理的推理轨迹”以及“特定于任务的操作”。
- 生成合理的推理轨迹允许模型归纳、跟踪、更新动作规划,甚至处理异常
- 特定于任务的操作允许模型与外部数据源(例如知识库或外部环境)交互并收集信息
ReAct是一种将推理和行动与LLM相结合的通用范式。通过Few-shot Prompt,引导LLM生成推理轨迹和特定任务行动。这使得系统能够在整个pipeline过程中进行动态推理,不断创造、维护、调整行动计划,同时允许通过工具调用和外部环境(例如维基百科)进行交互以此获得外部信息,并将外部信息融合到整个动态推理过程中。
1. 数据准备:
- 任务实例: 收集大量任务实例,每个实例包含目标、输入信息、行动轨迹和结果。
- 推理轨迹和行动: 将每个实例的推理过程和行动轨迹人工标注为文本,例如:
- 推理轨迹: 将推理过程分解为多个步骤,并用自然语言描述每个步骤的内容。
- 行动: 将每个步骤对应的行动用自然语言描述,例如搜索关键词、点击按钮等。
- 环境接口: 设计一个简单的环境接口,例如 API,用于模型与环境交互。
2. 提示生成:
- 任务实例: 将每个任务实例的输入信息、推理轨迹和行动轨迹组合成提示。
- 示例: 提供一个或多个包含推理轨迹和行动轨迹的示例,以指导模型生成推理轨迹和行动。
3. 模型训练:
- 使用 ReAct 提示训练大语言模型,例如 PaLM-540B。
- 可以使用微调方法,例如使用少量正确的推理轨迹和行动轨迹来微调较小的语言模型。
4. 任务解决:
- 使用训练好的模型解决新的任务实例。
- 模型会根据提示生成推理轨迹和行动,并通过环境接口与环境交互。
ReAct 效果:
- 知识密集型推理任务:
- 在 HotpotQA 和 Fever 任务上,ReAct 的性能优于仅使用行动或推理的模型。
- ReAct 生成的推理轨迹更可靠,事实驱动的,不容易出现幻觉或错误传播。
- 结合 ReAct 和 CoT-SC 方法可以进一步提高性能,并充分利用内部知识和外部知识。
- 决策任务:
- 在 ALFWorld 和 WebShop 任务上,ReAct 的性能优于模仿学习和强化学习方法。
- ReAct 生成的推理轨迹可以帮助模型更好地规划行动,并有效地探索环境。
- ReAct 的推理轨迹可以由人类进行编辑,从而更好地控制模型的行为。
与现有方法的对比:
- Chain-of-Thought (CoT): CoT 可以揭示 LLM 的推理过程,但容易出现幻觉和错误传播。
- 模仿学习 (IL): IL 可以学习专家的行为,但缺乏灵活性,无法适应新的任务。
- 强化学习 (RL): RL 可以学习复杂的决策过程,但需要大量的数据和计算资源。
局限性:
- 标注数据需求: ReAct 的训练需要大量的人工标注数据,这对于实际应用来说可能是一个挑战。
- 推理和行动行为的有限支持: ReAct 目前对推理和行动行为的支持有限,需要进一步改进。
- 模型的可解释性: 虽然ReAct 生成的推理轨迹更容易理解,但对于一些复杂的推理过程,仍然难以解释。
未来方向:
- 改进标注数据收集: 开发自动标注或半自动标注方法,以减少人工标注数据的需求。
- 扩展推理和行动行为: 研究更丰富的推理和行动行为,以支持更复杂的任务。
- 提高模型的可解释性: 开发新的技术,例如可视化或解释方法,以帮助人类理解模型的决策过程。
- 与其他方法结合: 将 ReAct 与其他方法结合,例如强化学习,以进一步提高模型的性能和灵活性。
总结:
ReAct 是一个很有潜力的方法,它将推理和行动结合起来,为解决各种语言推理和决策任务提供了新的思路。论文的实验结果也表明,ReAct 在推理和行动方面都优于现有的方法。未来可以进一步改进 ReAct 的性能和扩展其应用范围,从而推动大语言模型在各个领域的应用。