透彻分析Transformer中的位置编码(positional enconding)

一、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交替的形式来进行位置编码
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43892462/article/details/128120276
今日推荐