介绍
大语言模型的 自注意力机制 本质上 与位置无关,因此必须向模型中注入额外的 位置信息
自注意力为什么“与位置无关”?
因为自注意力的计算方式是:
对于每个词,它会:
- 看所有词(包括自己)
- 计算与每个词的相似度(query · key)
- 按相似度加权求和(value)
注意:这个过程完全不看 “词在句子中的位置”。
例子
句子 A:
猫 抓 狗
句子 B(顺序打乱):
狗 抓 猫
自注意力在计算时,不会知道哪个词在前、哪个词在后。
它只知道“有三个词,它们之间的相似度是多少”。
所以:
- 输入顺序变了
- 自注意力的输出也会变
- 但模型并 不知道“顺序”本身的语义
自注意力能“看到”你把顺序打乱了,但它不知道“顺序原本是什么”。
为什么必须注入位置信息?
因为语言是高度依赖顺序的。
例如:
- 猫 抓 狗
- 狗 抓 猫
这两句话的意思 完全相反。
但对自注意力来说:
- 词还是那三个词
- 相似度计算也几乎一样
- 它无法区分“谁在前谁在后”
所以如果不告诉模型位置,它就无法理解语言的基本结构。
这就是为什么必须加入位置编码/位置嵌入。
位置信息解决了什么问题?
位置信息让模型知道:
- 这个词在句子的第几个位置
- 它和其他词之间的距离
- 语序的语义(比如“我打他”和“他打我”)
加入位置信息后,模型才能真正理解语言的顺序结构。