Transformer 位置编码(Positional Encoding)主要用于弥补 自注意力机制(Self-Attention) 对位置信息的忽略,常见的方案有以下几种:
1. 绝对位置编码(Absolute Positional Encoding)
绝对位置编码是最早在原始 Transformer 论文(《Attention Is All You Need》)中提出的方式,它在每个 token 位置参加一个固定的向量,用于表示其位置信息。
(1) 三角函数编码(Sinusoidal Positional Encoding)
公式:
P E ( p o s , 2 i ) = sin ( p o s 1000 0 2 i / d model ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)
P E ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i / d model ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i+1)=cos(100002i/dmodelpos)
其中:
- p o s pos pos 是 token 在序列中的位置索引,
- i i i 是 embedding 维度索引,
- d model d_{\text{model}} dmodel 是模型维度(如 512)。
|