位置编码

由于注意力机制是不会保留序列位置信息的,因此需要该结构去用其他方法吸收位置信息。目前有三种主流的技术可以解决:

  1. 用正弦位置编码(Sinusoidal Position Encoding)
  2. 学习位置向量(类似词向量)
  3. 相对位置表达(Relative Position Representations)位置编码_第1张图片

Motivation 

位置编码_第2张图片

RNN中,第一个"I"与第二个"I"的输出表征不同,因为用于生成这两个单词的hidden states是不同的。对于第一个"I",其hidden state是初始化的状态;对于第二个"I",其hidden state是编码了"I think therefore"的hidden state。所以RNN的hidden state 保证了在同一个输入序列中,不同位置的同样的单词的output representation是不同的。

位置编码_第3张图片

在self-attention中,第一个"I"与第二个"I"的输出将完全相同。因为它们用于产生输出的“input”是完全相同的。即在同一个输入序列中,不同位置的相同的单词的output representation完全相同,这样就不能提现单词之间的时序关系。--所以要对单词的时序位置进行编码表征。

正弦位置编码

paper中,由对绝对位置编码变换推导出新的相对位置编码方式。

vanilla Transformer中的绝对位置编码

pos对应输入的位置,i这里在翻译上是维度。我在很多讨论该论文的帖子上看到,i有很多人有疑问,到底是指什么维度。在Vaswani的Attention is what you need论文中,是用上面的公式。举个例子,如pos=3,d(model)=128,那么3对应的位置向量如下

相对位置表达

1. 若不使用RPR, 计算z_{i}的过程

位置编码_第4张图片

2. 若使用RPR,计算z_{i}的过程:

(3) 表示在计算word i 的output representation时,对于word j的value vector进行了修改,加上了word i, j 之间的相对位置编码。

(4) 在计算query(i), key(j)的点积时,对key vector进行了修改,加上了word i, j 之间的相对位置编码。

这里用加法引入RPR的信息,是一种高效的实现方式。

符号含义

位置编码_第5张图片

你可能感兴趣的:(目标检测,深度学习)