位置编码
概述
位置编码(Positional Encoding)是 Transformer 中补充序列顺序信息的机制。Self-Attention 本身只计算 token 间内容相关性,不感知排列顺序,因此必须将位置信息显式注入每个 token 的表示中。
关键内容
- 核心作用:将位置向量叠加到词向量上($x_i' = x_i + p_i$),使模型同时感知内容与位置信息,区分"狗咬人"与"人咬狗"等顺序不同的语义。
- 两大流派:绝对位置编码编码 token 的绝对位置编号("我在第几位");相对位置编码编码 token 间相对距离("我离你多远"),直接注入注意力分数计算。
- 选型原则:中短文本、标准预训练场景用绝对位置编码已够用;长序列建模、外推能力要求高或关注结构关系时,相对位置编码更有优势。
- 在推荐系统中的应用:SASRec 使用可学习的位置嵌入(Learnable Positional Embedding)而非 Transformer 的正弦/余弦固定编码,实验证明这对推荐任务更为有效。位置编码与 因果掩码 配合,使模型能够在保持时序因果性的同时捕获序列中的位置信息。
- 原版正弦/余弦编码(Vaswani et al., 2017):$PE(pos, 2i) = \sin(pos / 10000^{2i/d_{model}})$,$PE(pos, 2i+1) = \cos(pos / 10000^{2i/d_{model}})$。特点:不同位置编码各不相同,相对位置差可通过线性变换推导,可泛化到训练时未见过的更长序列。
- 现代变体:可学习位置编码(BERT, GPT 采用);RoPE 旋转位置编码(LLaMA, GPT-NeoX 采用);ALiBi 线性偏置(MPT 采用)。
来源
- raw/ChatGPT-Chat/ChatGPT-Self-Attention机制解析/02-什么是位置编码?对比绝对位置编码和相对位置编码的优缺点 — ChatGPT 对话:Self-Attention 机制解析
- raw/articles/ai-papers/machine-learning/14_transformer_2017.md — 原版正弦/余弦编码 + 现代变体