傅里叶位置编码(FoPE):清华、上海AI Lab提出,显著提升Transformer长文本泛化能力

清华&上海AI Lab提出傅里叶位置编码(FoPE),解决RoPE长文本泛化不足难题。通过傅里叶分析,发现频谱破坏是限制因素。实验表明FoPE显著提升Transformer性能,在AI及其他领域有广泛应用潜力。

原文标题:ICML 2025 | 清华、上海AI Lab等提出傅里叶位置编码,多项任务远超RoPE

原文作者:机器之心

冷月清谈:

本文介绍了清华大学与上海AI Lab提出的傅里叶位置编码(FoPE),旨在解决RoPE在长文本处理中存在的泛化能力不足问题。研究发现,RoPE的周期性延拓受到频谱破坏的限制,这种频谱破坏源于线性函数、激活函数和时域截断。FoPE通过将每一维建模成傅里叶级数,并裁剪极低频分量为直流分量,以此增强模型的频域鲁棒性和周期延拓性。实验结果表明,FoPE在困惑度、大海捞针以及下游任务中表现稳定,并超越了RoPE模型。该研究提出的分析结论和算法在AI及其他领域具有广泛的潜在价值,例如长视频生成、语义通信等。

怜星夜思:

1、文章提到RoPE在长文本泛化中存在局限性,FoPE通过傅里叶分析解决了这个问题。那么,除了傅里叶分析,是否还有其他数学工具或方法可以用来改进位置编码,提升模型处理长文本的能力?
2、文章中提到“打不过就加入”,FoPE保留了各层中的频谱损坏,转而提出了对于频谱损坏更加鲁棒的位置编码。那么,在其他AI领域,是否有类似“与其对抗不如适应”的策略的成功案例?
3、文章提到FoPE在多个任务上表现超过RoPE,那么,FoPE是否有可能取代RoPE成为新的主流位置编码方式?FoPE的局限性可能是什么?

原文内容


长文本能力对语言模型(LM,Language Model)尤为重要,试想,如果 LM 可以处理无限长度的输入文本,我们可以预先把所有参考资料都喂给 LM,或许 LM 在应对人类的提问时就会变得无所不能。


但是,LM 通常只在较短窗长下进行训练,可能产生过拟合,只学习到指定范围内的位置关系,但是无法理解没学习过的位置关系。为了缓解这个问题,当下最流行的便是引入具有周期性的旋转位置编码(Rotary Position Embedding,RoPE)。由于周期性编码每间隔一定距离就会出现数值重复,所以 LM 可以使用在少数几个周期内学习到的经验泛化到更多的周期当中。


但奇怪的是,使用 RoPE 的 LM 依然难以直接在训练长度之外起效,必须依靠其他算法(如 YARN)来辅助其进行外推。 那么,到底是什么限制了 RoPE 的周期延拓,进而限制了 LM 的长度外推呢?


于是,清华大学讲席教授、上海AI Lab主任/首席科学家周伯文教授的团队对这一问题进行了深入探索,使用傅里叶分析工具解读了使用 RoPE 的 Transformer 模型长文本泛化能力不足的原因之一是 RoPE 带来的周期性延拓受到了频谱破坏的影响。进一步地,该文章提出的傅里叶位置编码(Fourier Position Embedding,FoPE)大幅提升了Transformer的长文本泛化能力。



  • 论文标题:Fourier Position Embedding: Enhancing Attention’s Periodic Extension for Length Generalization

  • arXiv 链接:https://arxiv.org/pdf/2412.17739

  • 代码链接:https://github.com/TsinghuaC3I/Fourier-Position-Embedding


研究亮点


发现 —— 频谱损坏限制周期延拓


作者们通过观察 RoPE 的公式可以发现,它为 Hidden States 的每一维都指定了单一的频率,并假设这一维度的语义信息按照这个波长影响其他位置的语义。所以,RoPE 周期延拓性的起效前提是 “Hidden States 的每一维只存在单一频率的语义”。如果每一维明明存在不同频率的语义,却仍然按照单一频率的波长来估计这部分语义的传递规律,RoPE 所带来的周期延拓将产生混乱,进而无法实现长文本泛化。



遗憾的是,在使用 RoPE 的 LM 中,这个假设只在 LM 的第一层中成立,但在后面的所有层中都不成立。因为后面的所有层中,每一维中都掺杂了除主频之外的其他频率分量,这个现象可以被称作频谱损坏(Spectrum Damage)。频谱损坏主要有三个来源:① 线性函数;②激活函数;③时域截断。


线性函数


如果我们假设线性层的权重为图片,其对输入图片进行处理得到输出图片,那么每一维输出将由每一维输入的线性组合构成:



考虑到每一维输入所对应的频率是不一样的,那么图片将掺杂输入中的所有频率分量。


激活函数


根据高等数学的知识,给定一个含有两个频率的函数图片,以及任意一个与时间无关的非线性函数图片图片被函数图片作用后得到的输出将存在多个频率分量,这些频率将是输入频率的线性组合:



这个结论可以通过泰勒展开进行简单证明,也可以任意地推广到存在更多频率的情况。可以看到,经过线性层之后,每一维本就掺杂了多种频率。在经过激活函数之后,这种掺杂会变得更加严重。


时域截断


给定一个被截断为长度N的单频率函数



通过傅里叶变换可以得到(详见文末)这个函数的频谱是:



其中,图片是截断长度与周期长度相除后向下取整,图片是在图片处无限大但积分为 1、在其他位置取值均为零的奇异函数。可以看到,时域截断会让主要频率图片的强度向周围的频率扩散,降低信噪比。如果该函数的周期图片大于截断长度N,这个信噪比将变得很低,会极大地抑制对只要频率的学习。巧合的是,RoPE 中其实使用了大量频率低、周期长的分量,所以这个问题尤为严重。


算法 —— 频域鲁棒性是长文本泛化关键


在以往的研究中,大家普遍认为只有 Attention 才会影响长度外推。但从上面的分析可以看出,整个模型中的线性层、激活函数和时域截断也都会对长度外推产生影响,并且是不利影响(也就是上文提到的频谱损坏)。为了改善频谱损坏对长文本泛化的不利影响,这篇论文提出了傅里叶位置编码(FoPE,Fourier Position Embedding)来提升模型的频域鲁棒性和周期延拓性,进而提升长文本泛化。


FoPE 的核心思想是 “打不过就加入”。考虑到线性层和激活函数可以带来更强的表征能力,时域截断又是受到硬件限制无法改变,FoPE 索性就仍然保留了各层中的频谱损坏,转而提出了对于频谱损坏更加鲁棒的位置编码。鲁棒性的提升主要源于两方面:① 既然每一维中不可避免的混杂其他频率的分量,那就干脆在一开始就把每一维都建模成一个傅里叶级数(Fourier Series)。即使这样的建模不会避免频谱破坏,FoPE 却可以在每一维中解码出更多频率的信息(利用三角函数的正交性);② 既然极低频的分量周期过长,会导致这些频率分量的周期特性无法被学习到,那就将他们裁剪成频率为 0 的直流分量。考虑到直流分量的良好性质(既可以看作周期无限短,又可以看作周期无限长),这个新加入的频率既保证了周期性,又可以让每个词汇的信息向无限远的词汇传递;


综上,FoPE 的公式可以写作:



实验


进一步地,文章在困惑度、大海捞针准确率以及很多下游任务 Benchmark 对不同方法进行了对比,实验发现 FoPE 在这些任务上都有稳定的表现,在绝大多数远超过使用 RoPE 的模型。





潜在影响


论文中使用傅里叶工具得到的分析结论和算法可能存在更广泛的潜在价值,有潜力应用在更多的领域和任务:① AI 领域内:长视频生成、kv-cache 压缩、多模型协同等;② AI 领域外:语义通信、光计算脑机接口。


作者简介:华尔默,清华大学博士生,研究方向是基础模型的架构设计与训练算法设计,在 ICML、ICLR、NeurIPS、ACL、EMNLP、COLM、AAAI 等顶级会议上发表过论文。



© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]


嗯,计算复杂度是个关键。另外,通用性也是一个问题。RoPE已经应用在很多模型和任务中了,FoPE要推广开来,需要证明它在不同类型的任务和数据上都能work。而且,社区的支持也很重要,得有人愿意去维护和改进FoPE的代码。

从工程角度讲,可以尝试学习并优化位置编码的超参数。RoPE或者FoPE都涉及到一些超参数,比如频率的选择、傅里叶级数的阶数等。使用一些自动超参数优化算法(如 Bayesian Optimization)来调整这些参数,可能会有意想不到的效果。

嗯,小波变换确实是个好思路。另外,我觉得可以借鉴控制论里的状态空间模型,把位置信息看作是状态变量,用状态转移方程来描述位置之间的关系。这样可以更灵活地建模位置之间的依赖关系,也许能提升长文本处理的鲁棒性。

取代RoPE?我觉得有潜力,但路还很长。FoPE效果好是建立在更复杂的计算之上的,实际应用中,计算资源和延迟也是要考虑的。如果FoPE的计算复杂度远高于RoPE,那可能只有在对精度要求极高的场景下才会考虑使用。

从更广泛的角度来看,集成学习也算是这种策略的体现。与其花大力气去训练一个完美的模型,不如训练多个稍微差一点的模型,然后将它们的预测结果集成起来,往往能获得更好的效果。感觉有点像“三个臭皮匠,顶个诸葛亮”的意思。

对抗生成网络(GANs)算一个典型的例子吧。GANs不是试图去消除生成器产生的噪声,而是通过判别器来学习去分辨这些噪声,从而提高生成器的生成质量。这就像是承认了噪声的存在,然后利用它来改进模型。

在鲁棒控制领域也有类似的思想。在设计控制器时,不会试图去精确地建模所有的不确定因素,而是设计一个鲁棒的控制器,使得系统在一定范围内的不确定因素下都能保持稳定和性能。

我觉得可能存在过拟合的风险。FoPE通过傅里叶级数对位置信息进行建模,如果级数阶数过高,可能会导致模型记住训练数据中的噪声,从而降低泛化能力。所以,如何选择合适的傅里叶级数阶数,也是一个需要研究的问题。

我觉得可以考虑用小波变换。小波变换在时频分析方面比傅里叶变换更灵活,尤其是在处理非平稳信号时。长文本中不同位置的信息可能具有不同的重要性和频率特征,小波变换或许能更好地捕捉这些差异。