↪️RoPE 旋转位置编码

type
status
date
slug
summary
tags
category
icon
password
😀
之前只知道RoPE是在进行位置编码,但是不知道具体细节,于是学习一下RoPE。

😛 SelfAttention

notion image
SelfAttention本身是不会捕获到token间的位置信息的,但是我们希望attention计算时,能够考虑到当前token与其它token之间的位置关系。因此我们需要想办法让带上位置信息。
对于处于位置向量和处于位置向量,我们通过一个函数给它附加上位置信息:
然后我们再用附加了位置信息的去计算attention。
notion image
上图是llama2 SelfAttention的结构,Q,K在用于计算attention之前,会先通过RoPE函数,这个RoPE函数就是一种编码方式。

的数学性质

我们希望计算attention的时候,能考虑到token之间的相对关系,即:,因此我们期望函数具有以下性质:
即经过编码后向量相乘,得到的结果里面包含它们的相对位置信息:
而Rope就是满足上述性质的一个关于的解。

RoPE

先考虑二维的情况,对于f的解为:
🪢
其中本质是一个旋转矩阵,所以这种编码叫旋转位置编码
于是有:
这个解满足了预期的性质。
由于内积满足线性叠加性,因此任意偶数维的RoPE,我们都可以表示为二维情形的拼接,即:

📎 参考文章

Prev
黑格尔
Next
大模型推理加速手段整理
Loading...