# 热门搜索 #
搜索
探索AI Agent的认知架构及记忆的实现机制
7890点击    2024-08-01 11:57

Agent的记忆实现和调用是提高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


文章来源于“周健 澜码科技”



关键词: AI , Agent , 智能体 , AI架构 , 模型训练
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

2
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner