# 稀疏内存微调论文解读:破解灾难性遗忘的新范式(2025)
稀疏内存微调论文解读:破解灾难性遗忘的新范式
论文信息
标题:Continual Learning via Sparse Memory Finetuning
作者:Jessy Lin, Luke Zettlemoyer, Gargi Ghosh, Wen-Tau Yih, Aram Markosyan, Vincent-Pierre Berges, Barlas Oğuz
提交:arXiv 2025
arXiv:2510.15103
提交日期:2025年10月16日
博客:https://jessylin.com/2025/10/20/continual-learning/
速查表:稀疏内存微调核心要点
| 维度 | 核心内容 |
|---|---|
| 核心创新 | 使用稀疏更新的Memory Layers实现持续学习,避免灾难性遗忘 |
| 解决痛点 | 模型部署后更新参数导致的灾难性遗忘问题 |
| 技术架构 | Memory Layers + 稀疏激活 + TF-IDF重排 |
| 核心成果 | 遗忘率从全量微调89%降到稀疏内存11%,性能提升8倍 |
| 关键洞察 | "不是所有参数都需要更新,只更新被激活的稀疏Memory Slots即可" |
| 历史地位 | 持续学习领域的前沿突破,为"Always Training"范式奠定基础 |
历史演进:从静态模型到持续学习
时间线关键节点
2018-2022: 预训练+静态部署时代
↓
问题:模型部署后无法更新,新知识需要重新训练
↓
2020-2023: 参数高效微调(LoRA等)
↓
问题:依然存在灾难性遗忘(71%性能下降)
↓
2024: Memory Layers架构提出
↓
2025年10月: 稀疏内存微调论文
↓
核心突破:只更新激活的Memory Slots,遗忘率降到11%
技术背景:灾难性遗忘的困境
1. 问题定义
传统微调的问题:
# 模型部署
model = load_pretrained_model()
# 学习新事实
new_data = "New fact about X"
model.finetune(new_data) # ❌ 会导致遗忘旧知识
# 旧知识被覆盖
old_knowledge = "What we learned before?"
# 答案可能是错误的或忘记了
实验结果(论文数据):
初始模型性能:NaturalQuestions F1 = 0.XX
学习TriviaQA新知识后:
- 全量微调:旧知识性能下降 89% ❌
- LoRA微调:旧知识性能下降 71% ⚠️
- 稀疏内存微调:旧知识性能下降 11% ✅
2. 为什么会有灾难性遗忘?
核心原因:参数共享
所有任务共享同一套参数:
Task A的参数
Task B的参数
...都在同一个神经网络中
更新Task B → 影响Task A的参数 → 遗忘!
直觉理解:
"想象你在一个房间里放东西,
旧的占用了房间的大部分空间,
现在要放新东西,必须搬走旧东西,
结果就是旧东西被遗忘。"
️ 设计哲学:稀疏更新的智慧
核心设计思想
Memory Layers:天然稀疏的架构
什么是Memory Layers?
传统层:
参数(密集):Dense(D, D)
激活(密集):每次前向传播都激活所有参数
Memory Layers(论文基于Berges et al., 2024):
参数(稀疏设计):一个大的Memory Pool,但每次只访问一小部分
激活(稀疏):每次前向传播只激活K个Memory Slots
关键设计:
架构:Memory Pool = {slot_1, slot_2, ..., slot_N}
每次前向传播:
1. 计算Query
2. 找到最相似的K个Memory Slots(稀疏)
3. 只激活这K个Slots
4. 输出结果
关键:即使Memory Pool很大(1B参数),
每次只激活很少的参数(稀疏)
稀疏更新的核心洞察
Why稀疏更新有效?
传统微调的问题:
全量微调:
- 更新所有参数
- 新旧知识在参数空间中"打架"
- 旧知识的参数被覆盖
LoRA:
- 只更新少量新增参数
- 但这些新参数依然影响前向传播
- 间接影响旧知识
稀疏内存微调的解决方案:
关键洞察:
"只更新那些'被高度激活'的Memory Slots"
更新策略:
1. 对于新知识,找出激活的Memory Slots
2. 只更新这些Slots
3. 其他Slots保持不变
结果:
- 新知识 → 更新特定Slots(稀疏)
- 旧知识 → 使用其他Slots(不更新)
- 两者不冲突!
类比理解:
"就像图书馆的索引系统:
新书来了,只需要更新相关的索引卡片(稀疏),
而不需要重建整个图书系统(密集)。
其他书的索引(旧知识)不受影响。"
思维路线梗概
问题定义
如何在持续学习新知识的同时,
不遗忘已经学到的旧知识?
解决方案构建路径
Step 1: 识别共享参数的问题
问题:所有任务共享同一套参数
Task A ↔ 参数集合P
Task B ↔ 参数集合P
Task C ↔ 参数集合P
更新Task B → 参数集合P改变 → Task A和C受影响
Step 2: 设计稀疏架构
关键观察:
"不是所有参数都需要参与每个任务"
Memory Layers的天然稀疏性:
- 大容量:Memory Pool有上亿参数
- 稀疏激活:每次只激活K个(如32个)
- 灵活分配:不同数据激活不同的Slots
Step 3: 实现稀疏更新策略
新知识来了:
1. 前向传播 → 找出高度激活的Memory Slots
2. 使用TF-IDF重排:相比预训练数据,哪些Slots被高度激活?
3. 只更新这些Slots(稀疏)
4. 其他Slots保持不变
Step 4: 评估遗忘和学习
实验设计:
- 基准模型:NaturalQuestions任务
- 学习新任务:TriviaQA
- 评估:学习新任务后,旧任务性能如何?
结果:
全量微调:89%遗忘 ❌
LoRA:71%遗忘 ⚠️
稀疏内存:11%遗忘 ✅
核心因果关系
参数共享导致灾难性遗忘
↓
需要隔离新知识和旧知识
↓
Memory Layers提供稀疏架构
↓
只有部分参数被激活
↓
只更新激活的稀疏Slots
↓
旧知识使用未更新的Slots
↓
遗忘率大幅降低
技术深度解析
架构设计
Memory Layers的工作原理
# 伪代码示例
class MemoryLayer:
def __init__(self, num_slots=1000, slot_dim=768):
# Memory Pool:大容量,稀疏使用
self.memory_pool = nn.Parameter(num_slots, slot_dim)
def forward(self, query, top_k=32):
# Query编码
query_embedding = self.query_projection(query) # (B, D)
# 计算相似度:找出激活的K个Slots
similarities = query_embedding @ self.memory_pool.T # (B, N)
top_k_indices = top_k_similar(similarities, k=32) # (B, K)
# 稀疏激活:只激活K个Slots
activated_slots = self.memory_pool[top_k_indices] # (B, K, D)
# 加权输出
output = weighted_sum(activated_slots, similarities)
return output
关键特性:
- ✅ 大容量:Memory Pool可以很大(论文中1B参数)
- ✅ 稀疏激活:每次只激活K个Slots(如32个)
- ✅ 灵活分配:不同输入激活不同的Slots
稀疏更新策略
# 伪代码:稀疏更新
def sparse_memory_finetuning(model, new_data):
# Step 1: 评估激活模式
activations = get_activations_on_pretrain_data(model)
# Step 2: 在新数据上评估激活
new_activations = get_activations_on_new_data(model, new_data)
# Step 3: 找出高度激活的Slots(相对预训练)
# 使用TF-IDF思路:相比预训练,哪些Slots被"高度激活"?
relative_importance = new_activations - activations
top_k_slots = top_k(relative_importance, k=config.num_slots_to_update)
# Step 4: 只更新这些Slots
for slot_idx in top_k_slots:
# 只更新激活的Memory Slots
optimize(model.memory_pool[slot_idx], new_data)
TF-IDF重排的作用:
为什么使用TF-IDF?
1. "Term Frequency":新数据中,哪些Slots被激活得更多?
2. "Inverse Document Frequency":相比预训练数据,这些Slots是否异常激活?
结果:
找出"新数据专有的激活模式"
→ 只更新这些Slots
→ 其他Slots保持不变
实验设计与结果
实验设置
模型配置:
Base Model: 1.3B
Memory Pool: 1B参数(大容量)
激活数:每次32个Slots(稀疏)
训练方法:
- 全量微调(Full Finetuning)
- LoRA微调
- 稀疏内存微调(Sparse Memory Finetuning)
评估指标:
1. 学习新知识:TriviaQA F1 score
2. 遗忘旧知识:NaturalQuestions F1 score
Trade-off:在高学习能力下,遗忘率是多少?
实验结果
性能对比:
| 方法 | TriviaQA学习 | NaturalQuestions遗忘 |
|---|---|---|
| 全量微调 | 高学习 ✅ | 89%遗忘 ❌ |
| LoRA | 中等学习 ⚠️ | 71%遗忘 ❌ |
| 稀疏内存 | 高学习 ✅ | 11%遗忘 ✅ |
关键发现:
稀疏内存微调实现:
- 学习能力 ≈ 全量微调
- 遗忘率 < 1/8 (相比全量微调)
- 性能提升8倍!
学习-遗忘权衡曲线
绘制:
X轴:TriviaQA性能(学习新知识的能力)
Y轴:NaturalQuestions性能(记住旧知识)
结果:
稀疏内存:明显更好的Pareto Frontier
全量微调/LoRA:要么高学习高遗忘,要么低学习低遗忘
技术细节
1. 优化器的选择
关键发现:Adam不是持续学习的最佳选择
# 实验发现
optimizers = {
"Adam": 遗忘率中等
"SGD": 遗忘率更低! ← 意外发现
}
# SGD的好处:
- 简单:每个参数独立的学习率
- 稀疏友好:不依赖整体统计
- 遗忘率更低
论文发现:
"SGD for sparse memory finetuning led to much less forgetting and could match the performance of AdamW at convergence if we set the learning rates high (lr=2 or 10!)."
启示:
- Adam的假设(全局统计、自适应学习率)在稀疏更新场景下可能不适合
- "Always Training"范式可能需要重新审视优化器选择
2. 可解释性分析
初步发现:Memory Slots与实体边界对齐
可视化发现:
- Memory Slots访问集中在"实体边界"
- 例如:"Barack Obama"边界 → 特定Slots高度激活
- "high information content" tokens → 特定Slots激活
意义:
- 模型似乎学会了"按主题组织Memory"
- 验证了稀疏更新策略的自然性
3. 预训练vs后训练Memory
设计空间:
预训练Memory(本文方法):
- 优点:模型学会组织Memory
- 缺点:需要从零开始
后训练Memory(如Cartridges):
- 优点:可以添加到现有模型
- 缺点:不一定能充分利用Memory容量
论文选择:预训练Memory,因为这能最大化Memory的作用
批判性思考
论文的局限性(2025视角)
1. 小规模模型的局限
论文实验:1.3B Base + 1B Memory
问题:
- 小模型可能已经存在参数饱和
- 大规模模型(70B+)的行为可能不同
- Memory Pool是否需要更大?
作者承认:
"As a next step, it's important to characterize memory for larger models up to frontier scale"
2. 评估场景过于简化
论文评估:QA任务(TriviaQA、NaturalQuestions)
未覆盖:
- ❌ 代码生成任务
- ❌ 数学推理任务
- ❌ 多模态任务
- ❌ 真实世界交互场景
现实挑战:
- 用户反馈通常很稀疏
- 更新的重要性难以评估
- 需要更复杂的Benchmark
3. 稀疏程度的理论理解不足
论文结果:更新0.01%的参数
未回答:
- 为什么这个稀疏度是最优的?
- 稀疏度与模型容量、任务复杂度有什么关系?
- 是否存在最优稀疏度的理论?
4. Memory容量规划问题
实际部署考虑:
Memory Pool太大:
- 存储成本高
- 每次前向传播浪费计算
Memory Pool太小:
- 容量不足
- Slots之间冲突
未讨论:
- 如何规划Memory容量?
- 不同任务需要多少Memory?
- 何时需要扩大Memory Pool?
与现代技术的对比(2025视角)
| 维度 | 稀疏内存微调 | 其他方案 |
|---|---|---|
| 遗忘率 | 11% ✅ | 71-89% |
| 架构改变 | 需要 | 不需要 |
| 适用场景 | 持续学习 | 一次性部署 |
| 计算成本 | 低(稀疏) | 中等(全量) |
| 部署复杂度 | 中等(新架构) | 低(LoRA) |
核心洞察与价值
对技术决策的启示
1. 稀疏性是解决遗忘的关键
核心洞察:
"不是所有参数都需要更新,
只更新被激活的稀疏Memory Slots即可。"
工程应用:
传统思路:全量微调 → 遗忘率高
改进思路:LoRA → 依然有一定遗忘
新思路:稀疏内存微调 → 遗忘率最低
对系统设计的启发:
- 稀疏架构值得探索
- 不只是参数高效,更是遗忘高效
- "Always Training"离不开稀疏设计
2. Memory Layers的范式转变
设计哲学转变:
传统层:密集参数,全激活
Memory Layers:大容量稀疏池,按需激活
应用场景:
- RAG:外部Memory(向量数据库)
- Memory Layers:内部Memory(参数中)
- 两者可以互补!
3. 持续学习的未来
作者观点:
"We've seen promising results on small models, but as a next step, it's important to characterize memory for larger models up to frontier scale."
可能的改进方向:
- 更大规模的Memory Pool
- 更智能的Slots分配策略
- 更好的评估Benchmark
- 与Agent系统的结合
对RAG实践的启示
1. RAG vs Memory Layers
互补关系:
RAG(外部记忆):
- 容易更新
- 可溯源
- 但需要检索延迟
Memory Layers(内部记忆):
- 快速访问
- 端到端学习
- 但更新可能遗忘
理想系统:两者结合
- RAG负责长期、大量的事实
- Memory Layers负责关键、频繁的知识
2. 实现持续学习的路径
现有RAG系统的痛点:
问题:
- 模型依然是静态的
- 新知识只能存到外部库
- 模型参数无法更新
稀疏内存微调的启示:
新路径:
- 模型参数可以持续更新
- 通过稀疏更新避免遗忘
- 与RAG结合:外部+内部双重记忆
历史影响与遗产
对持续学习领域的贡献
1. 突破记忆与遗忘的权衡
历史进程:
Pre-2025: 要么全记住(参数爆炸)要么全遗忘(灾难性)
2025: 稀疏内存微调 → 低遗忘率 + 高效学习
2. 开启"Always Training"范式
未来场景:
传统部署:
Model v1.0 → 训练数月 → 静态部署
Always Training:
Model v1.0 → 持续更新 → Model v1.1, v1.2, ...
↓
用户反馈、新知识、经验 → 持续学习
3. 架构创新的启示
Memory Layers vs MoE(Mixture of Experts):
相似点:
- 都是稀疏架构
- 都是大容量稀疏使用
不同点:
- MoE:按任务划分Experts
- Memory Layers:按数据动态激活
- Memory Layers更适合持续学习
行动建议
如果你是...
学生/研究者:
- ✅ 完整阅读论文和作者博客
- ✅ 理解稀疏更新为什么有效
- ✅ 思考如何扩展到更大模型
- ✅ 设计新的评估Benchmark
工程师/开发者:
- ✅ 评估是否需要持续学习能力
- ✅ 测试稀疏内存微调的集成
- ✅ 考虑与RAG系统的结合
- ✅ 监控学习质量和遗忘率
决策者/架构师:
- ✅ 评估"Always Training"的ROI
- ✅ 规划Memory容量和更新策略
- ✅ 考虑与现有系统的集成
- ✅ 制定持续学习的治理策略
延伸阅读与资源
相关论文
-
Memory Layers原始工作 (Berges et al., 2024)
- 引入Memory Layers架构
-
Catastrophic Forgetting经典论文
- Kirkpatrick et al. (2017) - EWC
- Google (2023) - LoRA for Continual Learning
-
相关技术
- Grafting (2024) - 参数级稀疏更新
实践资源
代码与工具:
- 论文代码(GitHub)
- Memory Layers实现
- 持续学习框架
博客与讨论:
总结:稀疏内存微调的历史地位
为什么这篇论文重要?
1. 突破传统遗忘问题
解决了持续学习的关键瓶颈
遗忘率从89%降到11%
实际部署成为可能
2. 架构设计的新范式
Memory Layers:稀疏但大容量
只更新激活的Slots:高效且避免冲突
启发了持续学习的架构研究
3. 通往"Always Training"之路
模型不再需要"冻结"部署
可以持续学习和改进
开启了AI系统的新范式
对2025年及未来的意义
技术趋势:
- 从"Train Once, Deploy Forever"到"Always Training"
- 稀疏架构成为关键设计
- 持续学习从理论到实践
实际应用:
- 企业AI系统:用户反馈 → 持续改进
- 个人助手:学习用户偏好
- 专业系统:持续吸收新知识
创建时间:2025年1月
作者:基于Jessy Lin论文的深度解读
推荐阅读时长:50-60分钟
学习检查清单:

浙公网安备 33010602011771号