
你有没有想过一件事:当你把一本书的内容记在脑子里,过了一年,有些细节你记得清清楚楚,有些却模糊得不行。为什么会这样?其实你的大脑一直在做一件事,那就是给每一段记忆打一个"靠谱程度"的分数。重复看过很多遍的内容,分数高,不容易被覆盖;只看过一眼、印象模糊的内容,分数低,一有新信息进来就容易被顶替掉。
现在的语言模型,尤其是那些追求长文本高效处理的"线性注意力"模型,恰恰缺了这一步。
先说说这些模型面临的麻烦。传统的Transformer模型处理长文本时有个死穴:它得把每一个见过的词都存下来,文本越长,存的东西越多,计算量跟着文本长度的平方往上涨。这就好比你要求自己记住这辈子读过的每一本书里的每一句话,还要在回答任何问题时把这些句子两两比对一遍,不崩溃才怪。
线性注意力
线性注意力:一种把无限增长的历史记录压缩成固定大小"记忆槽"的技术,不用存下所有历史,只维护一个大小不变的状态,靠这个状态回答后续问题。
这个思路解决了存储爆炸的问题,但也带来了一个新麻烦:记忆槽的容量是固定的,新东西进来,必须决定要不要覆盖旧东西,而且这个决定得在当下立刻做出来,根本不知道未来的问题会问什么。
这就是论文开头点出的核心困境:**每个词都要在不知道未来查询需求的情况下,决定该往记忆里写什么、写多重**。
写得太保守,记忆里全是过时信息占着位置;写得太激进,有用的旧记忆说没就没了。
DeltaNet这一脉的模型想出了一个聪明办法,叫"增量写入"。它不是简单地把新信息堆上去,而是先问一句:"这个新信息,跟我记忆里现在存的东西比,差多少?"只把这个差值(也就是"残差")写进去。
Delta-rule(增量规则)
Delta-rule:一种记忆更新方式,模型先用当前记忆预测这个新信息大概是什么样,然后只把预测错误的那部分写进记忆,而不是整个覆盖。
这个思路可以类比成你在改论文的时候用"修订模式",而不是每次都把整段话删了重写。你只标注跟原文不同的地方,保留没变的部分。这确实比无脑覆盖聪明得多,后续的Gated DeltaNet和KDA(Kimi Delta Attention)又在这基础上加了"遗忘"机制,让记忆能按不同速率自然衰减,有点像给不同的记忆内容设置不同的"保质期"。
但这篇论文的作者们发现了一个更深层的问题:**这些模型决定"写入强度"的那个信号,从头到尾都只看当前这个词长什么样,完全不看这段记忆过去被反复验证过多少次**。
换句话说,一个模型没法区分"这是刚存进去、还没确认过的信息"和"这是被反复确认了几十次的铁证"。两者面对新的冲突信息时,理应有不同的抵抗力,可现在的模型给它们的待遇是一样的。
这就好比一个图书管理员,不管这本书是刚借回来的新书还是馆藏了三十年、被无数人验证过权威性的经典,只要有人拿着看起来差不多的资料来说"这本书内容不对,得改",管理员一律照改。他从没问过一句:"这条信息,我们到底有多确信?"
把记忆问题重新想成一个滤波问题
论文作者的思路挺大胆的:他们没有继续在"怎么设计更好的遗忘门"这条路上打补丁,而是往回退了一步,问了一个更本质的问题:如果把这套记忆更新过程,理解成一个统计学上早就有答案的问题,会怎样?
这个统计学问题叫做"状态空间估计"。想象一下,你在跟踪一个不断变化、你又看不见全貌的东西(比如你朋友的真实心情),你只能通过一些间接、带噪声的观察(比如他发的朋友圈)来猜测它现在是什么状态。这正是1960年由工程师卡尔曼(Rudolf Kalman)解决的经典问题,而他给出的解法,就是后来在导航、机器人、金融等领域被广泛使用的卡尔曼滤波。
卡尔曼滤波(Kalman Filter)
卡尔曼滤波:一种从带噪声的观测数据中,实时估计某个随时间变化的隐藏状态的方法,被认为是这类问题在数学意义上的最优解。它不仅追踪"当前状态最可能是什么",还追踪"我对这个估计有多大把握"。
这篇论文最核心的洞察是:**语言模型的那个固定大小的记忆状态,其实就是在试图估计一张随时间漂移、看不见全貌的"键值映射表",而每个词提供的正是这张表的一次带噪声观测**。
把这个类比展开说清楚。论文里假设,模型内部有一张理想中的、完美的"键(key)到值(value)"对应表,这张表会随着上下文的推进慢慢发生变化(比如一个实体从"住在巴黎"变成"住在罗马")。而每个新词,其实是在提供一次对这张表的观测:这个词的"键"对应的"值"应该是什么。但这个观测不是百分百可信的,词嵌入里混杂着句法信息、位置信息、模型容量限制带来的噪声,不是所有内容都值得原样存进记忆。
在这套框架下,卡尔曼滤波会做两件事。第一步叫"预测":根据这张表可能怎么漂移(衰减、遗忘),先猜一下当前时刻这张表大概长什么样,同时也追踪"我对这个猜测有多不确定"。第二步叫"更新":等真正的观测(也就是这个词的键值对)来了之后,把预测和观测按照各自的可信度加权融合,预测越不确定的地方,新观测的权重就越大;预测已经很确信的地方,新观测的权重就小。
这个"融合权重",卡尔曼滤波里管它叫增益(gain),论文里的关键突破就在这:**这个增益不是模型凭空预测出来的一个数字,而是从"记忆的不确定性"和"观测的可靠性"两者数学推导出来的最优比例**。
如果你觉得这段有点抽象,可以想象你在用天气预报App和自己看天空判断今天要不要带伞。如果App说降雨概率只有5%(预测很确定),你抬头看到一小片乌云飘过(观测有点不确定),你大概率还是信App,新的、模糊的观测不会轻易撼动一个高确信度的旧判断。但如果App显示"数据不足,无法预测"(预测极不确定),你哪怕只看到一点点乌云的迹象,也会立刻决定带伞,微弱的新证据在这种情况下反而权重很大。**如果没有这套"不确定性追踪"机制,你就只能一刀切地永远相信App或者永远相信自己的眼睛,没法根据具体情况灵活调整信任的天平**,这正是现有delta-rule模型的处境。
论文把这套完整的方案命名为"卡尔曼联想记忆"(Kalman Associative Memory),并且证明了一个挺漂亮的结论:DeltaNet、Gated DeltaNet、KDA这几个已有的模型,其实都可以看成是这套最优方案的"简化版"或者说"降级版"。它们各自保留了不同复杂度的"记忆如何随时间变化"这部分(也就是转移模型),但都统一放弃了追踪不确定性这件事,直接用当前词的信息硬算出一个写入强度,而不是从积累的证据里推导出来。
理想很丰满,现实很骨感:为什么不能直接照搬卡尔曼滤波
这套理论听起来完美,但论文老老实实承认了一个硬伤:**精确的卡尔曼滤波在工程上根本没法用在现代GPU上高效跑起来**。
问题出在两个地方。第一,精确追踪不确定性需要维护一个稠密的协方差矩阵,维度是键向量维度的平方,如果键的维度是128,这个矩阵就有128乘128那么大,而且是每个注意力头都要单独维护一份,存储开销直接翻好几倍。第二,也是更致命的一点,更新这个协方差矩阵的公式(叫黎卡提递归)本质上是个严格顺序执行的过程,每一步都依赖前一步的完整结果,这跟现代硬件最擅长的"并行扫描"计算模式完全对不上。
Riccati递归(黎卡提递归)
Riccati递归:卡尔曼滤波中用来更新不确定性估计的一套递推公式,因为每一步的结果依赖复杂的矩阵求逆和前一步的完整状态,很难拆解成能并行计算的形式。
这就好比你设计出了一道极其精细的菜,味道无可挑剔,但整个流程必须一个厨师从头盯到尾、按部就班地一步步做,没法多个厨师同时分工处理不同环节。如果一家餐厅每天要做几千份这道菜,那这道菜再好吃也没用,你根本没法规模化供应。语言模型训练和推理动辄处理几十亿、上百亿个词,任何没法并行化的计算步骤都是灾难。
于是论文提出了两种"降级但可用"的近似方案,这也是整篇论文真正落地的技术贡献,统称Kalman Delta Networks(KDN,卡尔曼增量网络)。
对角近似:把矩阵压扁成一个向量
第一种方案叫Diagonal KDN(对角卡尔曼增量网络)。它的核心想法是:**不追踪键空间里所有维度两两之间的相关性,只追踪每个维度自己的不确定性**。
用数学语言说,就是强制要求那个本该是稠密矩阵的协方差,必须始终保持"对角"形式,也就是说,第i个维度的不确定性只跟自己有关,不跟第j个维度产生任何交叉影响。这样一来,存储开销从维度的平方降到了维度本身,而且每个维度可以独立更新,天然适合并行计算。
但这里有个技术上的麻烦:即便预测阶段的协方差保持对角形式,一旦真正观测到一个新词并做更新,数学上精确的后验协方差还是会变成稠密矩阵,因为一个新的观测天然会在多个维度之间引入相关性。论文的解决办法是用一种叫"在线变分推断"的技术,每一步都把这个理论上稠密的精确后验,重新投影回对角形式的近似分布,投影的标准是让近似分布和真实分布之间的KL散度最小。
变分推断(Variational Inference)
变分推断:一种用简单、容易处理的分布去近似复杂、难以直接计算的分布的统计方法,核心是在一族"好算"的候选分布里找一个跟真实分布最接近的。KL散度是衡量两个概率分布之间差异程度的指标,数值越小说明两者越接近。
有意思的是,论文证明了这个投影虽然会丢掉协方差的稠密结构,但均值(也就是记忆本身该存的值)是完全精确的,不会有任何损失,损失的只是"不确定性"这个附加信息的精细程度。
不过,天下没有免费的午餐。这种对角近似有个明显的副作用:它会丢掉不同键维度之间原本存在的相关性信息,导致模型在某些维度上过度自信。论文用实验数据直接展示了这个问题:如果不加任何补偿,当一个键被重复使用、或者后来的键在相同维度上有能量重叠时,模型会触发一次过强的覆写,论文管这个现象叫"overwrite"(过度覆写)。
想象你反复对着同一个朋友确认一件事,问了三次,他每次都说"是的没错"。理论上,这三次确认应该让你越来越确信这件事是真的,抵抗力越来越强,再有人跟你说"其实不是这样",你应该更倾向于不信。但如果你的大脑犯了一种特定的"记忆错觉",反而觉得"既然问了这么多次,说明这件事本身就很不确定",那么下一次哪怕只是一个模糊的反驳,你也会立刻推翻之前的判断。这正是对角近似天然带来的"过度谦虚"问题,协方差被投影后系统性地偏大,导致后续的写入强度也偏高。
论文的解决方案叫"信息缩放"(information scaling),简单说就是给每次更新之后的精度增量乘上一个校准系数μ。这个系数不影响当前这次写入,当前该怎么写还是怎么写,但会压低未来沿相同方向的写入强度,相当于给已经确认过的信息补上一层"抵抗力"。论文的实验数据很直观:在750M参数规模的模型上,把μ从1调到dk(也就是键向量的维度大小),"有效写入强度"(衡量记忆被覆盖程度的一个指标)的均值从训练后的0.943降到了0.826,意味着模型对已确认信息的保护明显增强了。
各向同性近似:把整个头压缩成一个数
如果说对角近似是把矩阵压成一个向量,那么第二种方案Isotropic KDN(各向同性卡尔曼增量网络)就更激进了:**它把整个注意力头的不确定性压缩成一个标量**,一个头只维护一个数字,代表整体的置信程度。
这样做的存储开销降到了O(1),也就是不随维度增长,对硬件极其友好。代价当然是精细度的进一步损失:所有维度共享同一个不确定性水平,没法区分"这个方向记得牢"和"那个方向记得虚"。
各向同性(Isotropic)
各向同性:指在所有方向上性质完全相同,这里特指不确定性在键空间的每一个维度上都保持一致,用一个数字就能完整描述。
有意思的是,这种方案在保留原有delta-rule模型形式的基础上,把那个决定写入强度的标量门控值,从"模型直接从当前词预测"改成了"从积累的不确定性和观测可靠性推导出来"。也就是说,Isotropic KDN在结构上跟KDA长得几乎一样,但驱动写入强度的信号来源发生了根本变化。
这两种近似方案的不确定性递推公式,数学上都被证明是"莫比乌斯映射"(一种特殊的分式线性变换),这类映射有个很好的性质,它们的复合可以表示成2x2矩阵乘法,天然支持并行的"关联扫描"算法,扫描的并行深度是对数级别的。这意味着即便是要追踪历史上所有词的不确定性演变,也不需要逐个顺序处理,而是能像折纸一样对半对半地快速合并计算结果。
数据说话:这套设计到底行不行
论文在750M和1.3B两个参数规模上,用完全相同的数据、训练配方、评测协议,对KDN和一众业界代表模型做了严格对比,包括DeltaNet、Gated DeltaNet、KDA、Mamba-3(分单输入单输出SISO和多输入多输出MIMO两个版本)、以及GDN-2。
先看语言建模能力。在750M参数、50B token训练量的设定下,Diagonal KDN在WikiText上的困惑度是18.64,LAMBADA上是14.15,而同规模的KDA分别是18.85和15.06,Gated DeltaNet是19.50和18.08。困惑度这个指标越低说明模型对文本的预测越准,KDN在两个基准上都实现了当时参与对比的所有模型里的最佳或接近最佳表现。
困惑度(Perplexity)
困惑度:衡量语言模型预测文本能力的核心指标,数值越低说明模型对下一个词的预测越准,通常被理解为模型对文本的"意外程度"。
放大到1.3B参数、100B token的规模,趋势保持一致:Diagonal KDN的WikiText困惑度是15.04,是所有对比模型里最低的;六项零样本推理任务(包括常识问答、物理推理等)的平均准确率达到60.45%,同样领先。
**这不是某一个基准上的偶然领先,而是在几乎所有评测维度上都保持了一致的优势**。
在需要长文本检索能力的RULER基准测试上,Diagonal KDN的表现尤其亮眼。这个测试要求模型在很长的上下文里精确找出藏在某处的一小段关键信息("大海捞针"式测试),Diagonal KDN在750M和1.3B两个规模上都拿到了最高的综合得分,尤其是在信息需要多次跳转关联的多键检索任务上优势明显。这个结果跟论文的核心论点是吻合的:按维度追踪不确定性,能更好地保护那些被反复确认的关键关联,不容易被无关的新信息干扰。
至于真实世界的检索任务(比如从网页里抽取结构化数据、回答基于长文档的问答),Diagonal KDN在1.3B规模下同样拿到了六项任务里最好的平均成绩34.86%,在FDA、TriviaQA、DROP这几个具体任务上都领先。
值得说一句的是效率对比。虽然Diagonal KDN因为要额外维护按维度的不确定性状态,计算开销比KDA略高,但依然保持了跟GDN-2相近的吞吐量水平,而且是随序列长度线性增长的,不会像标准Transformer那样在长文本上出现性能断崖式下跌。论文在H200 GPU上的实测显示,当序列长度从2K拉长到32K,标准Transformer的吞吐量从大约250万token/秒暴跌到不到70万,而KDN系列基本维持稳定。
写在后面
读完这篇论文,最让我意外的一点是,它没有去发明一个全新的模块或者一个花哨的门控机制,而是回头把已经存在了六十多年的经典滤波理论,重新套用到了一个看起来完全不相关的现代问题上。
这种"翻旧账"式的研究思路其实挺打动人的:DeltaNet、Gated DeltaNet、KDA这些模型的设计者,可能从来没有从"卡尔曼滤波"这个角度去想过自己在做什么,他们更多是从"在线梯度下降""状态空间对偶性"这些角度来解释自己的模型。但论文作者硬是证明了,这些看起来风格迥异的设计,本质上都是同一个更优雅框架下的特例,只是各自阉割了不同的部分。
另一个值得琢磨的细节是那个"信息缩放"参数μ的实验。论文没有简单地说"加了这个技巧效果更好"就完事,它专门做了个对照实验,固定住模型权重,只在推理时改变μ的取值,发现效果依然朝着预期方向变化。这说明这个改进不是训练过程碰巧学出来的某种补偿,而是这个数学机制本身在起作用,这种严谨的因果验证态度,在很多论文里其实是缺失的。
还有一点让我一直在想:这套框架目前追踪的还只是每个维度自己的不确定性,维度和维度之间的相关性完全被舍弃了。但语言里很多关键信息恰恰是靠维度之间的组合关系来编码的,比如某个实体和某个属性同时出现才有意义。如果未来能找到一种既保留部分跨维度相关性、又不牺牲并行计算效率的中间方案,会不会进一步缩小和精确卡尔曼滤波之间的差距?这大概是这篇论文留下的最有意思的一个问号。
Q&A
Q1:Kalman Delta Networks是什么?
A:Kalman Delta Networks(KDN)是一种新型线性注意力模型,把语言模型的记忆更新过程重新建模为卡尔曼滤波问题,让模型在写入新记忆时能根据历史积累的置信度动态调整写入强度,而不是只依赖当前词的信息。
Q2:KDN和DeltaNet、KDA这些模型有什么区别?
A:DeltaNet、Gated DeltaNet、KDA的写入强度都是模型直接从当前词预测出来的,不考虑这段记忆过去被验证过多少次。KDN则从追踪的不确定性和观测可靠性中数学推导出写入强度,论文证明前者其实是KDN在省略不确定性追踪后的特例。
Q3:Diagonal KDN和Isotropic KDN有什么不同?
A:Diagonal KDN按每个键向量维度单独追踪不确定性,精度更高但存储开销是O(dk);Isotropic KDN把整个注意力头的不确定性压缩成一个数字,存储开销只有O(1),精度稍低但计算更轻量,两者都在实验中优于KDA等主流模型。
好文章,需要你的鼓励
本文介绍LT-OPD训练框架,通过让极限压缩的多模态大模型在自己生成的内容上接受满血版模型指导,并配合渐进式课程学习,在仅保留5%视觉token时把性能保留率从68.6%提升到82.3%,且不增加推理成本。
本文解读ALIGNOPSD方法,该方法针对AI智能体训练中"决策与时间戳错配"问题,通过先对齐功能相同的决策场景再打分,并按可变长度决策段分配信用,在ALFWorld、WebShop、Search-QA三大任务上相比GRPO提升5.5%至8.7%。
本文介绍自适应一致性图(ACG)方法,通过持久化执行记忆图与预算感知的上下文构建,帮助AI智能体在长任务中减少信息失联,在多项基准测试中相比ReAct等基线方法提升了任务成功率。
多智能体AI协作时重复计算KV缓存浪费严重。PReCache提出预计算低秩缓存和中性基础缓存重构两项设计,免训练实现最高3.1倍加速、2.3倍吞吐提升,且准确率仅比不共享方案低1.1个百分点。