一、Transformer中为什么要使用位置编码positional encoding
在《Attention Is All You Need》这篇论文中首次提到了transformer模型,transformer模型在输入端用了一个位置编码(positional encoding),其主要目的是增加相对位置信息,使其可以更好的利用每个元素相互之间的位置关系
二、具体编码实现方式
论文作者使用的是正余弦函数进行编码,这时可能会有人产生了疑惑,为什么要使用这么复杂的编码方式呢,这里举个例子,一句话“你好吗”用“1,0,0”、“0,1,0”、“0,0,1”的独热编码不可以么,编码方式还会更加的简单,为什么要用下图这么复杂的编码方式呢?
因为正余弦编码的表示方法蕴含了相对位置信息,假设一句话“我是小狗”的“狗”的位置为 pos+k,那么即可用在位置为“pos”的“我”和在“k”位置的“是”这两个位置的编码向量进行线性组合来表示出狗这个字的位置编码向量,具体公式如下。
上式的具体推到用到了sin和cos的积化和差的性质,这也就是为什么要用sin和cos交替的形式来进行位置编码
版权归原作者 是啊洋呀 所有, 如有侵权,请联系我们删除。