Skip to main content

记忆

为什么需要记忆

  1. 人脑有非常强大的记忆系统和索引能力,管理着非常庞大的信息,能够准确联想起来非常多的记忆
    1. 记忆是AGI的一种重要能力
  2. 因为大脑容量限制,记忆是人类在当前信息爆炸的社会的最重要瓶颈
    1. 其他的还有类似:推理逻辑能力,运算能力等等
    2. 刨除记忆能力,其他的能力当前LLM已经有一个比较可用的实现
    3. 记忆能力可能成为下一个快速增长的瓶颈点
      1. 是不是未来会是:一个专注于基本语言和推理能力的小模型+大型的记忆系统
      2. 不断的提升记忆内容的质量(效率,自洽度...)、内容的数量、效率
  3. 数据库样式的存储记忆(类似RAG)不能满足现代需求
    1. 没有进行良好的抽象、归纳和整理,只是靠搜索引擎进行匹配检索
      1. 不能根据已经有的背景知识进行复杂的逻辑推导
      2. 不能利用知识进行慢思维(系统二)
    2. 不能用于复杂的深度推理思考活动
      1. 当前AI能利用搜索信息进行综合判断,本质上还是在处理临时信息,而不是庞大的记忆
      2. 大量的人类知识和语言能力都存储在了LLM模型的权重里面,对于这部分能做到类似人脑的处理能力,而且因为模型规模庞大,在知识范围方面超过了单个人类。但是只能用于存储成规模的大众通用的知识,而不能存储专业的私有信息知识,或者是个人的笔记
    3. LLM关于记忆
      1. 不能通过无限的在线上下文(kv cache)来实现记忆:效率太低
      2. 需要在背景持续对大量的记忆进行加工,整理,总结出规律和抽象,提升记忆检索和使用的效率
  4. 相关的尝试
    1. 人工结合蒙特卡洛搜索算法
      1. 微软rStar-Math:只是局限于对CoT的知识进行记忆
      2. AlphaGo:人工算法选择特定的权重,从而选择特定的记忆
    2. Tool-Integrity Reasoning (TIR)

记忆的信息分类

  1. 规则、约束
    1. xxx应该是xxxx
    2. xxx是xxxx
  2. 逻辑、推论
    1. 如果xxx则xxxx
    2. xxx那么xxx
  3. 现象、动作、陈述
    1. 吃饭
    2. 车开起来了

记忆的组织

  1. meaning tree
    1. 句子、单词级别
    2. 需要存储非常大的信息量,可能需要直接存储到模型权重
    3. 需要比较高级的抽象能力,当前LLM不具备,很多表示不能用语言表达
    4. 需要进行微调、训练
  2. 总结、类似脑图
    1. 段落级别
    2. 可以存储在传统数据库
    3. 可以通过prompt实现

记忆的操作

  1. 六种基本记忆操作:
    1. 巩固(Consolidation)
      1. 反复训练、推理、更新
      2. 修复不正确的、有矛盾的记忆,维持自洽
    2. 更新(Updating)
    3. 索引(Indexing)
      1. 对已有知识的联想、推理
      2. 深度、广度和效率是效果的重要指标
    4. 遗忘(Forgetting)
      1. 删除长期不用的、孤岛记忆、有矛盾的记忆
    5. 检索(Retrieval)
    6. 压缩(Compression)
      1. 对已经存在的记忆进行抽象,提取更高级的概念,重新组织记忆的表达形式
      2. 语义压缩,能够高效地组织知识、迅速地对世界进行分类
      3. 抽象的合理性
  2. AI中的记忆表示划分为
    1. 参数化记忆
      1. 在权重中,通过梯度下降进行改变
      2. 黑盒,难以进行精确的操作
    2. 上下文记忆
      1. 向量:KV cache等推理产生的中间值
      2. 非结构化上下文记忆:引用信息,视频
      3. 结构化的上下文记忆:指将记忆内容组织为预定义、可解释的格式或结构(如知识图谱、关系表或本体)
        1. 具备可查询性和符号推理能力
        2. 既可以在推理时动态构建以支持局部推理,也可跨会话持久保存高质量知识。

LLM实现记忆实现方法

  1. LLM大模型的权重
    1. 能进行一定深度和广度的处理能力,但是整体深度还是达不到人脑
    2. 需要通过及其复杂的梯度下降,不能快速存储特定数据,更新困难、无法追溯
    3. 黑盒,不确定性高
    4. 计算资源消耗大,虽然有MoE
  2. KVCache 等运行态中间变量
    1. 存储密度比较低,存储容量上限低
      1. 相对于权重表示,KVCache依赖自然语言的token,表达能力(复杂抽象不能用语言表达)和效率都比较差
    2. 逻辑推理能力稍差,思维能力稍差
      1. CoT可能出现前后矛盾的表达,长上下文之后,模型的准确性下降
    3. 计算资源消耗稍大
      1. 潜式思维链(Latent Chain-of-Thought)是一个改进方向
  3. 外部专用数据存储系统
    1. 容量大
    2. 抽象层级最低,存储密度最低,能力差
    3. 资源消耗小

需求本质

  1. 记录一段信息

    1. 格式化,向量化...
  2. 记录信息之间的关系

    1. 拓扑,树形,网状,点对点
    2. 逻辑关系,等价,推导,相似性的程度
    3. 本地的逻辑推理最为最高层的抽象,最核心的算法体现
      1. 不会因为不同的内容而改变,任何情况下总是可以正确的运行
      2. 拼接关键词,生成prompt
  3. 对信息进行拆分和组合和推理

    1. 对多个表达一样意思的描述进行合并、整理
    2. 对有矛盾的描述进行处理,自洽推理
    3. 对信息进行探索性推理
  4. 对信息进行重新组织和总结

    1. 数据库存储所有的“片段”和标签
    2. 标签可以被LLM进行运算
    3. 数据库存储所有的标签之间的关系,片段和标签的关系

核心问题

  1. 重点不是存而是取和算
  2. 抽象
    1. 总结规律,形成代表符号
  3.  记忆的运算
    1. 比较、类比
    2. 转换
    3. 推理
  4. 记忆必须参与到训练的过程,促进思维能力
    1. 记忆和理解能力(逻辑能力,抽象能力)不断的相互促进才能不断提升能力

&&&&&&&&&&&&&&&&&&&&&&&&

梯度下降不能产生意识,思维链可以短暂得产生意识

效率、可追溯性与长期适应性之间取得有效平衡。

本质上,AI信息处理是

  1. 使用绝对正确的逻辑和推理,对外部引用的信息进行推导和整理
  2. 不会出错误
  3. 能详细展示推理的过程,每个信息的出处

Forward: input -> format -> meaning tree -> calculate -> meaning tree -> gen -> output

Learning: input -> format -> meaning tree -> calculate -> new meaning -> update meaning

系统一

基础meaning -> weight

经过微调的LLM利用基础meaning实现 format 和 gen 构建一批针对此任务的数据集 

系统二

  1. 方案1 专用的模型(算法)持续被训练(修改)(关注逻辑运算和抽象,不懂实际的含义): meaning tree -> meaning tree
  2. 方案2 采用人工编写的规则(算法)+数据结构+数据库 进行运算
  3. 经过系统二的不断运行,能够正循环不断提升抽象质量,从而达到高通用性自洽