Page 14 · SimLabs LLM Visual

位置编码:让 Transformer 看见顺序

Self-Attention 本身并不知道“第一个词”和“第三个词”有什么区别。如果只把 token 当成一组无序向量,猫 咬 狗狗 咬 猫 在很多地方会看起来过于相似。位置编码的任务,就是把“顺序”这个信息显式注入进去。

看顺序信息如何被加进去 比较词向量和位置向量 理解正弦位置编码的变化规律

同样的词,换个顺序,输入表示就该不同

先切换句子顺序,再点击某个位置。左边展示词向量、位置向量和最终输入向量,右边会解释这个位置上到底发生了什么变化。

Word Embedding

词向量矩阵

相同 token 的词向量只跟词本身有关,不跟它在第几个位置有关。

Position Encoding

位置向量矩阵

不同位置会拿到不同的位置信号,即使 token 本身相同,位置向量也会不同。

Input = Word + Position

最终输入矩阵

模型真正读到的是两者相加后的结果,而不是词向量单独存在。

正弦位置编码是怎样随位置变化的

下面这个实验用简化版 4 维位置编码展示不同位置的数值模式。拖动位置滑块,观察不同维度有的变化快、有的变化慢,这样模型就能同时感知近距离和更长跨度的位置关系。

选择位置

当前位置 0

比较当前和下一位置

位置编码不是随机编号,而是有连续变化规律的向量。相邻位置既有差异,又不会完全断裂。

关键点: 位置编码不一定只能用正弦余弦,但不管形式如何,它都在做同一件事:让模型在“无序的向量运算”里显式知道顺序。

学完这一页,最好记住三件事

Attention 本身不懂顺序

如果没有位置信息,模型更像是在看“一包 token”,而不是在看一个有先后顺序的序列。

位置向量会加到词向量上

模型输入不是“词向量和位置向量二选一”,而是把两者相加后一起送进后续注意力计算。

位置编码是结构条件

它不是锦上添花的小技巧,而是 Transformer 能处理顺序信息的基础条件之一。