论文阅读记录 —— LLM Agent
ReAct
ReAct: Synergizing Reasoning and Acting in Language Models
- 发表:ICLR
- 时间:2023
- 机构:普林斯顿大学 & 谷歌
摘要总结
虽然大模型在语言理解和交互式决策等任务中表现出色,但它们的推理(例如思维链提示)和行动(例如行动计划生成)能力通常被识别为单独的研究领域。ReAct 论文提出了一种将推理和行动相结合的新方法,允许 LLM 以交错的方式生成推理轨迹和特定任务的行动。推理轨迹帮助模型归纳、跟踪和更新行动计划以及处理异常,而Action允许它与外部源(例如知识库或环境)交互并收集附加信息。ReAct 在多个任务上取得了成功,并在表现、可解释性和可信度方面优于现有基线。
研究动机
- 人脑智能的启发: 人类能够将任务导向的行动与语言推理(或内心独白)无缝结合,这在人类认知中发挥着重要作用,例如自我调节、策略规划和保持工作记忆。
- 现有方法的局限性:
- 链式思维推理(CoT): CoT 虽然能进行推理,但通常是静态的,无法与外部世界交互,导致推理过程中出现事实虚构和错误传播等问题。
- 行动生成: 最近的行动生成方法通常将多模态观察转换为文本,使用语言模型生成特定领域的动作或计划,但缺乏对高级目标进行抽象推理或维持工作记忆的能力。
主要贡献
- 提出了一种新的提示方法ReAct 模型,将推理和行动相结合,使 LLM 能够以交错的方式生成推理轨迹和特定任务的行动,从而实现更有效的推理和决策。
- 多基准评估: 在多个基准测试(包括问答、事实验证、文本游戏和网页导航)中进行了广泛的实验,证明了 ReAct 在少量学习设置下优于仅进行推理或行动生成的现有方法。
- 通过系统地进行消融实验和分析,研究了行动在推理任务中的重要性以及推理在交互任务中的重要性。
- 分析了 ReAct 在提示设置下的局限性(即推理和行动行为的有限支持),并进行了初步的微调实验,展示了 ReAct 在更多训练数据下改进的潜力。
叙事逻辑
该文章首先从人类智能出发,指出人类能够将任务导向的行动与语言推理相结合,从而进行有效的认知活动。随后,文章指出现有方法(如 CoT 和行动生成)的局限性,例如 CoT 缺乏外部世界交互导致虚构事实,行动生成缺乏高级目标推理能力。接着,文章提出了 ReAct 模型,该模型通过将推理和行动相结合,使 LLM 能够更有效地进行推理、规划和决策,并与外部环境进行交互。文章通过跨任务评估证明了 ReAct 的有效性,并分析了其可解释性和可控性。最后,文章探讨了 ReAct 的局限性,并提出了改进方向,例如模型细化和使用更多训练数据。
方法
ReAct 通过将 LLM 的行动空间扩展到包括语言行动(推理轨迹),允许模型进行动态推理和规划,同时与外部环境进行交互。首先,使用Few-Shot(人类轨迹)指导 LLM 生成推理轨迹和行动,这些示例包括分解目标、提取信息、应用常识等。接着,LLM 可以通过交互式地与外部环境(如维基百科)API 进行交互来支持推理,例如检索信息和更新行动计划。
实验
- 数据集和任务:
- 知识密集型推理任务:
- 多跳问答: HotpotQA,需要推理两个或更多维基百科段落来回答问题。
- 事实验证: Fever,需要根据维基百科段落判断陈述是否被支持、反驳或信息不足。
- 决策制定任务:
- 基于文本的游戏: ALFWorld,需要通过文本行动与模拟家居环境交互,实现高层次目标。
- 网页导航: WebShop,需要根据用户指令进行网页交互,购买满足要求的产品。
- 知识密集型推理任务:
- 行动空间:
- 知识密集型推理任务: 简单的维基百科 web API,包括搜索实体、查找字符串和完成回答三种行动。
- 决策制定任务: 根据任务类型设计,例如 WebShop 包含搜索、选择产品、选择选项和购买等行动。
- 基线方法:
- 标准提示: 移除所有推理轨迹和行动,只提供问题和观察。
- 思维链提示 (CoT): 移除行动和观察,只进行推理。
- 自我一致性 (CoT-SC): 使用少量 CoT 轨迹作为样本,并选择多数答案。
- 仅行动提示: 移除推理轨迹,模型只与外部环境交互。
- 评估指标:
- 知识密集型推理任务: 准确匹配、幻觉、推理错误、搜索结果错误、幻觉。
- 决策制定任务: 成功率、得分、成功率和专家人类的表现。
- 其他实验:
- GPT-3 实验: 验证 ReAct 提示的有效性在不同大型语言模型上的通用性。
- 人类在环 (HITL) 行为纠正: 允许人类编辑推理轨迹,纠正模型行为。
- 微调: 使用正确答案轨迹微调较小的语言模型,使其能够解码推理轨迹和行动。
评价
后面agent范式的基准,很多都是基于这个进行改进的
Reflexion
Reflexion: Language Agents with Verbal Reinforcement Learning
- 发表:NeurIPS
- 时间:2023.10.10
- 机构:美国东北大学
摘要总结
agent越来越多地用于与外部环境进行交互。然而,对 agent 来说,进行传统的强化学习方法需要大量的训练样本和昂贵的模型微调。论文提出了 Reflexion,不通过更新权重,而是通过语言反馈来增强语言 agent。Reflexion 足够灵活,可以合并各种类型和来源的反馈信号,并在跨不同任务(顺序决策、编码、语言推理)的基准代理上获得显着改进。例如,Reflexion 在 HumanEval 编码基准上实现了 91% 的 pass@1 准确率,超过了之前最先进的 GPT-4 的 80%。我们还使用不同的反馈信号、反思合并方法和 agent 类型进行消融分析。
研究动机
LLM-based Agent的在与外界环境交互、自主决策方面展现出巨大潜力,而传统强化学习方法在 agent 应用上具有局限性。
主要贡献
- 提出了 Reflexion,一种“口头”强化的新范式,它将策略参数化为代理的记忆编码与 LLM 参数选择配对。
- 探索了 LLM 中自我反思的这一新兴特性,并根据经验表明,自我反思对于通过少量试验学习复杂任务非常有用。
- 引入了 LeetcodeHardGym 数据集:一个包含 40 个具有挑战性的 Leetcode 困难问题的代码生成 RL gym 环境。用于测试代码生成代理的能力,并提供一个新的基准。
- 实验表明 Reflexion 在多个任务的强大基线上实现了改进,并在各种代码生成基准上取得了最先进的结果。
叙事逻辑
- 提出问题:LLMs 作为语言代理在处理外部环境方面展现出潜力,但传统强化学习方法学习效率低下。
- 提出解决方案:提出 Reflexion 框架,利用语言代理的自我反思能力进行强化学习;通过语言反馈而非参数更新来增强代理,并存储反思文本以指导后续决策。
- 论述 Reflexion 的优势:相比于传统强化学习方法,Reflexion 更轻量级,无需微调 LLM;允许更细微的反馈形式,并提供更明确和可解释的情境记忆。
- 实验验证:在决策、推理和编程任务中,Reflexion 代理的表现都优于基线方法;Reflexion 在 LeetcodeHardGym 数据集上也取得了优异的成绩。
- 讨论局限性:Reflexion 可能陷入局部最优解;需要更强的 LLM 进行自我评估;没有成功的正式保证;需要更多的安全性和道德考量;可能使自主 agent 更具可解释性。
- 总结与展望:Reflexion 框架为语言代理的快速有效学习提供了一种新的思路;未来可以探索更多高级技术,例如价值学习和离策略探索技术。
实现
- Actor:角色,使用 LLM 实现,它基于可观察的状态,利用提示生成文本和动作。
- Evaluator:评估器,用于评估 Actor 输出的质量。将生成的轨迹作为输入,计算在给定任务上下文中的奖励分数。
- Self-reflection:自我反思,使用 LLM 实现,用于生成基于语言的反思。在给出稀疏奖励信号,如二元状态(成功/失败),当前轨迹及其持久记忆内存。自我反思模型会生成细致入微且具体的反馈,这种反馈相比标量奖励提供更多信息,然后被存储在代理的内存 (mem) 中。
- Memory:内存组件,为 Agent 提供额外的上下文。它提供短期记忆和长期记忆。在推理时,Actor 根据短期和长期记忆做出决定,在强化学习设置中,轨迹历史充当短期记忆,而自我反思模型的输出则存储在长期记忆中。
- 过程:在第一次试验中,Actor 通过与环境交互产生轨迹 τ0。然后评估器产生一个分数 r0;rt 是标量奖励;为了放大 r0,自我反思模型分析 {τ0, r0} 集合以生成存储在内存 mem 中的摘要 sr0。srt 是对试验 t 的语言反馈。Actor、Evaluator 和 Self-Reflection 模型通过循环试验协同工作,直到 Evaluator 认为 τt 是正确的。每次试验后 t、srt 都会附加存入 mem。在实践中,通过存储经验的最大数量 Ω(通常设置为 1-3)来限制 mem,从而不超过 LLM 的上下文限制。
实验
- 任务类型: 选择了三种类型的任务来评估 Reflexion 的效果:
- 决策任务: 在 AlfWorld 环境中进行多步决策,例如寻找隐藏物体、移动物体等。
- 推理任务: 在 HotPotQA 数据集上进行基于 Wikipedia 的问答,需要理解和推理多个支持文档。
- 编程任务: 在 HumanEval、MBPP 和 LeetcodeHardGym 数据集上进行 Python 和 Rust 代码生成。
- 基线方法: 与多种基线方法进行比较,包括:
- ReAct: 基于大型语言模型的决策模型。
- Chain-of-Thought (CoT): 基于大型语言模型的推理模型。
- CodeT: 基于大型语言模型的代码生成模型。
- 评估指标: 根据任务类型选择不同的评估指标,例如:
- 决策任务: 成功解决任务的百分比。
- 推理任务: 答案与正确答案完全匹配的百分比。
- 编程任务: 函数体生成的准确率,以及代码是否通过单元测试。
评价
- 论文提出了一种强化学习方法。传统的调优主要是通过训练调整网络参数,而文中提出的方法则是分析错误,形成反思的文字并保存,在之后的决策中,将其作为上下文以帮助决策。
- 它利用大模型构造了角色的行为、对结果的评价、当不能达成目标时,利用大模型来反思执行过程中具体哪一步出了问题,并将其作为反思存储。这样就构造了基于当前环境的短期存储,和基于反思的长期存储,结合二者使模型在未来做出更好的决策。
- 提供了完整的代码
- 局限:依赖于 LLM 的自我评估能力(或启发式方法);无法保证成功。
Retroformer
Retroformer: Retrospective large language agents with policy gradient optimization
- 发表:ICLR
- 时间:2024
- 机构:Salesforce AI
摘要总结
一些agent通过口头反馈以完成迭代的反馈学习,他们并没有以基于reward的梯度学习来进行推理和规划。本文介绍了一种新型框架Retroformer ,旨在通过学习回顾模型来强化LLM agent。该框架利用策略梯度优化基于环境反馈的提示,从而自动调整agent的行为,使其能够独立执行面向目标的多步骤任务。与现有的agent不同,Retroformer 能够从环境反馈中学习,并利用梯度信号进行推理和规划。实验结果表明,Retroformer 代理在多个任务上表现出优异的性能,证明了其有效性。
研究动机
回顾性学习的优势显现 + 手动提示工程在更新的局限性
主要贡献
- 提出了 Retroformer,它根据环境反馈迭代微调更新LLM agent的提示。采用策略梯度方法,将 Actor LLM 作为环境的一部分,允许从各种任务的广泛奖励信号中学习。
- Retroformer关注微调 agent 架构中的回顾模型(retrospective model),无需访问Actor LLM 参数或通过它传播梯度。 Retroformer 的不可知特性(agnostic),使其成为各种基于云的 LLM 的灵活插件模块,例如 OpenAI GPT 或 Google Bard。
叙事逻辑
首先指出 LLM agent在利用环境反馈和奖励方面存在的局限性,然后介绍了现有的 LLM agent和 Transformer 强化学习技术,并将 Retroformer 与相关研究进行比较。接着,论文定义了 LLM agent、环境和回顾模型的相关符号和公式,并详细介绍了 Retroformer 框架的组成部分,包括actor模型、回顾模型(retrospective model)、记忆模块和奖励构造。随后,论文解释了如何使用策略梯度优化来微调retrospective model,并生成更有利于任务完成的提示。最后,论文在 HotPotQA、AlfWorld 和 WebShop 等真实世界数据集上进行了实验,并将 Retroformer 与其他 agent 进行了比较,结果表明 Retroformer 能够显著提高 LLM 代理的任务完成效率和学习速度。
方法
文章提出Retroformer,用策略梯度的方式调优prompt,更好的利用环境的reward。大体思路是学习一个retrospective LLM,将之前的轨迹和得分作为输入,得到一个新的prompt,这个prompt综合分析了之前的经验,从而提供一个更好的prompt。然后不断和环境交互,用PPO训练retrospective LLM。具体的,整个架构包括Actor Model,Retrospective Model和Memory Module。
- Actor Model是一个固定参数的LLM,用来输入prompt生成动作。
- Retrospective Model用来根据之前的经验生成新的prompt(Its primary function is to produce self-reflections, offering valuable feedback for diagnosing a possible reason for prior failure and devising a new, concise, high-level plan that aims to mitigate same failure.)。
- Memory Module存储长短时记忆。其中Short-term memory指当前episode,Long-term memory指Retrospective Model输出的总结了之前的失败经验的prompt。
实验
- 设置:实验使用 GPT-3 和 GPT-4 作为冻结的actor模型,LongChat 作为回顾模型,并使用 LoRA 进行微调。
- 在 HotPotQA 中,Retroformer 通过分析文本匹配度来评估答案的准确性;
- 在 AlfWorld 中,使用二元成功/失败状态作为奖励;
- 在 WebShop 中,根据商品属性和选项匹配度以及价格限制来计算奖励。
评价
真正在agent中做了一个强化学习的工作,虽然是在prompt上。另外,当前使用的是基于文本的记忆模块,可以考虑使用更复杂的记忆模块,例如知识图谱,以更好地存储和利用 LLM 代理的长期记忆。
ExpeL
MemoryBank
MemoryBank: Enhancing Large Language Models with Long-Term Memory
- 发表:arxiv
- 时间:2023.05
- 机构:中山大学
摘要总结
MemoryBank 是一种新型记忆机制,旨在解决 LLM 缺乏长期记忆的问题。它通过存储、检索和更新记忆,并总结出用户画像,使 LLM 能够更好地理解用户并适应其个性,从而提供更个性化、更具同理心的交互体验,作为一个优秀的 AI 伴侣。
研究动机
艾宾浩斯(Ebbinghaus,1964)的遗忘曲线理论中记忆随时间的保留和遗忘模式
主要贡献
- 提出 MemoryBank: 一种新型记忆机制,为 LLM 提供长期记忆能力,使其能够存储、检索和更新记忆,并绘制用户画像。(方法)
- 展示 MemoryBank 的实用性: 通过开发 SiliconFriend 聊天机器人,证明 MemoryBank 可以使 LLM 更好地理解用户并适应其个性,提供更个性化、更具同理心的交互体验。(用处)
- 验证 MemoryBank 的有效性: 通过定性和定量分析评估 MemoryBank 的有效性,结果表明其在记忆回忆、提供同理心的陪伴和理解用户画像方面表现出色。(性能)
- MemoryBank 的通用性: MemoryBank 可以与开源和闭源 LLM 配合使用,并支持中英双语,具有广泛的适用性。(通用、泛化)
叙事逻辑
首先指出了 LLM 缺乏长期记忆机制的问题,然后介绍了 MemoryBank 这种新型记忆机制,接着详细解释了 MemoryBank 的组成部分和工作原理,并通过 SiliconFriend 聊天机器人的应用案例展示了 MemoryBank 的有效性,最后通过定性和定量分析评估了 MemoryBank 的性能。
方法
MemoryBank 通过以下几个步骤实现:
- 记忆存储: 将用户与 LLM 的对话记录存储下来,并生成事件摘要和用户画像。
- 记忆检索: 使用嵌入模型和索引技术,根据当前对话内容检索相关的记忆片段。
- 记忆更新: 基于艾宾浩斯遗忘曲线理论,根据时间衰减和记忆强度更新记忆,使 LLM 能够模拟人类的遗忘和记忆强化过程。
实验
设计了 194 个探索性问题来评估模型是否能够成功回忆起相关记忆并提供适当的回答。实验结果展示了SiliconFriend在记忆回忆、提供同理心陪伴和理解用户画像方面的能力。
评价
Motivation很好,但是应用在了AI伴侣上,而且实验比较主观,都是基于人类打分。