$δ$-mem: Efficient Online Memory for Large Language Models
Jingdi Lei, Di Zhang, Junxian Li, Weida Wang, Kaixuan Fan, Xiang Liu, Qihan Liu, Xiaoteng Ma, Baian Chen, Soujanya Poria
cs.AI
2026-05-13
南洋理工与复旦提出δ-mem:冻结全注意力骨干旁挂8×8联想记忆矩阵,用delta规则在线更新,读出后以低秩修正注意力。Qwen3-4B上平均分1.10倍于骨干、1.15倍于最强对照,MemoryAgentBench达1.31倍。
长程助手和 agent 真正缺的不是窗口数字,是历史能不能压成一块可更新、又能直接进推理的状态。把对话全塞进上下文,注意力按长度平方涨;窗口拉到百万级,模型仍会 context rot,中间信息用不上。
现有记忆三条路都卡在接口上。文本记忆(RAG、MemoryBank、LLMLingua-2)把历史写成词再塞回 prompt,受窗口、检索噪声和压缩损失夹击。旁路记忆(MLP Memory 一类)另开通道再融合,和骨干计算对不齐。参数记忆(LoRA、前缀)能冻骨干,但写进去的东西训练完就定了,跟不上在线变化。
δ-mem 的做法是:记忆做成固定大小、按 delta 规则在线改写的联想矩阵,读出后直接去改注意力的 query 和输出,不绕回 token。
骨干冻结,旁边挂一块 r×r 的在线联想记忆矩阵 S,默认 r=8。每一步按「先读、再改注意力、后写」走。
当前隐状态投影成记忆空间里的 q、k、v。query 和 key 过 tanh 再 L2 归一化,减轻长序列尺度漂移。读是一次矩阵乘 rt = S{t-1} qt,代价和历史长度无关。
读出向量经两个线性层变成 query 侧修正 Δq 和输出侧修正 Δo,按 α/r 加到冻结骨干的 query 和注意力输出上。默认 α=16,只改 q 和 o。权重训练后固定,输入 rt 来自动态状态,同一套低秩接口在不同历史上会给出不同修正。这点和静态 LoRA 不同。
写用带遗忘门的 delta 规则。旧状态先用当前 key 预测 value,只把残差沿 key 方向写回去;维度级的 β 控制写入力度,λ=1-β 控制保留。已经学稳的关联几乎不改,预测偏了才纠错。
三种写粒度。TSW 每 token 写一次,最细,也最容易吃格式噪声;SSW 按消息段平均后写一次,平滑冗余;MSW 维护 4 块并行子状态再拼接读出,减少事实、偏好、进度互相覆盖。训练是标准 SFT:上下文只写入 S,预测时骨干只看到当前 query 和回复,历史靠状态来 steer。数据是 QASPER 最短的 2219 条,骨干训练长度 512,记忆写入预算 8192。
主表在 Qwen3-4B-Instruct 上,同一套评测。TSW 平均分 51.66,骨干 46.79(约 1.10 倍),最强非 δ-mem 对照 Context2LoRA 是 44.90(约 1.15 倍)。记忆向任务增益更大:MemoryAgentBench 骨干 29.54、MSW 38.85(约 1.31 倍);LoCoMo 骨干 40.79、MSW 49.12(约 1.20 倍);TTL 子任务从 26.14 到 SSW 的 50.50。HotpotQA EM/F1 从 42.35/56.00 到 TSW 的 49.41/63.66。IFEval 从 81.89 到 82.99,通用能力基本保住。
| 方法 | 平均分 | MemoryAgentBench | LoCoMo |
| Qwen3-4B-Instruct | 46.79 | 29.54 | 40.79 |
| Context2LoRA | 44.90 | 32.53 | 37.95 |
| δ-mem (TSW) | 51.66 | 36.48 | 46.53 |
| δ-mem (MSW) | 50.74 | 38.85 | 49.12 |
对照里文本记忆经常掉分;MemGen 平均 30.66,MLP Memory 22.85,后两者参数还更重。δ-mem 的 TSW/SSW 可训练参数 4.87M,占骨干 0.12%;MSW 19.47M,占 0.48%。解码比 Vanilla 和 Context2LoRA 慢一截,显存几乎持平,prompt 拉到 32K 仍接近骨干。
去掉显式历史、只留压缩状态时,HotpotQA EM 从 0.08 到 6.48,LoCoMo 平均从 3.49 到 8.05。能找回一部分信号,离有上下文的分数还差很远。消融里单支输出侧最好;q+o 已接近全 qkvo,作为默认。全层插入优于前 12 / 中 12 / 后 12,中间层是局部最优。换到 Qwen3-8B 和 SmolLM3-3B,平均分都升:后者从 26.08 到 MSW 的 36.96。
给冻结 Transformer 加在线记忆,不必换架构、不必全参微调、也不必把历史再写回 prompt。8×8 矩阵加 0.12% 参数就能在记忆向基准上拉开一截,这对已经部署好的 3B–8B 骨干更现实。接口贴在注意力的 query 和输出上,和 LoRA 的工程习惯接近,但修正来自运行时状态,能跟交互走。
它回答的是「压缩状态能不能 steer 生成」,不是「精确检索能不能替代上下文」。无上下文恢复只有个位数 EM,生产里仍要和检索或窗口并用。
论文没有单独的局限节。训练只在 QASPER 上跑一个 epoch,用论文问答去适配对话记忆和 agent 轨迹,任务迁移靠的是归纳,不是对口数据。8×8 状态容量极小,无上下文恢复远低于有上下文分数,不能当成无损压缩。解码每步都要读写状态,吞吐低于 Vanilla。主结果停在 3B–8B Instruct,没给 70B 级和真实多日助手日志。文本记忆基线在若干任务上低于裸骨干,对照强度一般。qkvo 平均 48.05、qo 47.97,默认砍参数有道理,但没证明在更大 r 或更长历史上仍然成立。