PaperWeekly 08月11日
RoPE是长度外推之光,还是频谱灾难?真相埋在傅里叶里
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文从波、频域、傅里叶变换的角度,详细解析了RoPE技术的功过是非。RoPE通过三角函数对语义编码进行变换,实现了可周期延拓的Attention,为长度外推提供了可能性。然而,RoPE设定了过于理想的假设,即“Hidden States的每一维只存在单一频率的语义”,这在实际语言模型中并不成立,导致RoPE需要依靠微调、内插等算法才能发挥周期延拓性。本文还探讨了RoPE的误区,如线性层和激活函数也会影响位置信息、远距离衰减对长文本外推没有帮助、RoPE中频率接近1的部分并非高频段等。

📈RoPE使用三角函数对语义编码进行变换,实现了可周期延拓的Attention,为长度外推提供了可能性。

📉RoPE设定了过于理想的假设,即“Hidden States的每一维只存在单一频率的语义”,这在实际语言模型中并不成立,导致RoPE需要依靠微调、内插等算法才能发挥周期延拓性。

🔄RoPE使用“周期性编码”或者说“频域编码”来改进Attention,实现了长度外推,但频谱损坏限制了其效果。

📉基于RoPE的模型中,并非只有Attention才影响长度外推,线性层和激活函数也会产生影响(并且影响是负面的)。

📉RoPE的长距离衰减对长度外推并没有帮助,甚至可能有负面影响。

边路腰刀 2025-08-04 18:40 北京

长文本搞不定?



作者边路腰刀

单位清华大学博士生

来源|https://zhuanlan.zhihu.com/p/14369935885

现在开源社区对 RoPE 的评价是两种一边倒,要么只褒,要么只贬。更加遗憾的是,这些褒贬都站在 RoPE 原文的理论框架之下,缺少更多信息量。本文将站在波、频域、傅里叶变换的角度,在不一样的视角详解 RoPE 的功过是非。


TL; DR


引言

试想,如果语言模型(LM,Language Model)可以处理无限长度的输入文本,我们可以预先把所有参考资料都喂给 LM,或许 LM 在应对人类的提问时就变得无所不能。这个畅想主要依赖的技术被称为检索增强生成(RAG,Retrieval-Augmented Generation),在很多落地的 LM 产品中都有应用。

但这个畅想被很多 LM 的不理想特性阻挠,其中之一是 LM 不擅于处理无限长度的输入。这个问题主要由两种原因导致:

1. 过长的文本会让每个词汇都显得过于渺小,导致 LM 无法精确地获取所需信息;

2. 受限于硬件资源,LM 训练时的输入窗长比较短,当惯了“井底之娃”,LM 无法理解“更辽阔的世界”中各个词汇之间的关系。

这两个问题都很重要,但本文只讨论第二个问题。

针对第 2 个问题,研究者们通常从位置编码(PE,Position Embedding)的角度去解决。具体来讲,LM 会为输入文本中的每个词汇设置一个编号,用来区分不同词汇的位置。

但是,在固定窗长下进行训练时,LM 可能产生过拟合,只学习到指定范围内的编号之间的关系,但是无法理解没学习过的编号和位置。那么,如果存在某种 PE,当 LM 只学习它的一部分编号之间的关系之后,就能自然而然地领悟更多编号之间的关系,就可以帮助 LM 缓解这个问题。


周期延拓带来长度外推

“周期性编码”就恰好具备上面这个特点,因为每间隔一定距离,这类编码就会出现数值重复。于是,我们可以让 LM 学习一个周期内的词汇关系,因为 PE 在下一个周期呈现同样的变化规律,所以 LM 可以使用之前周期学习到的经验处理后面周期的词汇,实现周期延拓(Periodic Extension)

如果我们使用函数  表示这种处理能力,并假设  是具有频率  和周期  的周期函数,那么自然有:

所以这种能力可以被周期性地推广到更长的距离。

正弦位置编码(Sinusoidal Position Embedding)

其实,这类编码的先驱早在初代 Transformer 中就被提出,引入了正弦函数这种最常见的周期函数来编码不同的位置,这种编码也被称为正弦位置编码(SPE,Sinusoidal Position Embedding)。

如果假设输入的 Hidden States 是向量 ,SPE 会依据向量所处维度  和所处位置  将它旋转:

其中,旋转频率的取值为  是人为设置的底数(如 10000)。

可惜的是,初代 Transformer 只在模型的第一层使用了 SPE,并且为语义编码(Semantic Embedding)和 SPE 设置了两个独立的 Hidden States,并让二者直接相加来得到后层的输入。

这两种处理的弊端在于:1)随着前向传播,位置信息可能在后面的层逐渐丢失(毕竟位置信息通常没有语义信息重要);2)LM 只在区分位置的能力上实现了周期延拓,但是在处理语义信息的能力上并没有实现周期延拓(但后者才是 LM 最关键的能力)。

旋转位置编码(Rotary Position Embedding)

如果希望位置信息在前向传播过程中不丢失,那就在每一层都使用一遍位置编码。

如果希望 LM 在处理语义信息的能力也实现周期延拓,最朴素的想法就是——让语义信息也随着位置进行周期性变化。这个想法实现起来也并不复杂,把语义编码和正弦位置编码相乘即可。

结合上述两个处理之后,大名鼎鼎的旋转位置编码(RoPE,Rotary Position Embedding)就诞生了。如果给定第  维的 Query 向量  和 Key 向量 ,RoPE 将这些向量进行和 SPE 类似的旋转:

这种旋转将为 Attention Weight 带来周期性。我们假设位置  和  的两个词汇距离为 ,那么他们之间的 Attention Weight 将满足:

可以看到,每一维的 Attention Weight 自带周期性,而整体的 Attention Weight 同样会继承这样的特性。所以理论上,RoPE 可以实现无限长度的周期延拓,这至少可以让 LM 处理语义的能力在一定长度内带来泛化。

但奇怪的是,使用 RoPE 的 LM 依然难以直接在训练长度之外起效,必须依靠其他算法(如 YARN)来辅助其进行外推。

那么,到底是什么限制了 RoPE 的周期延拓,进而限制了 LM 的长度外推呢?


频谱损坏限制周期延拓

回顾刚刚的公式(1)和公式(4)后不难发现,“Hidden States 的每一维只存在单一频率的语义”是周期延拓起效的前提。如果这个假设不成立,周期延拓将失效。我们假设维度   中除了频率 ,还存在其他频率 ,并且二者的占比满足 1-\sigma:\sigma,那这一维度中的 Attention Weight 将变为:

显然, 不是频率  的周期,所以原本假设的周期性将被破坏:

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

注:上述结论成立的前提,是承认 RoPE 矢量化了 Hidden States,让 Hidden States 的每一维不再单纯是数字,而是和一个三角函数对应,作为这个三角函数的系数。这一假设将在文末的公式(12)~(13)进行证明,我们不妨先认为这一假设成立。

线性函数

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

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

激活函数

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

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

时域截断

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

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

其中, 是截断长度与周期长度相除后向下取整的整数值, 是在  处无限大但积分为 1、在其他位置取值均为 0 的奇异函数。

▲ Sa 函数示意图(中心频率等于 0 时)

可以看到,时域截断会让主要频率  的强度向周围的频率扩散,降低信噪比。如果该函数的周期  大于截断长度 ,这个信噪比将变得很低,会极大地抑制对只要频率的学习。

巧合的是,RoPE 中其实使用了大量频率低、周期长的分量,所以这个问题尤为严重。


长度外推的关键——更好的频域鲁棒性

那么频谱损坏究竟是不是基于 RoPE 的语言模型无法实现长度外推的主要原因呢?如果是的话,这些问题又该如何解决?

下面这篇论文给出了详细的理论分析,通过实验证明了频谱损坏确实是限制 RoPE 长度外推的关键原因。同时,这篇论文提出了傅里叶位置编码(FoPE,Fourier Position Embedding)来改善 RoPE 的频域属性,显著提高了长度外推能力。

Fourier Position Embedding: Enhancing Attention’s Periodic Extension for Length Generalization

https://arxiv.org/pdf/2412.17739

FoPE 的核心思想是“打不过就加入”。考虑到线性层和激活函数可以带来更强的表征能力,时域截断又是受到硬件限制无法改变,FoPE 索性就仍然保留了各层中的频谱损坏,转而提出了对于频谱损坏更加鲁棒的位置编码。鲁棒性的提升主要源于两方面:

1. 既然每一维中不可避免的混杂其他频率的分量,那就干脆在一开始就把每一维都建模成一个傅里叶级数(Fourier Series)。即使这样的建模不会避免频谱破坏,FoPE 却可以在每一维中分解出更多频率的信息(利用三角函数的正交性),从而让更多的频率分量保持周期延拓性;

2. 既然极低频的分量周期过长,会导致这些频率分量的周期特性无法被学习到,那就将他们裁剪成频率为 0 的直流分量。考虑到直流分量的良好性质(既可以看作周期无限短,又可以看作周期无限长),这个新加入的频率既保证了周期性,又可以让每个词汇的信息向无限远的词汇传递。


讨论——关于RoPE的误区

❌ RoPE只给Attention内部带来位置信息

在以往的几乎所有工作中,研究者们都认为只有 Attention 会处理位置信息,而线性层和激活函数则只处理每个 token 的语义信息。这个观点非常符合直觉,因为只有 Attention 才会涉及不同 token 间的相似度计算,而线性层和激活函数的操作对不同 token 是完全等价的。

但是,RoPE 打破了这种等价性,因为 RoPE 为 Hidden States 引入了“波动性”。在 RoPE 的作用下,Hidden States 的每一维都与一个频率的正弦波相绑定,不同 token 之间的相互作用也将由这些正弦波进行周期性的传递。

因此,虽然线性层和激活函数只对每个 token 自身的 Embedding 进行操作,但这种操作会被这些正弦波传递到其他的 token 那里。

于是,神奇的现象发生了:线性层和激活函数竟然也隐式地处理了位置信息!只不过这种处理是借由 token 之间的“波动性”进行传递。

那么,怎么能够形式化地描述出这些影响呢?上文中的公式(6)~(11)已经给出了解答。线性层和激活函数会为每一维带来杂频,从而干扰主频的传播,这会为长文本外推带来负面影响。

❌ RoPE的远距离衰减对长文本外推有帮助

Roformer 的原论文中曾经指出,RoPE 可以带来远距离衰减——token 间的注意力权重会随着距离变远而逐渐衰减。虽然原论文并没有指出远距离衰减对长文本外推有帮助,后续的工作却把“远距离衰减”作为提升长文本外推的必要性质。

但是,经过初步的实验观察,远距离衰减对长文本外推并没有明显帮助,甚至会有负面影响!

一方面,RoPE 中频率接近 0 的极低频分量提供了远程衰减性(读者可自行画图验证);另一方面,上文中的公式(10)~(11)指出这些极低频分量会对长文本外推带来极度负面的影响。所以,至少 RoPE 的“远距离衰减”对长文本外推没有帮助。

再结合 FoPE 原论文中 Sec 5.5 中的拆解实验,可以基本验证 RoPE 的远距离衰减甚至对长文本外推有负面影响。

❌ RoPE中频率接近1的部分是高频段

RoPE 的频率通常设置为 (1 可以取到、0 会取比较接近的小数)。所以,现在的学术社区中通常将频率接近 1 的部分称为 RoPE 的高频段,频率接近 0 的部分称为 RoPE 的低频段。

但是,这个描述却很容易引起误解:因为数字域的最高频率其实是 ,一个比 3 都要大的数字。所以,通常频率小于  才能被称作比较低。RoPE 只能算是数字域的低通滤波器!

同时,也正是 RoPE 的低通滤波特性,让 Attention 可以倾向于关注频率更低、波长更长的波,也就是关注距离更远的 token 之间的关系。这很可能是 RoPE 效果好的关键成因之一。

但是,错误地把频率为 1 就称为高频,容易限制学术社区对该算法的改进。基于 RoPE 的模型由于高频信息的缺失,通常对于短距离信息的捕捉并没有那么敏锐(随意颠倒一些相邻词汇的顺序,模型会给出接近的答案)。这个现象是好是坏仍有待探讨,但至少它可能会限制模型的推理能力和细节处理能力。


补充证明

▲ 傅里叶变换示意图

证明1:RoPE-based LM的Hidden States是频谱系数

Hidden States 一般有两个维度,不妨设为  和 。其中, 通常与词汇一一绑定, 代表句子长度。但是, 到底有什么物理含义其实并不清楚。

下面将证明,Hidden States 中的每一个 m 分别对应一个频率的频谱系数。

给定一个有限长度的连续函数 ,以及对于这个函数的等间隔采样序列 离散傅里叶变换(DFT,Discrete Fourier Transform)将他们变换到了等间隔的频谱序列,而原信号可以由其逆变换恢复:

其中, 是变换得到的频率分量。经过 DFT 的变换,原函数  被表示为了有限个周期函数的线性组合,可以看作是对  的一种近似估计。

但是,只有当原函数 x 中恰好只存在这些频率时,这个估计才是完全无偏的。为了得到更加精确的估计,我们可以根据函数 x 的特性任意地选取频率 

这种推广版的DFT被称为非均匀离散傅里叶变换(NUDFT,Non-Uniform DFT):

下面我们重温上文中介绍过的

公式(4): 

公式(5): 

不难发现,RoPE 隐式地实现了 NUDFT 的逆变换。所以,Attention 中的 Hidden States 可以被认为是时域信号,而 Attention 外部的 Hidden States 可以被看作是不同频率分量的频谱系数。

其中,每一个 m 分别对应一个频率的频谱系数。这样的话,Attention 外的线性层和激活函数都将直接对频谱系数进行操作,产生频谱损坏。

证明2:非线性函数对频谱的影响

将任意一个非线性函数  可以进行泰勒展开:

若输入是含有两个频率的函数 ,那么输出可以表示为:

为了方便理解,让我们考虑  的最简单分量:

根据积化和差 ,上式可以化作下面的形式:

可以看到,除了最开始的频率  和  之外,还有很多其他频率产生。

证明3:时域截断单频率函数的傅里叶变换

给定一个矩形脉冲函数:

它的傅里叶变换是 Sa 函数:

给定一个单频率函数 ,它的傅里叶变换是:

这等价于频域的冲激函数:

因为时域截断的单频率函数可以被看作是上述两个函数的乘积:

所以这个被截断的单频率函数的傅里叶变化就是上文中所介绍的公式(11)

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 


如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编


🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RoPE 旋转位置编码 长度外推 频域编码
相关文章