知了AI学习平台Logo知了
算法动画 · 注意力

位置编码动画

展示 Transformer 如何用正弦/余弦函数为词嵌入注入位置信息,使模型感知序列顺序。

Positional Encoding

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
未激活·当前高亮(5 个元素)
1

Transformer 的自注意力机制本身是排列不变的,无法区分词序,需要额外注入位置信息。

第 1 步 / 共 714%
公式推导

位置编码: sin/cos公式推导

从Transformer缺乏位置信息的问题出发,推导正余弦位置编码公式及其相对位置特性。

第 1 / 617%
1

问题: 自注意力无位置感知

Attention(Q,K,V)=softmax(QKT/dk)V\text{Attention}(Q, K, V) = \text{softmax}(QK^T/\sqrt{d_k})V
👉

关键部分

排列不变\text{排列不变}

自注意力对输入序列的顺序不敏感(排列不变),因此需要额外加入位置编码来注入位置信息。

代码沙盒

位置编码

使用 NumPy 实现正弦余弦位置编码。

📌 正弦余弦位置编码:Transformer 论文中的位置编码公式。

🧠AI 冷知识

你知道吗?

这些有趣的 AI 小知识可能让你大吃一惊

💡
概念

原始 Transformer 用 sin/cos 位置编码,设计得极其巧妙:不同维度用不同频率的正弦波,从 2π 到 10000×2π。这意味着高频维度编码精确位置(像时钟的秒针),低频维度编码粗略位置(像时针)。更优雅的是,固定相对位置偏移后,sin(p+k) 可以用 sin(p) 和 cos(p) 的线性组合表示——这就是为什么 sin/cos 编码能让模型学到相对位置关系。但绝对位置编码有个致命缺陷:训练时见过最长 512 的位置,推理时超过 512 就完全失效——这直接催生了后来的相对位置编码和 RoPE。

来源:Vaswani et al., "Attention Is All You Need", NeurIPS 2017

一句话总结
💡

位置编码为每个位置生成独特的向量并叠加到嵌入上,使注意力机制能感知序列中 token 的相对与绝对位置。

常见误区

这些坑别踩

✗

误区 1

没有位置编码 Transformer 也能分清顺序。

✓

正确理解

自注意力对输入顺序不变,不加位置编码会把"猫追狗"和"狗追猫"视为相同。

✗

误区 2

正弦位置编码需要学习。

✓

正确理解

原始正弦/余弦位置编码是固定的,不需训练;可学习位置编码则是另一种方案。

✗

误区 3

位置编码能无限外推到任意长度。

✓

正确理解

固定正弦编码和可学习编码都有外推上限,长上下文需用 RoPE/ALiBi 等相对位置方案。

巩固练习

章节练习与面试准备

通过测试检验学习效果,通过面试题提升实战能力

章末测试

共 4 题 · 选择题

1

为什么 Transformer 需要位置编码(Positional Encoding)?

2

原始 Transformer 使用的正弦位置编码公式为?

3

正弦位置编码的一个重要特性是?

4

关于可学习位置编码(Learned PE)与正弦位置编码(Sinusoidal PE)的对比,下列正确的是?

面试经典题

共 4 题 · 先思考再看答案

1
基础

解释 Transformer 位置编码的必要性,并说明正弦位置编码的设计原理。

2
中等

分析正弦位置编码为什么能表达相对位置关系,并说明其外推能力。

3
困难

比较绝对位置编码、相对位置编码与 RoPE 的原理与优缺点。

4
中等

在实际项目中如何选择位置编码方案?有哪些实践建议?

💡 建议:先独立思考并组织语言,再对照参考答案查漏补缺