绝对位置编码和相对位置编码是用于在自然语言处理(NLP)和深度学习中对序列数据进行建模时常用的技术。
-
绝对位置编码(Absolute Positional Encoding):
绝对位置编码是一种将序列中的每个位置进行编码的方法,它为每个位置分配一个唯一的编码向量。最常用的绝对位置编码方法是通过使用三角函数的正弦和余弦函数来生成位置编码。具体而言,绝对位置编码使用了一组固定的正弦和余弦函数,根据位置索引和维度来计算每个位置的编码向量。这样的编码向量可以提供关于输入序列中每个位置的绝对位置信息。绝对位置编码的优势在于它不依赖于序列中的其他元素,可以独立地表示每个位置的信息。 -
相对位置编码(Relative Positional Encoding):
相对位置编码是一种根据位置之间的相对关系来编码序列的方法。相对位置编码考虑了序列中不同位置之间的相对距离和关系,并使用可学习的参数来对这些关系进行建模。相对位置编码可以通过计算不同位置之间的偏移量或相对位置差异来捕捉位置之间的相对信息。相对于绝对位置编码,相对位置编码更关注序列中位置之间的相对顺序和距离,它可以更好地处理长序列中的位置信息。
绝对位置编码:对输入序列的不同位置,随机初始化一个与嵌入层同维向的向量,然后相加进行训练学习。(或者直接固定一个向量)
缺点:①使用绝对位置编码的序列,不同位置对应的向量虽然不同,即可以反应序列应该有顺序关系;但是难以反应序列字符之间的相对位置关系。比如位置1和位置2,距离差1,位置1和位置3距离差2,位置2和位置3距离差1,这些距离远近会反应什么关系呢?绝对位置编码挖掘不到这中信息。
②没有外推性,即表示不了比预训练文本长度更长的位置表向量示, 即如果预训练最大长度为512的话,那么最多就只能处理长度为512的句子,再长就处理不了了。当然,也可以将超过512的位置向量随机初始化,然后继续微调。
相对位置编码:没有完整建模整个序列的位置信息,而是在算当前位置的Attention的时候,考虑了当前位置和被Attention位置之间的相对距离(这一操作可以体现在计算Attention过程中,在计算中引入一个相对位置向量进行学习,下图展示:);由于自然语音通常更依赖文本之间的相对距离(离得近表示一种相依赖的关系,比如word2vec词向量模型)
下面介绍一个在Attention中引入相对位置的例子,每个图都是一个步骤:
(1)zi表示对应词嵌入后的xi经过Attention计算后 的向量表示,其中αij表示该词和句子中所有其它词的注意力权重;xjW^v为对应权重的向量表示。
(2)在原始的计算基础上,加一项aij^V,该项与xjW^V同维,为dv,表示了i与j的相对位置表示。
(3)标题对于ij的相对位置表示为j与i的相对距离,其中clip(j-i,k)用来对j-i进行截断处理,截断范围为(-k,k)其中k表示相对位置的范围区间,当j-i小于-k则令成-k,大于k则令成k;
(4)其中w^K是一个k维度的相对位置向量集合,每个词的位置向量都会映射成其中一个,下标(-k.....k)对应clip(j-i,k)