前言
自LLM进入Agent时代,如何处理人机交互的历史信息和状态,一直是学术前沿思考的核心问题。因此,记忆模块(Memory)也就成为了研究重点。
以往研究的缺憾在于:
- 关注记忆在特定任务中的应用。如:记忆存储、检索或基于记忆的生成,却忽视了记忆动态变化背后的原子操作。
- 如何通过记忆增强模型的上下文理解能力。未深入研究记忆如何在不同时间尺度上进行整合、更新和遗忘,导致无法全面理解记忆在复杂交互中的作用机制。
- 缺乏对记忆操作的统一和全面视角。如长文本建模、长期记忆、个性化或知识编辑,未能将这些分散的研究成果整合到一个系统性的记忆架构中。
因此,作者提出一个全面的AI记忆研究框架,来解决上面这些问题。
Memory统一框架
-
首先,文章对记忆表示进行了分类,将其分为:
-
- 参数记忆(Parametric Memory)
- 上下文结构化记忆(Contextual Structured Memory)
- 上下文非结构化记忆(Contextual Unstructured Memory)
- 并从时间跨度的角度进一步区分短期记忆和长期记忆。
-
其次,文章引入了六种基本记忆操作:
-
- 巩固(Consolidation)
- 更新(Updating)
- 索引(Indexing)
- 遗忘(Forgetting)
- 检索(Retrieval)
- 压缩(Compression)
-
最后,系统地将这些操作映射到长期记忆、长期上下文、参数修改和多源记忆等上去。
记忆的分类
-
参数记忆(Parametric Memory)
-
- 参数记忆是指:模型内部参数中隐式存储的知识。
- 这些知识在预训练或后训练过程中获得,并在推理时通过前馈计算访问。
- 参数记忆是一种即时的、长期的、持久的记忆,能够快速、无上下文地检索事实和常识知识。
- 然而,它缺乏透明度,难以根据新体验或特定任务上下文选择性地更新。
- 在需要快速访问通用知识的场景中,参数记忆发挥重要作用。
- 例如,在多轮对话中,模型可以利用参数记忆快速生成与常识相关的回答,而无需每次都从外部记忆中检索。
-
上下文非结构化记忆(Contextual Unstructured Memory)
-
- 这是一种显式的、模态通用的记忆系统,能够存储和检索跨异构输入(如文本、图像、音频和视频)的信息。
- 它使Agent能够基于感知信号进行推理,并整合多模态上下文。
- 根据时间范围,它进一步分为短期记忆(如当前对话会话上下文)和长期记忆(如跨会话对话记录和持久的个人知识)。
- 在多模态交互场景中,例如:智能助手需要根据用户的语音指令和当前环境图像生成回答时,上下文非结构化记忆能够提供丰富的上下文信息,帮助生成更准确、更自然的响应。
-
上下文结构化记忆(Contextual Structured Memory)
-
- 这种记忆被组织成预定义的、可解释的格式或模式。
- 如:知识图谱、关系表或本体论,同时保持易于查询。这些结构支持符号推理和精确查询,通常补充预训练语言模型的关联能力。
- 结构化记忆可以是短期的(在推理时构建用于局部推理)或长期的(跨会话存储策划的知识)。
- 在需要进行复杂推理和知识查询的场景中,如智能问答系统,结构化记。
记忆的操作
记忆管理(Memory Management)
-
巩固(Consolidation)
-
- 将短期记忆转化为长期记忆,通常通过总结对话历史等方式实现。
- 例如,MemoryBank系统通过总结对话历史,将关键信息编码为持久记忆,支持长期对话。
- 例如,识别对话中的关键实体和事件,并将其组织成知识图谱形式,以便长期存储和检索。
-
索引(Indexing)
-
- 通过构建结构化的索引,使记忆能够被高效、准确地检索。
- 例如,HippoRAG系统受海马体理论启发,构建轻量级知识图谱,明确揭示不同知识片段之间的连接。
- 将记忆表示为节点和边的集合,其中节点表示实体或概念,边表示它们之间的关系。
- 通过为每个节点添加时间戳、关键词等属性,支持基于时间顺序和内容相关性的检索。
-
更新(Updating)
-
- 根据新信息对现有记忆进行更新,以保持记忆的时效性和一致性。
- 例如,NLI-transfer系统通过选择性编辑,管理记忆中的过时信息。
- 对于参数记忆:采用定位和编辑机制,直接修改模型参数中与特定知识相关的部分。
- 对于上下文记忆:通过总结、修剪或提炼等技术,对记忆内容进行重组或替换。
- 例如,识别对话中的新信息,并将其与现有记忆进行对比,对过时或错误的信息进行修正。
-
遗忘(Forgetting)
-
- 选择性地删除不再相关或有害的记忆内容,以保护隐私、安全或符合合规要求。
- 例如,FLOW-RAG系统通过基于RAG的遗忘技术,从知识库中删除特定信息。
- 在参数记忆中,通过修改模型参数,擦除特定知识。
- 在上下文记忆中,通过基于时间的删除或语义过滤,丢弃不再相关的内容。
- 例如,通过设置记忆的过期时间或根据隐私政策的要求,删除用户不希望被记住的信息。
记忆利用(Memory Utilization)
-
检索(Retrieval)
-
- 基于查询的检索(优化查询公式和适应性)
- 基于记忆的检索(增强记忆候选的组织和排名)
- 基于事件的检索(根据时序和因果结构检索记忆)
-
-
根据给定的查询,从记忆中选择最相关的记忆条目。
-
例如,LoCoMo系统通过基于事件的检索,根据时序和因果结构检索记忆。
检索的目标可以是单一查询、复杂的多轮对话上下文,也可以是纯文本输入、视觉内容或更多模态。
-
检索方法可以分为:
-
例如,采用多跳图遍历技术,通过图结构中的路径,逐步检索与查询相关的记忆。
-
例如,对于一个关于事件发展的问题,系统可以通过图中的时间线和因果关系链,逐步找到与问题相关的记忆片段。
-
-
压缩(Compression)
-
- 预输入压缩:在没有检索的长上下文模型中,对全上下文输入进行评分、过滤或总结以适应上下文限制
- 后检索压缩:在记忆访问后,通过上下文压缩或参数压缩将检索到的内容进行压缩)。
-
- 在有限的上下文窗口下,通过保留关键信息并丢弃冗余信息,优化上下文的使用。
- 压缩可以分为:
- 与记忆巩固(在记忆构建过程中总结信息)不同,压缩侧重于在推理时减少记忆。
- 例如,通过提取关键句子或段落,将长文本压缩为更短的摘要。
- 在处理长文本或大量信息时,压缩操作能够提高系统的效率。
- 例如,在文档摘要系统中,通过压缩长文档,系统能够快速生成简洁的摘要,方便用户快速了解文档的主要内容。
长期上下文(Long-context Memory)
长期上下文记忆涉及处理大量多源外部记忆的挑战,尤其是在对话搜索等场景中。
主要涉及两个方面:
- 参数效率(Parametric Efficiency)
- 上下文利用(Contextual Utilization)
参数效率(Parametric Efficiency)
-
KV缓存丢弃(KV Cache Dropping)
-
- 通过丢弃不必要的KV缓存来减少缓存大小。例如,StreamingLLM采用Λ形稀疏模式,动态丢弃KV缓存。
- 静态丢弃方法根据固定模式选择不必要的缓存,而动态丢弃方法则根据查询或模型行为(如注意力权重)在推理过程中决定丢弃哪些KV缓存。
- 例如,通过分析注意力权重,识别出对当前推理贡献较小的KV缓存,并将其丢弃。
-
KV缓存存储优化(KV Cache Storing Optimization)
-
- 通过压缩技术,以更小的存储空间保留整个KV缓存。例如,LESS方法将不重要的缓存条目压缩为低秩表示。
- 采用动态量化技术,如KVQuant方法,对KV缓存进行量化,以减少内存分配。例如,通过将KV缓存中的浮点数量化为低位表示,显著降低存储需求。
-
KV缓存选择(KV Cache Selection)
-
- 根据查询选择性地加载所需的KV缓存,以加速推理。例如,QUEST方法采用查询感知的KV缓存选择,检索关键的KV缓存以加速推理。
- 采用近似最近邻搜索技术,如RetrievalAttention方法,快速检索与查询最相关的KV缓存。例如,通过构建一个高效的索引结构,快速定位与当前查询最相似的KV缓存。
上下文利用(Contextual Utilization)
-
上下文检索(Context Retrieval)
-
- 增强LLMs从上下文记忆中识别和定位关键信息的能力。例如,GraphReader方法通过将文档分解为图结构,有效选择上下文。
- 采用基于图的检索技术,如CGSN方法,通过图结构中的路径和关系,快速定位与查询相关的上下文片段。
- 例如,通过构建一个文档的图表示,将句子作为节点,句子之间的关系作为边,通过图遍历技术检索与问题最相关的句子。
-
上下文压缩(Context Compression)
-
- 通过压缩技术优化上下文记忆的利用,减少输入序列长度。例如,xRAG方法通过将上下文文档编码为文档嵌入,实现软提示压缩。
- 采用硬提示压缩技术,如Lee等人提出的方法,直接将长输入片段压缩为更短的自然语言片段。例如,通过训练一个生成模型,将长文本压缩为简洁的摘要,以便在推理时快速使用。
参数记忆修改(Parametric Memory Modification)
修改参数记忆对于动态适应存储的知识至关重要。
主要关注:编辑(Editing)、遗忘(Unlearning)和持续学习(Continual Learning)三种方法。
编辑(Editing)
-
定位 - 编辑(Locating - then - Editing)
-
- 例如,ROME方法通过在单个MLP层的权重上执行秩一更新,实现知识编辑。
- 例如:MEMIT方法,通过优化一个松弛的最小二乘目标,实现高效的批量编辑。
- 例如,通过计算模型权重与目标权重之间的差异,找到需要修改的权重部分,并进行更新。
-
元学习(Meta Learning)
-
- 通过一个编辑器网络,预测目标权重的变化,实现快速和稳健的修正。
- 例如,MEND方法通过将梯度分解为秩一外积形式,实现更高效的编辑。
- 例如:KE方法,通过一个超网络学习如何修改梯度,实现对模型权重的动态调整。
-
提示(Prompt)
-
- 例如,IKE方法通过上下文学习(ICL),在不修改模型权重的情况下实现知识编辑。
- 例如:MeLLo方法通过将问题分解为多个子问题,并为每个子问题设计专门的提示,引导模型生成正确的答案。
-
附加参数(Additional Parameters)
-
- 例如,Larimar方法通过引入一个解耦的潜在记忆模块,在测试时条件化LLM解码器,而无需参数更新。
- 例如:MEMORYLLM方法,通过在冻结的LLM中引入一个固定大小的记忆池,逐步更新新知识。
遗忘(Unlearning)
-
定位 - 遗忘(Locating - then - Unlearning)
-
- 例如,WAGLE方法通过双层优化计算权重归因分数,指导选择性微调。
- 例如:ULD方法,通过计算目标和助手LLM之间的对数差异,推导出遗忘的LLM。
-
训练目标(Training Objective)
-
- 例如,FLAT方法通过最小化原始模型和目标模型预测之间的Kullback-Leibler(KL)散度,实现遗忘。
- 例如:SOUL方法,通过引入正则化项,约束模型在遗忘过程中保持其他知识的稳定性。通过在损失函数中加入一个惩罚项,防止模型在遗忘特定知识时影响其他知识的表示。
-
提示(Prompt)
-
- 例如,ICUL方法通过上下文学习实现模型的遗忘。
- ECO方法,通过破坏提示嵌入,实现遗忘。例如,通过设计一个特殊的提示,使模型在处理该提示时忘记特定的知识。
-
附加参数(Additional Parameters)
-
- 通过添加组件(如对数差异模块或遗忘层),在不重新训练整个模型的情况下调整记忆。例如,EUL方法通过引入遗忘层,实现序列遗忘。
- ULD方法,通过计算目标和助手LLM之间的对数差异,推导出遗忘的LLM。例如,通过设计一个独立的遗忘模块,存储与遗忘相关的参数,并在推理时将其与主模型结合。
持续学习(Continual Learning)
-
基于正则化的学习(Regularization - based Learning)
-
- 通过约束重要权重的更新,保护关键的参数记忆。例如,TaSL方法通过参数级任务技能定位和巩固,实现知识转移。
- 如EWC方法,通过在损失函数中加入一个惩罚项,限制对重要权重的更新。例如,通过计算权重的重要性分数,并在训练过程中对这些权重施加更大的惩罚,防止其被更新。
多源记忆(Multi-source Memory)
多源记忆涉及整合来自不同来源(包括文本、图像、视频等多模态数据)的记忆信息,以支持更复杂的推理和决策。
跨文本整合(Cross-textual Integration)
-
推理(Reasoning)
-
- 整合来自不同格式和来源的记忆,生成一致且准确的响应。例如,通过结合结构化符号记忆(如知识图谱)和非结构化文本记忆,生成更丰富的回答。
- 采用动态集成技术,如ChatDB系统,通过检索和融合来自不同领域的参数化记忆,支持更灵活的推理。
-
冲突(Conflict)
-
- 识别和解决来自异构记忆表示(如内部知识和外部知识)之间的事实或语义不一致性。
- 采用冲突检测和定位技术,如RKC-LLM框架,评估模型检测和定位上下文矛盾的能力。
多模态协调(Multi-modal Coordination)
-
融合(Fusion)
-
- 对齐和整合来自不同模态(如文本、图像、音频和视频)的信息。
- 采用统一语义投影技术,如UniTransSeR模型,将异构输入嵌入到共享表示空间中,支持跨模态检索和推理。
-
检索(Retrieval)
-
- 在多模态系统中,通过嵌入空间的相似性计算,访问跨模态的存储知识。
- 采用基于嵌入的检索技术,如QwenVL模型,通过将图像和文本映射到共享语义空间,支持跨模态检索。
最后的最后
感谢你们的阅读和喜欢,作为一位在一线互联网行业奋斗多年的老兵,我深知在这个瞬息万变的技术领域中,持续学习和进步的重要性。
为了帮助更多热爱技术、渴望成长的朋友,我特别整理了一份涵盖大模型领域的宝贵资料集。
这些资料不仅是我多年积累的心血结晶,也是我在行业一线实战经验的总结。
这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习,相信它们一定能为你提供实质性的帮助。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

大模型知识脑图
为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
经典书籍阅读
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
