Rotary Position Embedding,旋转位置嵌入

ref: RoFormer

概述

Transformer 架构中, 注意力机制 使用参数“距离(pos)”来理解上下文之间的关联程度。该距离参数也是限制了 Transformer 上下文长度的首要因素。

RoPE 修改了距离的表现形式,使用一个旋转矩阵变换查询向量 Q 参数,使其使用一个高维的螺旋旋转来表示线性的距离参数。最终达到扩展 Transformer 上下文的目的。

而 RoPE 之后,原先表示距离长度的 pos,现在用来表示旋转角度。

细节

将 Attention 中表示位置的参数,替换为旋转参数。

QUERY 查询的向量表示

查询向量是多维的,可以用复数形式公式化表示:

  • 第一项是实部,第二项是虚部

等效于一个二维向量

旋转操作

  • 做一个旋转矩阵的操作,操作参数为
  • i 表示虚部部分
  • m 表示长度
  • 表示对于维度 d 的独立旋转频率,对于不同的 d 维度,使用不同 的旋转参数,实际上就是表示了 Transformer 对于不同距离上的参数使用不同的旋转维度,这样就可以让 Transformer 区分不同的距离长度对 Query 的影响。

使用欧拉公式-复分析展开,得到

将上式乘入公式,得到的就是一个对于 的旋转操作