由于 Transformer 完全不含循环和卷积结构,模型本身对序列中 token 的顺序没有感知能力——若仅靠注意力机制,打乱顺序的输入会得到相同结果。因此必须显式地向输入注入位置信息。
原始 Transformer 采用不同频率的正弦和余弦函数生成位置编码,将其直接加到输入嵌入上。其设计特点是:任意两个位置之间的编码关系可以通过线性变换相互推导,使模型能够学习基于相对位置的注意力,并且具备对超出训练长度序列的一定泛化能力。
除正弦编码外,许多后续模型采用可学习的位置嵌入,即把位置当作可训练参数随模型一起优化。两种方式在实践中均被证明有效,可学习编码在特定任务上往往更灵活,正弦编码则在长度外推上更具优势。