前言:在上一篇AI社交中,聊到的背景是,可能未来的AI社交不是取代谁,而是在我们的社交圈子里面多一个总是在旁边聆听的AI,让AI Agent 加入你的社交圈子,就像问“元芳,你怎么看?”
为什么要实现记忆功能?
你想想,你为什么和你闺蜜成为好朋友?首先你俩一起长大,你知道她是什么学校毕业,什么地方长大,身边有爸爸妈妈,有什么朋友,什么性格,在哪里生活,家住在哪片,基于这些人物背景信息,如何再加上你们的相处聊天,你们才是好朋友。这些人物背景信息,就是友谊里面最基础的信息。如果要和AI建立长期的友情,friendship,那么这些人物背景信息就应该存储在长期记忆里面,在社交聊天的时候,这些作为背景token输入进行回复。
所以要实现AI社交,能和AI建立长期的friendship,那么我们就要学习,如何实现记忆功能?
Google research 论文:Titans:learning to memorize at test time 一个全新的深度记忆架构 | 如何让AI模型记住更长的上下文
这篇论文提出了一个新的神经长期记忆模块,Neural long-term Memory Module,可以让AI模型在测试时学会记忆,可以处理超长文本,比如2M token上下文。
全新的记忆架构设计思路
传统的transformer 模型虽然能准确地计算token之间的依赖关系,但存在明显的计算资源瓶颈,因为每个token都需要跟另外所有token计算关联关系,这个就导致计算复杂度很高,需要大量GPU。
线性transformer架构
讲注意力计算简化为线性复杂度计算,让模型不仅仅只处理一个token,而是处理更长的序列,这样降低计算依赖关系的复杂度,这样的成本就是丢失了一些上下文关联度的细节,在精确表达上功能受限
学习人脑,从认知科学的角度理解学习范式,认为一个有效的学习方式应该像人脑一样,需要包含多个独立且又相互关联的记忆系统。
基于这个思路,Titans设计了三个核心组件,如下图
核心模块1: core module
人脑的工作记忆,负责处理当前的信息流,这个模块用有限窗口大小的注意力机制,可以高效处理即时输入的数据
核心模块2:long-term memory
类似于人脑的长期记忆系统,负责存储和检索历史信息,让模型能够在需要时回忆起之前处理过的重要内容。
核心模块3:persistent memory
持久记忆模块,这是一组可学习但与具体输入数据没关的参数,就像人类在长期学习中形成的知识结构,用于存储和编码与任务相关的通用知识。
那些模块如何和大模型结合使用?
结合模式1:memory as context
这种方式将记忆内容直接作为额外的输入序列,和当前的输入直接拼接,memory+input
优点:实现简单直接,模型可以通过注意力机制自然地访问记忆内容
确定:增加序列长度,增加计算开销
结合模式2:memory as gate
记忆作为门控,记忆模块会生成一组控制信号,用于动态调节主干网络中的信息流动。
优点:能够让模型更灵活地决定何时使用记忆信息,何时依赖当前输入,从而在保持计算效率的同时,提高模型的适应性
结合模式3:memory as nerwork layer
第三种是将记忆作为独立网络层,
在标准的transformer层之间插入专门的记忆处理层,每个记忆层都可以执行特定的记忆读写操作。
优点:能够让模型在不同抽象层次上处理记忆信息,实现更细颗粒度地记忆控制。
缺点:模型复杂度增大
以上三种方式都各有优劣,context在简单任务上表现良好
Gate方式在需要动态决策的任务上更有优势。
layer方式在复杂的长程依赖的任务上表现更好。
可以根据具体任务需求选择合适的整合方式,也可以将多种方式结合使用。
Titant 有优劣,优势是能够处理长达200M token的长文,也有记忆功能,缺点就是简单任务会复杂化。但是核心是基于人脑生物工作机制。