[TMLR2023]Cognitive Architectures for Language Agents
Background
Agent(智能体)指某一个实体,能根据外部的环境,自主做出决策和行动。一个简单的agent示例是一个温度控制器,它能根据环境的温度,自动调节加热器的开关。
在研究中,这被定义为认知架构(Cognitive Architecture),执行过程包括感知(perception)、记忆(memory)和规划(planning)等。其中一个例子,Soar架构可以表示为:
Soar有多种memory:
- working memory:它反映了agent当前状态,用于存储agent的感知输入、目标以及中间、内部推理的结果。
- long term memory:它又分为3种:
- procedural memory:存储agent的规则和程序,决定agent的行为。
- semantic memory:存储外界环境的事实和知识。
- episodic memory:存储agent历史行为。
Soar可以通过模拟或现实中的机器人系统实例化,因此需要配备执行器,使得身体动作和语言能够交互学习。这种将抽象指令映射为执行动作的过程,被称为grounding。
Soar实现了一个决策(decision making)循环,用于评估产品并应用最匹配的产品(如Fig.2B).决策程序存储在procedural memory中。每轮决策,智能体都将根据working memory检查前置条件。在提议和评估阶段(proposal and evaluation phase),会产生一组动作并排序选择最佳的动作执行,例如修改working memory或发出动作命令。
Soar支持多种学习(learning)模式,外界新信息可以写入semantic memory,过去经验写入episodic memory,这些知识可以帮助决策。Agent的行为可以通过强化学习(reinforcement learning)来调整,以最大化某个目标函数。此外,Soar能更新procedural memory,写入更新源代码。
在过去几十年,cognitive architectures被广泛用于机器人系统、模拟系统,但很少涉足AI领域,因为:1. 认知架构局限于那些能够用逻辑短语描述的领域; 2. 需要许多预先设定的规则才能运行。
但大语言模型(large language models,LLM)的出现解决了这俩问题:1.LLM可以处理任意文本,不需要依赖固定的逻辑表达式。2.LLM可以预训练学习Internet上的数据,而不需要用户提供。因此,研究人员开始把LLM与cognitive architectures结合,利用LLM隐含的对世界知识的理解,增强基于逻辑符号的决策,实现基于LLM的agent。
一种概念框架:Cognitive Architectures for Language Agents (CoALA)
CoALA是作者提出的概念框架,即理想中的基于LLM agent,可以看作是加入LLM的Soar。这次,再重新审视下加入LLM后,Soar的各个模块变化。
CoALA将知识信息存入memory,行为动作分为外部动作(external actions)和内部动作(internal actions)。
- external actions:用于与外部环境交互,将抽象指令映射为具体动作(grounding)。
- internal actions:用于与内部memory交互。决定哪种memory被读取或写入。internal memory被分为3类:
- 检索(retrieval):从long-term memory中读取信息。
- 推理(reasoning):使用LLM更新short-term memory。
- 学习(learning):更新写入long-term memory。
Memory
- Working memory
working memory维护活跃且随时可用的信息作为当前决策周期的符号变量。包括感知输入、主动知识(通过推理生成或从长期记忆中检索)以及从先前决策周期中继承的其他核心信息(例如智能体的主动目标)。LLM的上下文也是working memory的一种形式。每次LLM调用,输入都是从working memory的子集中合成,被LLM解析得到其他变量,这些变量还会被存储到working memory执行其他操作。在LLM中,working memory与long-term memory和grounding相互作用,充当语agent各个组件的连接中心。 - Episodic memory
Episodic memory存储早期决策周期的经验。这可以包括训练输入-输出对、历史事件流、之前过程的轨迹,或agent经历的其他表示。在planning阶段,episodic memory可能会被检索到working memory支持推理,或将working过程中新的信息存入episodic memory作为一种学习的形式。
- Semantic memory
Semantic memory存储智能体关于世界和自身的知识。传统的NLP/强化学习利用检索外部知识进行推理或决策,例如游戏手册或外部知识。但它们的semantic memory是固定、仅读取的。LLM agent一种学习形式是从推理中获得知识,写入semantic memory,从经验中建立世界知识。
- Procedural memory
LLM agent存在两类procedural memory。隐式的:LLM参数权重;显示的:关于agent的代码。关于agent的代码又可以分为2类:实现动作的(reasoning,retrieval,grounding and learning)和实现决策的。
与最初可能是空的甚至不存在的Episodic/Semantic memory不同,Procedural memory必须由设计者使用适当的代码进行初始化以引导代理。最后,虽然通过写入Procedural memory来学习新动作是可能的,但它比写入情节或语义记忆的风险要大得多,因为它很容易引入错误或允许代理颠覆其设计者的意图。
Grounding actions
Grounding actions执行外部动作,将外部反馈送入working memory。为了简化agent的交互,外部环境信息通常使用文本描述。外部环境可分为3类:
- 物理环境(physical environment):这是最古老的环境,agent在这个环境感知的信息包括:视觉、音频和触觉,并将它们转为文本描述。
- 与人类或其他agent的对话(dialogue with humans or other agents):经典的语言交互包括:接受指令,主动向人学习。语言agent的结果可通过寻求帮助或澄清得到优化。
- 数字环境(digital environment):包括游戏,APIs,网站,代码执行交互。相较于物理环境,数字环境低成本、易测试,许多额外的知识和计算(搜索,计算器,翻译)可通过API调用,这被视为“一次性(single-use)”数字环境。
Retrieval actions
在CoALA中,检索将长期记忆读取到working memory。根据信息和内存类型,检索分为基于规则的、稀疏和稠密检索
例如:
- Voyager(Wang 等人,2023a)通过稠密检索,从技能库中检索基于代码的技能,实现Minecraft世界的交互,即从procedural memory检索得到grounding的过程。
- Generative Agents (Park et al., 2023)结合recency(rule-based)、重要性(reasoning-based)和相关性(embedding-based)分数,从episodic memory中检索相关事件。
- DocPrompting(Zhou et al., 2022a)提出利用库文档辅助代码生成,这可以看作是从语义记忆中检索知识。
Reasoning actions
Reasoning 使agent处理working memory生成信息。与检索(从长期记忆读取到工作记忆)不同,推理是从工作记忆中读取和写入。这使得agent能提炼最近的信息。并支持学习(将结果写入长期记忆)或决策(将结果作为后续LLM调用的附加上下文)。
Learning actions
Learning actions 将信息写入long-term memory。包括
- 使用经验更新episodic memory:强化学习的agent通过存储 episodic 轨迹(智能体在一个完整任务中的状态、动作和奖励序列)更新参数策略或建立非参数策略。对于LLM agent,episodic memory可以作为以后检索为推理或决策的示例和基础。
- 使用知识更新semantic memory:一些工作应用 LLM 来推理原始体验并将产生的推理存储在语义记忆中。例如,Reflexion使用 LLM 来反思失败的结果,并将结果(例如,“厨房里没有洗碗机”)存储为语义知识,以附加到 LLM 上下文中,以解决以后的请求。一些机器人相关工作使用视觉语言模型来构建环境的语义图,并通过查询图以执行指令。
- 更新LLM参数(procedural memory):可以在满足一定条件/前提下,微调LLM参数。
- 更新agent 代码(procedural memory):CoALA允许agent更新自己的代码,实现其他行为(推理、grounding、检索、学习和决策)的修改
强化学习 agent通常固定一种学习方式(例如 Q-learning、PPO 或 A3C)并通过更新模型参数进行学习,但语言代理可以从多种学习形式过程中进行选择。这使他们能够通过存储任务相关语言(比参数更新更便宜、更快捷)来快速学习。
Decision making
可选的动作包括:grounding、learning、reasoning、retrieving,但agent该如何选择动作?这由决策程序决定,这是最“顶级”程序。在每个周期中,程序代码定义了一系列推理和检索动作,以提出和评估替代方案(规划阶段),然后执行选定的动作(执行阶段)——然后循环再次循环。
- Planning Stage. 包括提议(proposal)和评估(evaluation)阶段。
proposal子阶段会生成一个或多个候选作。通常的方法是使用推理(和可选的检索)来采样一个或更多来自 LLM 的外部grounding action。对于作受限的简单域,提议阶段可能只包含所有action。更复杂的agent使用 if-else 或 while-if 代码结构;而部署在定义明确的域中的代理可以利用结构化模拟器来生成合理的提议。
evaluation子阶段会评估提议的动作,选择最佳动作。评估的方法包括:基于规则的评估、基于经验的评估、基于推理的评估、基于学习的评估。评估的结果是一个或多个动作,这些动作将被执行。如果提出了多个动作,评估子阶段会评价每个动作。包括:、LLM(困惑度perplexity)值、学习到的值(learned values)、LLM推理或它们的某种组合来实现。特别地,LLM推理可以通过内部模拟来自外部世界的 grounding 反馈来帮助评估动作。
selection子阶段,会选择一个动作或全部抛弃并重新循环,根据动作值可以使用argmax、softmax或投票选择。
- Execution。根据agent的源代码执行动作,包括外部动作(grounding action,例如调用API)和内部动作(例如写入memory)
一些代表
SayCan(Ahn等,2022)将一个语言模型与机器人交互结合,应用于厨房场景,以满足用户指令(例如,“我刚锻炼完,你能给我拿点饮料和零食恢复一下吗?”)。它的长期记忆仅包含程序性内容(一个LLM和一个学习到的价值函数)。其动作空间完全是外部的——由551个固定的 grounding 技能组成(例如,“找到苹果”,“去桌子那里”),没有内部推理、检索或学习的动作。在决策过程中,SayCan通过结合LLM和学习到的价值函数来评估每个动作,以平衡技能的有用性和 groundedness(与现实世界的契合度)。因此,SayCan将LLM(与学习到的价值函数结合)用作单步规划器。
ReAct(Yao等,2022b)是一个与多种数字环境(例如,维基百科API、文字游戏、网站)结合的语言智能体。与SayCan类似,它缺乏语义或情景记忆,因此没有检索或学习的动作。其动作空间由(内部)推理和(外部)grounding 组成。它的决策周期固定为:使用单个推理动作分析情况并(重新)制定行动计划,然后生成一个 grounding 动作,而没有评估或选择阶段。ReAct可以被视为利用内部和外部动作的最简单的语言智能体,也是展示它们协同效应的开创性工作:推理帮助指导行动,而行动则提供环境反馈以支持推理。
Voyager(Wang等,2023a)是一个与Minecraft API结合的语言智能体。与SayCan通过学习到的价值函数实现感知 grounding 不同,Voyager的 grounding 仅基于文本。它具有长期程序性记忆,存储了一个基于代码的 grounding 程序库,也称为技能(例如,“combatZombie”,“craftStoneSword”)。这个库是分层的:复杂技能可以将更简单的技能作为子程序调用(例如,如果库存中没有剑,“combatZombie”可能会调用“craftStoneSword”)。最令人印象深刻的是,它的动作空间包含了所有四种类型的动作:grounding、推理、检索和学习(通过添加新的 grounding 程序)。在决策周期中,Voyager首先通过推理提出一个新的任务目标(如果工作记忆中缺少目标),然后通过推理提出一个基于代码的 grounding 程序来解决任务。在下一个决策周期中,Voyager根据环境反馈推理以确定任务是否完成。如果成功,Voyager会选择学习动作,将 grounding 程序添加到程序性记忆中;否则,它会通过推理优化代码并重新执行。通过与ReAct、AutoGPT等基线方法以及没有程序性记忆的消融实验对比,长期记忆和程序性学习的重要性得到了实证验证。Voyager在探索区域、掌握技术树以及对未见任务的零样本泛化方面表现更优。
生成式智能体(Park等,2023)是一类与沙盒游戏结合的语言智能体,能够与环境和其他智能体进行交互。其动作空间同样包含所有四种类型的动作:grounding、推理、检索和学习。每个智能体都具有长期情景记忆,以列表形式存储事件。这些智能体通过检索和推理生成对情景记忆的反思(例如,“我现在喜欢滑雪。”),然后将其写入长期语义记忆。在决策过程中,智能体从语义记忆中检索相关的反思,并通过推理制定一天的高层次计划。在执行计划时,智能体会接收到一系列 grounding 观察结果;它可以对这些观察结果进行推理,以维持或调整计划。
思维树(Tree of Thoughts, ToT)(Yao等,2023)可以被视为一种特殊的语言智能体,它只有一个外部动作:提交推理问题(如24点游戏、创意写作、填字游戏)的最终解决方案。它没有长期记忆,内部动作空间仅包含推理,但与之前所有智能体不同的是,它具有深思熟虑的决策机制。在规划过程中,ToT基于LLM推理迭代地提出、评估和选择“思维”(推理动作),并通过树搜索算法维护这些思维,以实现全局探索以及局部回溯和前瞻。
Reference
- Sumers, Theodore R., et al. "Cognitive architectures for language agents." arXiv preprint arXiv:2309.02427 (2023).