Niina

Niina

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