位置编码
位置编码让 Transformer 获得 token 所在位置的信息。原始正弦方案为每个位置生成多频率的正弦、余弦向量,再与 token 嵌入相加。因此同一个 token 在不同位置可有不同输入。
the cat saw the dog 的两个 the 使用同一静态嵌入,位置却为 0 和 3。位置编码在混合上下文之前提供这种区分。
同一嵌入,加不同位置
记嵌入为 E(the),实际加入的位置贡献为 A(p):
x(p) = E(the) + A(p)
开启时 A(p) = PE(p),关闭对照时为零。开关只控制是否加入,不改变 PE 公式:
PE(p)[2i] = sin(p / 10000^(2i/d))
PE(p)[2i + 1] = cos(p / 10000^(2i/d))
p 是位置,d 是向量宽度,i 选择一对分量,角度用弧度。偶数分量取 sin,奇数取同一角度的 cos,值都在 [−1,1]。
本课 d = 8,四对分母为 1、10、100、1000,后续变化更慢。除位置改变频率,不改振幅,也不是为不同 token 分配不同的位置编号。
位置与嵌入同宽,八项对应相加仍八项;拼接则十六项,需修改输入结构。原 Transformer 在相加前将 token 嵌入乘 √d,这里 E 已包含这一共同缩放,见原论文 3.4–3.5 节。
逐步演示
默认比较位置 0 与 3 的 the,八分量,开启编码。工作区只展开两次出现,不展开中间词。
- 只看嵌入:两者都是 E,差为零,不需要指定数值权重。
- 第一对:分母一,角度 0 与 3,sin 为
0.000000、0.141120,cos 为1.000000、−0.989992。位置零是[0,1],不是全零。 - 第二对:分母十,角度 0 与 0.3,sin 为
0.000000、0.295520,cos 为1.000000、0.955336。位置没变,波动更慢,幅度范围相同。 - 后两对:同样用分母 100、1000,形成完整表:
| 分量 | 函数 | PE(0) | PE(3) |
|---|---|---|---|
| 0 | sin(p) | 0.000000 | 0.141120 |
| 1 | cos(p) | 1.000000 | −0.989992 |
| 2 | sin(p/10) | 0.000000 | 0.295520 |
| 3 | cos(p/10) | 1.000000 | 0.955336 |
| 4 | sin(p/100) | 0.000000 | 0.029996 |
| 5 | cos(p/100) | 1.000000 | 0.999550 |
| 6 | sin(p/1000) | 0.000000 | 0.003000 |
| 7 | cos(p/1000) | 1.000000 | 0.999996 |
- 对应相加:第零分量分别为
e₀ + 0.000000、e₀ + 0.141120,其他项同理。 - 相减隔离位置:
x(3) − x(0)
= (E + PE(3)) − (E + PE(0))
= PE(3) − PE(0)
差向量的欧氏长度约 2.017479,用舍入前数值计算。它是八项差平方和的平方根,不是三格位置差,也不是语义相似分。零表示坐标全相同,正值表示至少一项不同。
- 关闭对照:两输入都是
E+0,差长为 0。结尾并排保留两结果。对比位置可选整数 1–32,预设可直接跳到对应证据。
多频率保留不同尺度的差异
一对 sin/cos 在角度走完 2π 后连续周期重复,整数位置通常不精确落在整圈,但可能接近。
把位置改 6,或选“Fast pair nearly repeats”。最快一对与位置零的距离约 0.282240;第二对只转 0.6 弧度,距离约 0.591040。一个频率的差很小,其他频率仍可提供区分。
距离不是位置间隔的单调函数。位置六的完整差长 0.657741 反而小于位置三的 2.017479。周期性使它不能直接解释为相隔词数或语义距离。
固定相对位移下,三角加法公式可将平移后的一对表示为原对的线性变换,提供模型可学习利用的相对位置结构,但可用不等于训练后一定学会。
复杂度与实现检查
n 位置、d 维,物化编码时间与空间均 O(nd),单位置 O(d)。正弦编码无可学习的位置查表参数,只求固定公式,不含后续注意力成本。
按 token 的槽位分配 PE,并保持同宽。可把同词放两处,检查输入差是否等于 PE(q) − PE(p),无需知道嵌入权重,也能抓出把同一位置向量广播到所有槽位的错误。
边界情况
- 关闭:本对照的重复 token 输入相同,未使用的 PE 仍可计算查看。
- 位置零:所有 sin 为零、cos 为一,不能当零向量。
- 很小的显示差:慢速 cos 可能舍入成相同数,计算和范数保留完整精度,聚焦时显示更多位。
- 长上下文:公式可计算训练长度外位置,不保证在那里有效。32 只是滑杆上限。
- 其他顺序来源:无掩码、无位置信号的自注意力置换等变;因果掩码本身有顺序结构,其他架构用旋转或注意力偏置。关掉这一种加法不等于任何模型都完全没有顺序信息。
常见错误
- 把位置 p 与分量
2i、2i+1混为一谈。 - 同一对 sin/cos 用不同分母。
- 用位置放大振幅;这里改变角度,值仍有界。
- 每词都加
PE(0),共同向量在同词比较时抵消。 - 拼接后不修改下一层宽度。
- 不同输入就宣称正确理解词序。这里只证明位置信号存在,使用效果取决于模型与训练。
模型范围
原始加法正弦公式、八维、两次出现、符号化的共同嵌入。没有注意力、训练、归一化、dropout 或语义预测。相关内容:词嵌入、注意力机制、Transformer 块。