你有没有遇到过这种事:读一本厚厚的推理小说,翻到最后一页发现凶手的关键线索藏在第三章一个不起眼的细节里。你能想起来吗?大概率想不起来了,除非那个细节真的够特别。
这其实就是所有处理长文本的AI模型都要面对的老问题。它们读一段话的时候,总要在心里维护一份"笔记",用来记住前面读过的内容,好为接下来要生成或理解的内容提供依据。问题是,这份笔记不能无限长,不然计算量会爆炸。于是模型就得想办法把读过的东西压缩进一个固定大小的"记忆盒子"里。而这个压缩过程,遵循着什么样的"遗忘规律",直接决定了这个模型对长文本到底行不行。
这篇来自华为诺亚方舟实验室的论文,题目叫《Fractional State Space Transition for Long Sequence Modeling》,讲的正是这件事:如何让AI的记忆遗忘得慢一点,慢得更合理一点。
**当前主流模型的记忆都遵循一种"指数级遗忘",这意味着信息一旦过去得够久,几乎就等于被判了死刑。**
这话听起来抽象,换个说法你就明白了。
想象你把一杯热水放在桌上,水温会随着时间往下掉,掉得越来越慢,但永远不会掉到跟室温完全一样的地步(至少理论上是这样),这是牛顿冷却定律,也就是指数衰减。大多数现代的状态空间模型(
State Space Models(SSM):一类用有限大小的"记忆状态"来压缩处理整段序列历史信息的模型,代表作是Mamba系列。这类模型的效率来自于不用像传统Transformer那样对每个词都两两计算关联,而是把历史信息不断"揉进"一个固定大小的状态里往前传递。
),包括大名鼎鼎的Mamba系列,它们内部的"记忆更新规律"本质上就是这种指数衰减。这意味着,如果一条信息出现在1000个词之前,它对当前判断的影响力,可能已经衰减到几乎为零了。但对很多真实场景来说,这恰恰是不对的。比如你读一篇论文,摘要里提到的核心观点,可能在第十页还要被反复引用,它的重要性根本没有随着距离衰减那么快。
这个问题在学术上早就有人研究过,只是研究的人不在AI圈,而是在物理和应用数学圈。地质学家研究地下水的异常扩散、材料学家研究粘弹性材料的力学响应,他们发现很多自然系统根本不遵循指数衰减这种"干脆利落"的遗忘方式,而是拖着一条长长的"尾巴",衰减得极其缓慢,用数学语言讲叫做
重尾分布:一种概率分布或衰减曲线,特点是远处的取值不会迅速趋近于零,而是保持相对可观的概率或权重,形成一条拖得很长的"尾巴"。
。描述这种长记忆行为最合适的数学工具,叫做分数阶微分方程。
分数阶微分方程(FDE):一种推广了传统微分方程的数学工具,允许导数的阶数是非整数(比如0.5阶导数),它天然地会导出"重尾"式的长记忆行为,而不是指数衰减。
听起来玄乎,其实理解起来不难。普通的一阶微分方程描述的是"现在的变化率只取决于现在的状态",这是一种彻头彻尾的"健忘症"模型:只看当下,不管历史。而分数阶微分方程的求解过程,天生就需要把整条历史轨迹都考虑进去,越靠近当下权重越大,但很久以前的事情依然占有一份"发言权",只是发言权随时间以幂函数的速度衰减,而不是指数函数的速度。
这就带来一个棘手的矛盾:分数阶方程虽然在数学上完美刻画了长记忆,但它是"非马尔可夫"的。
马尔可夫性:指一个系统未来的状态只依赖于当前状态,跟更早之前怎么走到这个状态无关。普通的状态空间模型都满足这个性质,这也是它们能用固定大小的"记忆盒子"高效运算的根本原因。
分数阶方程恰恰打破了这个性质,它的每一步计算理论上都得回看全部历史。这就好比你想查一个包含"全部历史信息"的字典,每次查阅都要把字典从头翻一遍,这在计算上根本没法接受,尤其是对要处理几万个词的语言模型来说。
**FRAC这篇论文要解决的核心矛盾,就是怎么让"重尾记忆"这种理论上优美但计算上灾难的东西,变成一个跟现有高效模型架构兼容的、有限状态的、能并行训练的实用模块。**
从连续时间到有限状态:怎么把"无限的记忆"塞进"有限的盒子"
要理解FRAC的解法,得先弄明白一个关键的数学事实:分数阶的记忆核函数,虽然看起来复杂,但它其实可以被写成"无穷多个普通指数衰减的叠加"。
这句话值得多想一秒。一个复杂的、拖着长尾巴的衰减曲线,居然可以拆解成很多条简单的、指数式衰减的曲线叠加而成,只是每条曲线的衰减速度(也就是时间尺度)不一样,权重也不一样。有的衰减极快,只管刚刚发生的事;有的衰减极慢,负责那些很久以前但依然重要的信息。
这就好比一支管弦乐队在演奏一段绵延不绝的低音轰鸣。单独一件乐器,比如一把大提琴,发出的声音总会渐渐消散。但如果你同时安排小提琴(衰减快)、中提琴(衰减中等)、大提琴(衰减慢)、低音提琴(衰减极慢)一起演奏,音量此起彼伏地叠加,整体听起来就像是一种绵延不断、拖着长长尾音的轰鸣。单独每个声部都遵循简单的衰减规律,合在一起却呈现出复杂的长记忆效果。如果你只用一件乐器,音量会很快消散,听不到那条悠长的尾音,这正是传统SSM只有单一指数衰减时的局限。
FRAC正是采用了这个思路。论文用严谨的数学证明(对应正文中的定理1和定理2)说明,只要选取一组按照几何间距排列的"时间尺度"(比如1、2、4、8、16……这样成倍增长的间隔),用有限数量的指数衰减模式叠加起来,就能在指定的时间范围内,把原本无限维的分数阶记忆核函数逼近到任意精度。
这里的"几何间距"很关键,因为分数阶记忆的特点就是要横跨很多个数量级的时间尺度,如果你用普通的等间距(1、2、3、4……)去覆盖,覆盖到很远的地方就得用天文数字般多的格子。几何间距则能用很少的格子(论文里最终用了16个)就横跨从1个时间步到超过13万个时间步这么宽的范围。
论文还证明了一个很实用的结论:这些指数模式的权重系数,在时间尺度较大的那一部分,正好呈现出幂函数衰减的规律,这跟分数阶记忆理论预言的渐近行为完全吻合。这说明这套逼近方案不是拍脑袋瞎凑的,而是精确对应了分数阶动力学的数学结构。
从连续到离散:把公式变成一段可以跑在GPU上的代码
有了这套"有限模式叠加"的理论基础,接下来要做的是把它变成计算机能跑的递归更新规则。
这一步用到了一个在SSM领域很常见的技术,叫
零阶保持离散化(ZOH):一种把连续时间的微分方程转换成离散时间递归公式的标准方法,基本假设是在每个很短的时间间隔内,输入信号保持不变。
。简单说,就是假设在处理第t个词的这一瞬间,所有控制变量都是"定住不动"的,用这个假设,可以把每一个指数衰减模式的连续演化方程,精确地转换成一步一步的离散更新公式。
到这里为止,FRAC还只是个"固定"的分数阶记忆系统,所有模式共享同一组基础时间尺度。但语言模型需要"选择性",不同的词、不同的上下文,应该用不同的方式调配记忆资源。FRAC引入了三个随词元变化的控制变量:步长Δ、分数阶数α、还有衰减率λ。
其中α特别关键,它控制着记忆衰减的"分数阶程度",取值在0到1之间。α越接近1,行为越接近传统的指数衰减,模型更"健忘"、更关注局部;α越接近0,长记忆效应越强,模型越愿意把很久以前的信息保留下来。这个α不是固定的,是模型根据当前读到的内容动态算出来的,这意味着模型可以学会"什么情况下该记得久一点,什么情况下该忘得快一点"。
这就好比一个公司的档案管理员,面对不同类型的文件采取不同的保留策略。日常的琐碎会议记录可能设置成"一个月后自动清理"(对应α接近1,快速遗忘),但涉及重大决策的文件,则设置成"永久保留,只是调阅频率逐年降低"(对应α接近0,长期留存但优先级慢慢下降)。如果档案管理员对所有文件一刀切都用同一种清理规则,那些真正重要的长期资料就会被误删,这恰恰是传统指数衰减SSM的软肋。
在具体的读写机制上,FRAC还设计了一套"按时间尺度对数值排序的路由方式"。模型会给每一个记忆模式(也就是每一个不同衰减速度的通道)算出一个"读取权重"和一个"写入权重",这两个权重都基于同一个先验,即时间尺度越长的模式,其权重应该呈现出特定的幂函数关系,这是从分数阶理论里直接推导出来的读取系数渐近公式。写入端用的是类似的结构,只是用了独立的一套参数,这样读和写就能形成一种"呼应"关系,内容写进去的那个模式,日后更容易被同一套逻辑找回来。
工程实现上的取舍:效率和表达力的拔河
理论推导得再漂亮,如果实现起来慢得像蜗牛,那也是空中楼阁。FRAC在工程实现上的核心目标,是让这套多模式的记忆机制依然能享受现代SSM那种"并行扫描"式的训练效率,同时在一步步生成文字的时候,只需要维护一个大小固定的状态,不会随着文本变长而爆炸。
论文的作者专门写了自定义的Triton内核
Triton:一种用来编写高性能GPU计算代码的编程语言和编译器,常被用于实现深度学习里的自定义高效算子。
来实现这套递归计算,还特别处理了一个数值稳定性问题:如果直接用"两个累积衰减量的比值"来算跨位置的混合系数,容易出现数值爆炸或精度损失,所以他们改成在对数空间里直接算累积衰减的差值,这个技巧借鉴自另一个模型GLA(Gated Linear Attention)的思路,但因为FRAC的模式数量(16个)远小于GLA处理的维度(通常64以上),所以不需要像GLA那样做二级分块,一级分块就足够高效。
这里有个容易被忽略但挺重要的细节:多出这16个记忆模式,并不意味着FRAC比其他模型占用更多的"记忆空间"。论文专门算了一下,在同等配置下,FRAC每层维护的递归状态标量数量,只有Mamba2和Mamba3的八分之一,GDN的四分之一点五。换句话说,FRAC不是靠堆更大的内存来换效果,它是靠更聪明的记忆组织方式,用更少的资源做到更持久的记忆。
这就好比整理一个储物间。有的人解决空间不够的问题,是直接租更大的仓库(堆内存),而FRAC的做法更像是设计了一套分层的收纳格,同样大小的空间,通过合理分区(不同时间尺度的模式),反而能放下更多有用的东西,还能更快找到想要的物件。如果不做这种分层设计,想要覆盖同样宽的时间跨度,可能就得把储物间的面积扩大好几倍。
实验怎么说话:合成任务、语言建模和DNA测序的多重验证
说了这么多理论,效果到底怎么样?论文从好几个角度做了验证。
第一个实验是专门设计的"重尾探测任务"。研究者构造了一种合成数据,里面稀疏地分布着一些正负事件,模型需要按照一个固定的幂函数权重规律,把这些事件加权求和来预测最终结果。这个任务的关键在于,权重衰减得非常慢(论文里γ设为0.1,衰减速度很慢),这正好考验模型能不能在没见过的更长序列上,依然抓住早期事件的影响。
所有模型都只在512长度的序列上训练,然后被拿去在最长12.8万个词的序列上测试,这是训练长度的250倍。结果显示,随着测试序列变长,所有模型的准确率都在下降,但FRAC下降得最慢。在12.8万长度上,FRAC还能维持63.8%的准确率,而排在后面的GDN、Mamba3只有58.4%和55.6%,用纯注意力机制的Transformer已经跌到了50%左右,基本等于瞎猜。
这个实验结果本身很有说服力:改变记忆的底层规律,确实能带来实打实的长度泛化能力提升。
第二个实验用的是MADLab,一套专门测试模型记忆和检索能力的合成基准,包含压缩、模糊上下文召回、记忆、选择性拷贝这几类任务。FRAC在这套测试里的平均分是75.4,略微超过此前最强的基线Mamba3(74.8分),说明改变底层记忆规律并没有损害模型原本该有的基础能力。
真正的重头戏是1.3B参数规模的语言模型预训练实验。研究者用1000亿个词元(从FineWeb-Edu语料库采样)从头训练了FRAC,并跟Mamba2、GDN、Mamba3(包括SISO和MIMO两个变体)以及标准Transformer做对比。
在"大海捞针"式的长文本检索测试(Needle-in-a-Haystack)里,FRAC在训练时只见过4K长度的文本,但测试时被拉到了6.4万长度,远超训练范围。结果是训练范围内(4K以内)FRAC跟其他模型表现相当,但一旦超出训练长度,FRAC的性能下降得明显更慢。唯一的例外是GDN在其中一个子任务(S-NIAH-1)上表现突出,这是因为GDN的门控delta规则特别擅长过滤重复性的干扰文本,这提醒我们不同的记忆机制有各自的专长,不存在万能药。
在LongBench这套包含14个真实长文本任务的测试集里(涵盖单文档问答、多文档问答、摘要、少样本学习、代码补全),FRAC平均分17.9,比最强的线性模型基线GDN(16.0分)高出1.9个百分点,在14个任务里拿到8个最优或次优成绩。不过论文也坦诚地指出,这个提升幅度比大海捞针测试里的提升要小,原因是LongBench里超过一半的任务输入长度都不到8000词,在这种中等长度下,Transformer本身依然很有竞争力。
而在短文本的语言理解和常识推理任务(LM Harness,包括PIQA、HellaSwag、WinoGrande等经典测试)上,FRAC的平均分55.1,只比Transformer(55.3)和Mamba3-MIMO(55.3)低0.2分,几乎打成平手。这说明FRAC那种偏向长记忆的结构性设计,并没有牺牲它在短文本场景下的基本功。
在真实世界的检索密集型任务(比如SWDE网页信息提取、TriviaQA问答)上,FRAC排第三,落后Transformer 2.1个百分点,落后Mamba3-MIMO 0.4个百分点,依然属于同一梯队。
最后一个很有意思的补充实验是DNA序列建模。研究者仿照HyenaDNA的实验设置,用人类基因组数据训练了700万参数规模的小模型,测试长度从1000到6.4万个碱基不等。FRAC在所有测试长度上都取得了与GDN、Mamba3相当或更低的困惑度,而且序列越长,FRAC的优势越明显。DNA序列天然具有长程的调控关系(比如远端的基因调控元件影响近端基因表达),这个领域本身就很适合检验长记忆模型的能力,FRAC在这里的表现进一消化了它的设计初衷确实落到了实处。
消融实验揭示的细节:每个设计选择都不是可有可无的
论文还做了一系列消融实验,用一个3.9亿参数的小模型在ProofPile、PG19、GovReport这几个长文档数据集上测困惑度,逐一拆掉FRAC的各个组件看效果变化。
如果把α强行固定为1(也就是退化成普通的指数衰减,彻底放弃分数阶的长记忆特性),在ProofPile上的困惑度从47.2飙升到61.3,这是个相当大的性能损失,证明可学习的分数阶参数确实是核心贡献者,不是装饰品。
如果去掉写入端的"对数时间尺度先验"(也就是让模型的写入权重不再遵循理论推导出的幂函数结构,变成完全自由学习),困惑度恶化到68.5,比去掉α的影响还大。这说明那套读写对应的路由设计确实抓住了分数阶理论里最核心的结构信息。
研究者还专门做了个对照实验,叫"纯多尺度记忆库",把所有分数阶相关的先验全部拿掉,只留下多个不同时间尺度的记忆通道,时间尺度也不再按几何间距排列,而是完全自由初始化学习。这个版本的困惑度是76.3,是所有消融里最差的,比完整版FRAC的47.2差了将近30个点。这个结果特别关键,它排除了一种可能的质疑:会不会FRAC的效果提升只是因为它用了"更多记忆通道"这种朴素的工程改进,跟分数阶理论本身没多大关系?答案很明确:不是,理论指导下的几何间距排布和幂函数先验,才是真正起作用的部分。
关于记忆模式数量M的选择,论文测试了8、16、32三个档位,用8个模式时困惑度51.4,明显比16个模式(47.2)差;用32个模式时困惑度47.9,跟16个模式几乎没差别,却要多花5%的参数量和7%的计算时间。研究者据此把M定为16,这是个性价比最优的选择,再往上堆模式数量,边际收益已经很小了。
写在后面
读完这篇论文,最触动我的其实不是它的实验数据有多亮眼,而是它选择切入问题的那个角度。现在做长文本模型的工作,大部分都在"信息选择和路由"上做文章,比如怎么设计更聪明的门控机制,怎么让模型学会哪些信息该扔哪些该留。而FRAC选的是一条更底层的路:别管路由聪不聪明了,先把"遗忘"这件事本身的数学规律换掉。这就像大家都在争论怎么给一个漏水的桶打补丁,而FRAC说,我们先看看这个桶的材质是不是选错了。
另一个让我觉得有意思的地方是,这篇论文里反复出现的那种"用无穷维对象逼近有限维结构"的思路,其实在很多领域都能看到影子,比如信号处理里的傅里叶级数用有限个正弦波逼近任意周期函数,又比如数值分析里用有限元逼近连续的物理场。FRAC做的事情本质上是同一类操作,只是应用在了"记忆衰减规律"这个特定问题上。这让我意识到,很多看起来是AI架构创新的东西,底子其实是几十年甚至上百年前数学家们研究透了的经典工具,只是换了个应用场景。
论文里也留了一个开放性的思考方向,作者自己提到,未来可以把分数阶的长记忆机制跟delta规则那种精细的联想式记忆更新结合起来,一个管"记多久",一个管"记什么"。这两件事目前在FRAC里还是分开处理的,如果真能融合,会不会催生出下一代更强的长文本模型?这个问题现在没有答案,但至少提供了一个清晰的、值得去试的方向。
Q&A
Q1:FRAC和传统的Mamba模型最根本的区别是什么?
A:Mamba等传统模型的记忆遵循指数衰减规律,信息随时间越久影响力衰减越快。FRAC改用分数阶动力学,让记忆按幂函数规律缓慢衰减,对远距离信息保留更持久的影响力,同时通过有限的指数模式叠加把理论上无限维的计算变成可高效并行处理的有限状态递归。
Q2:FRAC需要维护更大的内存状态吗?
A:不需要。论文实测显示,FRAC每层维护的递归状态标量数量只有Mamba2和Mamba3的八分之一,GDN的四分之一多,它靠16个按几何间距排列的记忆模式巧妙组织信息,而不是单纯扩大内存来换取长记忆能力。
Q3:FRAC在实际测试中表现如何?
A:在训练长度4K但测试长度拉到6.4万词的大海捞针任务中,FRAC衰减最慢;在LongBench长文本测试中平均分17.9,超过最强基线GDN的16.0分;在短文本常识推理任务上与Transformer几乎持平,长短兼顾。
热门跟贴