跳到主内容

RoPE

2026年6月17日技术

Attn 本身不表示位置,不包含时序信息。在进入 Attn Block 之前,需要将文本的位置信息编码进 Embedding vector 里。

早期如 BERT 使用的是绝对位置编码,用一个 Embedding 去表示位置,无法外推,并且还需要额外存储位置信息。相对位置编码,用两个 token 之间的相对距离去编码解决了外推的问题,但实现很麻烦。

我们知道 Attn 本身就是抽象出 Query、Key、Value,计算 QK 相关性找 V 这个过程,这里用了矩阵乘法。对于矩阵我们有很多 trick。同时旋转 Q、K 两个矩阵,他们矩阵点乘的结果就能实现相对位置编码,而旋转过程中频率的衰减自然展现出了绝对位置的信息。

RoPE 利用了矩阵的数学特性,漂亮地做好了位置编码这件事。只需要做旋转就可以。空间复杂度 O(1),算法复杂度都降了很多。把大的 QK 矩阵分块改成一对一对的到二维空间做旋转,这些维度对从高到低不同频率衰减包含在其中。高频负责近距离,中频平衡精度和范围,低频确定远距离位置。外推能力强,没有引入额外的复杂度,非常美丽。

如果位置信息能从 off 到其他模块,RoPE 这块还能减负。比如使用 Linear Attn,如 Gated DeltaNet,自带很强的位置理解。Attn 就可以把长程的位置理解 off 掉,用 Partial RoPE 保留高频部分,只理解近邻的位置信息即可。

© 2024 - 2026 Niina's Blog

RSS