transformer中在进行attention的时候,位置进行变化但是attention的结果一样,在attention之后进行全连接的时候虽然知道词之间的位置,但是attention的结果没有位置信息这个时候进行全连接也是不能学习到位置信息的,所以需要进行位置信息编码
一句话的长度是d,有d个词
那么生成的embedding是根据d的index进行生成的,是一个绝对的embedding.
为什么用这个函数
Position Embedding本身是一个绝对位置的信息,但在语言中,相对位置也很重要,Google选择前述的位置向量公式的一个重要原因是:由于我们有sin(α+β)=sinαcosβ+cosαsinβsin(α+β)=sinαcosβ+cosαsinβ以及cos(α+β)=cosαcosβ−sinαsinβcos(α+β)=cosαcosβ−sinαsinβ,这表明位置p+kp+k的向量可以表示成位置pp的向量的线性变换,这提供了表达相对位置信息的可能性。
所以绝对位置也提供了相对位置信息