DeepSeek Engram:大型语言模型的"条件记忆"新维度
本文是对 DeepSeek-AI 论文 《Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models》 的深度解读。
Engram 是对经典 N-gram 模型的现代化改造,通过引入"条件记忆"维度,与 MoE(混合专家)形成完美互补,显著提升了大型语言模型的效率和性能。
1. 核心理念与动机
1.1 问题现状:用"算力"模拟"记忆"的低效
当前的 Transformer 模型(包括 MoE)缺乏原生的"查表"机制。当模型需要处理诸如 "Alexander the Great"(亚历山大大帝)这类固定知识时,必须通过消耗深层网络的注意力机制和前馈网络(FFN)来逐步"拼凑"和重构这些概念。
问题:
- 浪费了宝贵的计算深度
- 导致用于处理复杂逻辑推理的资源被挤占
- 固定知识的处理效率低下
1.2 解决方案:计算与记忆的解耦
论文提出将模型能力拆解为两个正交但互补的稀疏性维度:
| 维度 | 承担者 | 职责 | 复杂度 |
|---|---|---|---|
| 条件计算 | MoE (Mixture-of-Experts) | 动态逻辑、推理、复杂上下文依赖 | 高 |
| 条件记忆 | Engram | 静态世界知识(百科、短语、成语等) |
┌─────────────────────────────────────────────────────────┐
│ Transformer 模型 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ MoE 专家 │ 互补 │ Engram │ │
│ │ 条件计算 │◄──────►│ 条件记忆 │ │
│ │ (动态推理) │ │ (静态查表) │ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
2. Engram 技术架构详解
Engram 作为一个即插即用的模块集成在 Transformer 骨干网络中。
2.1 预处理与检索
Tokenizer 压缩
为了解决现代分词器的冗余(如 "Apple" vs "apple"),Engram 首先将语义等价的 Token 映射为统一的 ID。
- 压缩率: 约 23%
- 效果: 提高了语义密度,减少了冗余查询
# 概念示例
token_map = {
"Apple": 1001,
"apple": 1001, # 映射到同一ID
"APPLE": 1001,
}
混合 N-gram (Mixed N-gram)
模型同时提取当前位置的后缀 2-gram 和 3-gram:
输入: "I love machine learning"
位置 "learning" 的 N-gram:
2-gram: ("machine", "learning")
3-gram: ("love", "machine", "learning")
多头哈希 (Multi-Head Hashing)
为了在有限空间内存储海量组合,使用多个哈希函数将 N-gram 映射到嵌入表索引。
其中 是哈希头索引, 是表大小。
优势:
- 确定性的映射
- 允许模型扩展到 100B+ 参数
- 不占用过多显存
2.2 上下文融合
单纯查出来的静态向量可能包含噪声(哈希冲突)或歧义。Engram 引入了动态门控机制。
上下文感知门控 (Context-Aware Gating)
使用当前 Transformer 主干流的隐藏状态 作为 Query,查出来的记忆向量 作为 Key/Value。
计算门控系数 :
其中 是 sigmoid 函数, 是可学习参数。
关键特性: 如果当前上下文判定查出来的知识不相关, 会趋近于 0,从而抑制噪声。
残差连接 (Residual Connection)
最终的输出通过残差加法融入主干流:
这意味着 Engram 是对现有信息的"增强"而非"替换"。
2.3 完整数据流
输入 Tokens
│
▼
┌────────────────┐
│ Tokenizer 压缩 │ (语义归一化)
└────────────────┘
│
▼
┌────────────────┐
│ 提取 2-gram │
│ 提取 3-gram │
└────────────────┘
│
▼
┌────────────────┐
│ 多头哈希映射 │ ──► 嵌入表查询 ──► 记忆向量 m
└────────────────┘
│
▼
┌────────────────┐
│ 上下文门控融合 │ h' = h + g ⊙ m
└────────────────┘
│
▼
输出到下一层