真实面经题目 · 原创解析
Transformer 为什么使用正弦/余弦位置编码,相比可学习位置向量有哪些好处和局限?
这道题考察 Transformer 位置信息的基本原理和边界。好答案要先说明 self-attention 本身不感知顺序,再解释正弦/余弦位置编码的多频率、无参数、可按公式外推和相对位移线性性质,同时承认固定绝对位置编码不等于长上下文能力,现代模型常用 RoPE、ALiBi 或相对位置方法。
真实面经题目 · 原创解析
这道题考察 Transformer 位置信息的基本原理和边界。好答案要先说明 self-attention 本身不感知顺序,再解释正弦/余弦位置编码的多频率、无参数、可按公式外推和相对位移线性性质,同时承认固定绝对位置编码不等于长上下文能力,现代模型常用 RoPE、ALiBi 或相对位置方法。
Transformer 的 self-attention 本身对 token 顺序不敏感,所以需要位置编码注入顺序信息。正弦/余弦位置编码用不同频率的 sin 和 cos 为每个位置生成确定性向量:低频维度表达长距离变化,高频维度表达局部位置变化。相比可学习位置向量,它没有额外参数,不依赖训练时最大长度,超过训练长度也能按公式生成,并且 sin/cos 的性质让模型更容易通过线性变换表达相对位移。不过它是固定绝对位置编码,不能按任务自适应学习;能生成更长位置不代表模型真的能泛化到超长文本。长上下文或相对距离建模常会选 RoPE、ALiBi 或相对位置编码。
标准 self-attention 主要根据 token 表示计算两两关系,如果不加位置,同一组 token 的排列顺序很难被模型区分。位置编码让模型知道第几个 token、相对远近和序列结构。
每个位置 pos 在不同维度使用不同频率的 sin(pos / base^{2i/d}) 和 cos(pos / base^{2i/d})。不同频率提供多尺度位置特征,让模型同时感知局部顺序和长距离变化。
固定公式不增加可训练参数,也不需要为每个位置学习一个表。只要给出位置编号,就能生成训练长度之外的位置向量;可学习位置 embedding 则通常只能覆盖训练时定义的最大长度。
sin/cos 的加法公式使 PE(pos+k) 可以由 PE(pos) 通过和 k 相关的线性关系表达。这让注意力层更容易学习相对距离模式,而不是完全死记绝对位置。
固定编码不能为具体任务自适应调整,绝对位置也不一定最适合长度外推。RoPE 把位置信息融入 Q/K 旋转,ALiBi 给 attention score 加距离 bias,相对位置编码直接建模相对距离,很多长上下文模型更偏向这些方案。
要分别在训练长度内、超出训练长度、位置扰动、顺序打乱和长文本任务上比较固定位置、可学习位置、RoPE、ALiBi 等方案,不能只用参数量做判断。
因为 sin(pos+k) 和 cos(pos+k) 可以写成 sin(pos)、cos(pos) 与 sin(k)、cos(k) 的线性组合。也就是说固定偏移 k 对应一种可学习的线性变换,注意力层更容易捕捉相对位移。
它需要为每个位置学习参数,通常只能覆盖预设最大长度;超过训练长度时没有天然定义。优点是灵活,能适配任务内长度分布,缺点是外推和参数效率较弱。
传统正弦编码通常加到 token embedding 上,RoPE 则把位置信息作为旋转作用在 Q/K 上,使 attention 内积天然包含相对位置信息,因此在很多长上下文和 decoder-only LLM 中更常见。
模型会更接近对 token 集合做 permutation-invariant 的关系建模,很多依赖词序、语法、位置和因果关系的任务会明显退化。