位置编码(Positional Encoding)
一句话总结
位置编码为Transformer注入Token的顺序信息,弥补Self-Attention本身无法区分位置的缺陷,是模型理解序列结构的关键组件。
核心概念
Transformer的Self-Attention对输入是置换等变(permutation equivariant)的,即打乱Token顺序不影响输出(除了顺序也被打乱)。因此必须显式注入位置信息。主流方案:(1)正弦位置编码(Sinusoidal)——原始Transformer使用,固定公式生成,不可学习;(2)可学习绝对位置编码——直接学习每个位置的向量,GPT-2使用;(3)RoPE(旋转位置编码)——通过旋转矩阵将位置信息编码到QK的点积中,天然支持相对位置,LLaMA/Qwen等主流模型采用;(4)ALiBi——在注意力分数上加距离相关的偏置。
为什么重要
没有位置编码,’我爱你’和’你爱我’对模型来说完全相同。位置编码的选择还直接影响模型的长度泛化能力——能否推理超过训练时最大长度的序列。RoPE的流行正是因为它在长度外推上表现更好。
实践要点
RoPE配合NTK-aware插值或YaRN可以将上下文窗口扩展数倍;训练时的最大序列长度会影响位置编码的有效范围;RoPE的base参数(默认10000)影响不同频率分量的周期,调大base有助于长文本。
常见误区
误区一:位置编码只是简单的序号——现代位置编码蕴含复杂的数学结构,如RoPE利用了复数域的旋转性质。误区二:绝对位置编码和相对位置编码效果一样——相对位置编码在长度泛化和捕获局部结构上通常更优。误区三:位置编码一旦训练好就不能调整——可以通过插值等技术适配新的上下文长度。