跳到主要内容

位置编码(正弦位置编码、可学习位置编码)

要解决的问题

Self-Attention 对 token 置换不变(仅依赖两两关系),无法区分顺序。位置编码(Positional Encoding)向表示中注入 位置信息

正弦位置编码(原始 Transformer)

PE(pos,2i)=sin(pos/100002i/d),PE(pos,2i+1)=cos(pos/100002i/d)PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d}), \quad PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d})
  • 不同维度不同波长,可外推一定长度
  • 与词嵌入 相加 后进入第一层

可学习位置编码

为每个位置 pos[0,Lmax)pos \in [0, L_{\max}) 学习向量 ppos\mathbf{p}_{pos}。灵活但 超过 LmaxL_{\max} 需外推或插值

现代主流:RoPE(相对位置)

不在输入相加,而在 Q、K 上旋转,编码相对距离;长上下文外推见 2.3.1 位置编码改进(RoPE、ALiBi、YaRN)。

方案类型LLM 采用度
正弦绝对早期 Transformer
可学习绝对绝对BERT 等
RoPE相对Llama、Qwen、DeepSeek
ALiBi线性偏置部分长上下文模型

与嵌入的关系

xt=Etoken(t)+PEt(绝对方案)\mathbf{x}_t = \mathbf{E}_{token(t)} + \mathbf{PE}_t \quad \text{(绝对方案)}

Decoder-only LM 通常 因果 mask + RoPE 组合。

参考链接