一. 关于位置编码:
pos表示token位置,2i和2i+1表示维度下标(奇偶)
可以看出,随着i越来越接近d/2(维度越来越往下),位置编码的值随着位置pos变换的幅度越大(正余弦周期越大),不同维度的位置编码就是不同周期的正余弦函数。这样可以让模型更容易感知两个词之间的间距k。
重点:
对于一对正余弦函数,根据三角函数的加法公式:
sin(pos+k)=sin(pos)cos(k)+cos(pos)sin(k)cos(pos+k)=cos(pos)cos(k)−sin(pos)sin(k)这意味着,存在一个只与 k有关、与pos无关的线性变换矩阵Mk,使得:
PE(pos+k)=Mk⋅PE(pos)深层次解释:
如果我们把 PE向量中的每一对 (sin,cos)看作二维平面上的一个点,你会发现:随着 pos的增加,这个点实际上是在这个二维子空间里做旋转运动。上面说到的矩阵MK其实是一个旋转矩阵。两个位置 pos和pos+k之间的点积,本质上取决于它们之间的夹角.
这种编码将位置信息编码成了相位(Phase)。在 Self-Attention 计算点积时,模型实际上是在衡量不同词在各个频率子空间里的相位差
这意味着模型在计算注意力时(即计算Q⋅KT时),两个词之间的点积会包含由于相对距离 k 产生的衰减或增强信号。模型不需要记住每个词的绝对坐标,它只需要通过线性投影就能感知出“这两个词相距 k 个单位”。这种平移不变性(Translation Invariance)对处理变长序列至关重要。