原始的 Transformer(在《Attention Is All You Need》论文中提出)之所以选择正弦和余弦函数(Sinusoidal Positional Encoding),而不是直接传入绝对索引数字(如 0, 1, 2, 3...),是出于对数值稳定性、泛化能力以及注意力机制数学特性的深刻考量。 我们可以通过对比“为什么不用绝对索引”和“为什么用正余弦”来彻底理解这个问题。 --- 一、 为什么不直接用绝对索引数字(0, 1, 2, 3...)? 如果直接把位置索引当作特征加到词向量里,会带来几个致命问题: 1. 数值范围不受限,导致梯度不稳定 词向量(Token Embedding)的值通常在一个很小的范围内(比如均值为0,方差为1)。如果序列很长(比如长度为 1000),位置编码的值会大到 1000,这会完全淹没词向量本身的语义信息。 神经网络对输入特征的尺度(Scale)非常敏感,绝对数值过大会导致训练时梯度不稳定。 2. 缺乏长度泛化能力(外推性差) 假设模型在训练时见过的最长句子是 512 个词。如果在推理阶段遇到了长度为 600 的句子,模型从来没见...