Rotary Position Embedding,旋转位置嵌入
ref: RoFormer
概述
在 Transformer 架构中, 注意力机制 使用参数“距离(pos)”来理解上下文之间的关联程度。该距离参数也是限制了 Transformer 上下文长度的首要因素。
RoPE 修改了距离的表现形式,使用一个旋转矩阵变换查询向量 Q 参数,使其使用一个高维的螺旋旋转来表示线性的距离参数。最终达到扩展 Transformer 上下文的目的。
而 RoPE 之后,原先表示距离长度的 pos,现在用来表示旋转角度。
细节
将 Attention 中表示位置的参数,替换为旋转参数。
QUERY 查询的向量表示
查询向量是多维的,可以用复数形式公式化表示:
- 第一项是实部,第二项是虚部
等效于一个二维向量
旋转操作
- 对 做一个旋转矩阵的操作,操作参数为
- i 表示虚部部分
- m 表示长度
- 表示对于维度 d 的独立旋转频率,对于不同的 d 维度,使用不同 的旋转参数,实际上就是表示了 Transformer 对于不同距离上的参数使用不同的旋转维度,这样就可以让 Transformer 区分不同的距离长度对 Query 的影响。
使用欧拉公式-复分析展开,得到
将上式乘入公式,得到的就是一个对于 的旋转操作