探索AI Agent的认知架构及记忆的实现机制
大语言模型在过去几年中迅猛发展,已成为推动人工智能领域前进的核心力量。基于大型语言模型(LLM)的AI智能体,正逐渐成为实现大模型应用落地的关键途径。

AI Agent的认知架构正成为研究的热点领域。在我看来,AI Agent认知架构不仅能够提高Agent的性能和效率,还能够增强其可扩展性和适应性,使其能够更好地应对不断变化的需求和环境。

为了深入探究这一问题,我们从人类的认知系统中汲取灵感,根据对行业前沿文章的研究,结合近期的实践,谈一谈关于Agent认知架构和记忆的实现内容,与大家分享。

从人类的认知系统看AI Agents

 

今天的AI与人类相比较,在认知系统层面的差异具体体现在哪些方面?

 

人的大脑面对不同的任务会做出不同的反应。世界著名的认知心理学家、诺贝尔经济学奖得主Daniel Kahneman在《Thinking, Fast and Slow》中对人类的认知系统进行了两种定义分类:

系统 1:是一种响应迅速且自动化的推理过程。

  • 优点是响应迅速,但在复杂任务中表现可能不理想。

 

  • 反应快但改变较慢,就像人类的习惯难以快速改变。

 

系统 2:是慢速、深思熟虑的推理过程。

  • 通过生成中间推理步骤来解决问题。依赖记忆调用,存储思考过程和对行为结果的反思,累积经验以优化后续行为。

 

  • 反应时间比系统1慢,但改变所需时间相对较快。

 

  • 优点是推理能力强,不过需要更多计算资源和时间。


LLM的工作方式可以类比于人类认知系统中的系统1:过往的训练数据直接决定了模型擅长的领域,无论面对简单或者困难的问题,语言模型输出的速度不会有太大区别,这是LLM的本能。

和人类相比较,我们发现AI目前缺少的正是系统2的能力。而构建系统2,就是要让AI具有自己组织系统1的网络来构建新工具、解决复杂问题的能力。

这也就是AI Agent的概念,通过对环境的感知,完成不同的子任务,从而来实现更复杂的目标。

系统2通过语言推理、记忆调用、自我思考和规划,将复杂问题拆解成由系统1组成的流程单元,分别执行不同的任务从而达到目的。并在多次实践和运用中沉淀为“经验”数据提供给系统1去训练,从而让系统1获得新的能力。



总的来说,系统 1 和系统 2 共同作用,影响着我们的思考、判断和决策过程。

那么,如何让每个智能体都拥有系统2的能力,使其能够调用长期记忆、计划和反思来解决复杂问题,实现从系统1到系统2的扩展呢?

我们认为现在有许多关于⼈类记忆的理论与体系都可以应⽤到Agent 上,从而让Agent 模仿⼈脑的思考,例如下文所提到的CoALA框架。

Agent认知系统的架构

 

在《Cognitive Architectures for Language Agents》论文中,作者结合生产系统提出了一个概念性的框架CoALA(具有认知架构的Agent),基于LLM设计出Agent系统的各种使用方法提升信息处理、推理、自主学习和决策能力。

图源:《Cognitive Architectures for Language Agents》

Agents的认知架构包含多个关键要素,如感知、学习、推理和决策等。

感知是获取外部信息的通道,就像我们的眼睛和耳朵感知世界一样,Agents 通过传感器收集数据。

 

学习则是不断优化自身能力的过程,通过大量的数据训练,提升对各种情况的理解和应对能力。例如,在自动驾驶领域,车辆中的Agents需要不断学习交通规则和不同路况的处理方式。

 

推理是根据已有的知识和信息进行逻辑思考,做出合理的判断。

 

决策则是基于推理的结果选择最佳的行动方案。

 

AI Agent的记忆分类

结合CoALA框架,我们按照信息的内容,将信息组织进Agent的多个记忆模块,包括短期工作记忆和三种长期记忆:情景记忆、语义记忆和程序记忆。


短期记忆:

工作记忆(Working Memory) :反映Agent的当前情况,它存储了Agnet最近的感知输⼊、⽬标以及中间推理的结果。

长期记忆:

  • 程序记忆(Procedural Memory):存储⽣产系统本⾝Agent⾏为的规则集和程序。

 

  • 语义记忆(Semantic Memory): 存储一些基础知识、世界知识。

 

  • 情景记忆(Episodic Memory):存储Agent过去的历史事件流或者行为经验。

 

这些记忆组件共同构成了CoALA框架下Agent的记忆系统,使得Agent能够存储信息、进行推理、做出决策,并从经验中学习。

 

短期(工作)记忆是如何工作的?

 

工作记忆在Agent的决策过程中起着关键作用,它与LLM、推理、检索等动作紧密配合,不断更新和处理信息,以支持Agent在不同情景下做出合适的决策和行动。

信息处理(Grounding Action)将Agent执行动作后,得到的环境反馈处理成文本,输入到工作记忆中。

 

检索(Retrieval Action)将信息通过规则或密集检索等方式,从长期记忆中读入工作记忆中。

 

推理(Reasoning Action)使Agent能够处理⼯作记忆的内容以⽣成新的信息。与检索不同,推理是从⼯作记忆中读取并写⼊⼯作记忆。

 

长期记忆是如何工作的?

 

长期记忆主要是通过学习动作(Learning Action)将信息写入不同的长期记忆模块中来实现的,其中不同记忆类型学习机制不同:

  • 程序记忆的更新:更新推理、检索、新学习或者决策的方法。

 

  • 语义记忆的更新:将世界模型中一些基于事实归纳的信息写入语义记忆。LLM通过推理原始经验并将结果推论存储在语义记忆中,为工作记忆中上下文理解等提供依据。

 

  • 情景记忆的更新:用“经验”更新情景记忆。Agent通常存储情景轨迹以更新或建立策略。Agent检索情景记忆中的附加经验可以作为推理或决策的示例。


以上这些信息会在Agent需要使用的时候,根据内容重新检索,并存入工作记忆中。

在我们的实践中,以销售管理场景举例,当销售询问线索挖掘Agent,“历史上是否有类似成功签单案例”时,Agent会根据当前客户画像检索情景记忆中类似客户的签单项目,为销售提供商机建议和指导。这就是一个调用情景记忆,并存入工作记忆的过程。

 

Agent记忆的实现

 

Agent的记忆是如何实现的?首先,我们先定义一个概念,我们把Agent不断通过跟环境的进行交互、拿到反馈、做出动作,直到目标实现,这样一个不断迭代的过程称之为“Trial”。

用a表示Agent做出的动作,用o表示Agent做出动作后环境的反馈,则一个Trial可以表示为:

该定义来自于《A Survey on the Memory Mechanism of Large Language Model-based Agents》

 

我们将Agent的记忆按照来源不同分为三大类:

 

  • Trial内的信息:同⼀个 Trial 内的历史信息。Trial 内的历史信息与未来的动作是最有关联的,⼏乎所有模型的记忆都包含 Trial 内信息。然⽽,完全只依赖 Trial 内的信息作为记忆可能会让Agent⽆法有效积累知识。

 

  • 跨Trial的信息:其他 Trial 的历史信息。跨 Trial 的信息能使Agent积累多种成功与失败的案例,总结失败的原因或成功的⾏动模式。

 

  • 外部知识:⽆论 Trial 内的信息还是跨 Trial 的信息,都要求Agent去与环境进⾏交互才能获得,⽽外部知识可以让Agent直接获取⼤量的、最新的、质量良好的信息。

 


比如,我们设计一个Agent,目标是辅助分析销售线索是否有效,这里Agent可以通过和用户对话、理解用户意图、收集信息并做出反馈,最后得出该线索是否为有效线索的结论,即完成了Agent的目标。在这样的一轮对话中,上下文、用户输入和Agent的输出信息为该Trial内的信息;而当用户询问到是否有类似项目时,Agent会去跨Trial寻找相关成功和失败的案例以支持对目标的判断;用户如果询问该客户当前最新资讯等信息,Agent会分析意图并调用web search,与互联网进行交互从而获得外部实时的知识。

我们将Agent的记忆按照类型不同分为两类:

 

1. ⽂本形式:⽂本形式的记忆显式地以⾃然语⾔的⽅式存储。

⽂本形式是当前主流的存储记忆的形式,它具有更强的可解释性,更容易实现,能更⾼效地读写。

⼀般有4种信息以⽂本的形式存储:完整的历史信息、最近的历史信息、⽤于检索的历史信息、外部知识。

  • 完整的历史信息

 

该⽅法在上下⽂中记录所有历史信息,虽然可以存储⼤量信息,但要消耗⼤量计算资源、推理时间,超⻓的上下文也会影响 LLM 的准确性与稳定性。

 

  • 最近的历史信息

 

只存储最近的信息能提升记忆的利⽤率,但在⻓期的任务中,该⽅法容易忽略⻓距离依赖的关键信息。

 

  • ⽤于检索的历史信息

 

检索的⽅法基于内容的关联程度、重要程度来选取记忆信息,不依赖于时间,因此不会忽略⻓距离的重要信息。该⽅法⾮常依赖于检索策略的准确度与效率,且需要信息以统⼀的⽅式存储,不能直接应⽤于处理外部环境中多样的信息。

 

  • 外部知识

 

⼀些Agent通过调⽤⼯具来获取外部知识,如调⽤ Wikipedia、数学求解器等,能显著提升其能⼒。然⽽,外部知识的可信度不⼀定很⾼,且Agent需要消耗计算资源来学会使⽤并理解外部⼯具,调⽤API 也会产⽣隐私、数据安全等问题。

2. 参数形式:参数形式的记忆隐式地影响模型的⾏为。

 

  • 微调

 

微调能有效地将专业知识注⼊ LLM,但可能导致过拟合,使 LLM 遗忘原本的知识。微调需要⼤量的训练数据,以及计算资源和时间消耗。微调也不能很好地处理与环境的动态交互,因此主要被应⽤于离线任务。

 

  • 知识编辑

 

知识编辑能修改特定的知识,并保持其他⽆关的信息不被影响。知识编辑适合⼩规模的记忆修改,它需要较⼩的计算资源,更适⽤于在线的任务。

 

综上,从有效性、效率和可解释性来说,两种记忆存储形式有如下优劣:

 

 

根据不同的场景和应用,我们需要对文本形式和参数形式这两种类型的记忆进行权衡。文本记忆适用于需要回忆近期交互的任务,如对话和上下文特定的任务。例如,在Agent与用户进行对话时,需要回忆之前的对话内容来理解当前的语境,这时文本记忆就可以发挥作用。对于需要大量内存或成熟知识的任务,参数记忆可能是更好的选择。

 

通过对人类认知系统的深入理解,我们发现让Agent拥有类似于系统2的能力是至关重要的,这将使它们能够更好地解决复杂问题。

 

在未来的研究中,我们需要进一步探索如何让每个Agent都具备系统2的能力,使其能够充分调用长期记忆、进行计划和反思,从而更好地解决复杂问题,实现从系统1到系统2的扩展。同时,持续优化Agent的认知架构和记忆实现机制,也是提高Agent性能和智能水平的关键。

 

参考文献:

  • https://arxiv.org/pdf/2309.02427 《Cognitive Architectures for Language Agents》

 

  • https://arxiv.org/abs/2404.13501 《A Survey on the Memory Mechanism of Large Language Model-based Agents》

 

  • https://mp.weixin.qq.com/s/m-3HSVp0WLVSlw72pjIXiQ

 

  • 《Thinking, Fast and Slow》 Daniel Kahneman