RoPE 旋转位置编码
Transformer 本身分不清词的先后,得额外注入“位置”。RoPE(旋转位置编码)的办法特别优雅:不是把位置加上去,而是把每个词的向量按它的位置旋转一个角度——位置越靠后,转得越多。妙处在于:两个词做注意力时,分数只取决于它们之间转角的差,也就是相对位置,跟它们在句子里的绝对位置无关。所以同样的相对距离,无论在句首还是句尾,模型看到的都一样,也因此能外推到训练时没见过的长度。拖动两个词的位置试试。
每个位置把向量转一个固定的角度。蓝=查询词在位置 m、金=键词在位置 n。它们的注意力分数 = 两个箭头夹角的余弦,而夹角 = (m−n)×每位转角。
控制
每个位置 = 一个转角
位置 = 旋转
位置越靠后,向量转得越多——把顺序信息编进了角度里。
只看相对位置
注意力分数只取决于两词转角之差 (m−n),绝对位置无关——更稳、更通用。
能外推
因为只认相对距离,模型能处理比训练时更长的序列,这是 RoPE 流行的原因。