位置编码动画
展示 Transformer 如何用正弦/余弦函数为词嵌入注入位置信息,使模型感知序列顺序。
Positional Encoding
Transformer 的自注意力机制本身是排列不变的,无法区分词序,需要额外注入位置信息。
位置编码: sin/cos公式推导
从Transformer缺乏位置信息的问题出发,推导正余弦位置编码公式及其相对位置特性。
问题: 自注意力无位置感知
关键部分
自注意力对输入序列的顺序不敏感(排列不变),因此需要额外加入位置编码来注入位置信息。
位置编码
使用 NumPy 实现正弦余弦位置编码。
📌 正弦余弦位置编码:Transformer 论文中的位置编码公式。
你知道吗?
这些有趣的 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 题 · 选择题
为什么 Transformer 需要位置编码(Positional Encoding)?
原始 Transformer 使用的正弦位置编码公式为?
正弦位置编码的一个重要特性是?
关于可学习位置编码(Learned PE)与正弦位置编码(Sinusoidal PE)的对比,下列正确的是?
面试经典题
共 4 题 · 先思考再看答案
解释 Transformer 位置编码的必要性,并说明正弦位置编码的设计原理。
分析正弦位置编码为什么能表达相对位置关系,并说明其外推能力。
比较绝对位置编码、相对位置编码与 RoPE 的原理与优缺点。
在实际项目中如何选择位置编码方案?有哪些实践建议?
💡 建议:先独立思考并组织语言,再对照参考答案查漏补缺