位置编码(Positional Encoding)笔记
一句话:Transformer 的 Attention 对输入顺序无感知,位置编码负责把"第几个 token"这个信息注入模型。从固定正弦函数到可学习参数,再到当前主流的旋转编码(RoPE),每一代都在解决上一代的长度外推问题。 一、为什么需要位置编码? RNN 逐步处理序列,天然感知顺序。Transformer 并行处理所有 token,Attention 本质是集合操作,对顺序完全无感: ["我", "爱", "你"] 和 ["你", "爱", "我"] → Attention 看到的是完全相同的三个向量集合,无法区分 必须手动把位置信息注入模型,这就是位置编码的作用。 二、发展历程(简览) 时间 方案 代表模型 核心问题 2017 Sinusoidal PE(正弦固定编码) 原版 Transformer 外推效果差,只有绝对位置 2018 Learned PE(可学习编码) BERT、GPT-2 硬性长度上限,超出训练长度就失效 2019 Relative PE(相对位置编码) Transformer-XL、T5 实现复杂,外推仍有限 2021 RoPE(旋转位置编码) LLaMA、Qwen、DeepSeek 当前主流 ✅ 2022 ALiBi(线性偏置) MPT 强制近距离偏好,长程依赖受损 三、前三代简述 Sinusoidal PE(2017) 用不同频率的正弦/余弦函数生成固定位置向量,直接加到 token embedding 上: $$PE_{(pos,\ 2i)} = \sin!\left(\frac{pos}{10000^{2i/d_{model}}}\right), \quad PE_{(pos,\ 2i+1)} = \cos!\left(\frac{pos}{10000^{2i/d_{model}}}\right)$$ 优点:无需训练,参数量为 0 缺点:超出训练长度后效果急剧下降,只有绝对位置信息 Learned PE(2018) 把位置编码当成普通 Embedding 参数,随模型一起训练(BERT 最大 512,GPT-2 最大 1024)。 ...