位置编码分为绝对位置编码和相对位置编码,绝对位置编码就是直接按照函数公式或者可学习参数得到每个 token 的位置编码加到 token 的输入表征上。相对位置编码(Relative Position Embedding,RPE)是在 self-attention 的时候关注当前 token 的时候,其他 token 按照和当前 token 的相对位置编码其位置信息。
绝对位置编码是一种基于位置嵌入的方法,其中每个位置都被分配了一个唯一的位置向量。 这些向量是固定的,与输入序列的内容无关。 这种编码方式对于处理较短的序列效果较好,但在处理长序列时可能会存在问题,因为序列的长度超过了模型能够处理的位置编码的范围。
相对位置编码是一种基于相对位置的方法,其中每个位置被编码为一个偏移量,表示该位置与其他位置之间的相对距离。相对位置编码可以通过在输入嵌入中添加额外的信息来实现。这种编码方式可以处理长序列,并且能够在不同的上下文中保持一定的一致性。
RoPE 基本思路是通过绝对位置编码的方式,使得模型可以注意到相对位置。
旋转编码RoPE 可以有效地保持位置信息的相对关系,即相邻位置的编码之间有一定的相似性,而远离位置的编码之间有一定的差异性。 这样可以增强模型对位置信息的感知和利用。
RoPE 旋转位置编码是苏神提出来的一种相对位置编码,之前主要用在自研的语言模型 roformer 上,后续谷歌 Palm 和 meta 的 LLaMA 等都是采用此位置编码,
长度外推性是一个训练和预测的长度不一致的问题。 具体来说,不一致的地方有两点:
ALiBi 的做法其实和T5 bias类似,直接给 q*k attention score 加上了一个线性的bias,不给词向量加入位置嵌入向量,而是用一个和query, key之间的距离成比例的一个“惩罚项”来偏置query-key的注意力得分:
相对距离的矩阵,例如 q1, k1 之间的距离是 0,所以对应位置就是 0;q2 和 k1,是相对位置偏移为 k 的索引 1 - q 的索引 2,得到 1 - 2 = -1,就对应到了中间矩阵的取值为 -1 了。该偏置矩阵用于计算两个 token 之间的贡献度。
这种简单的相对位置编码使得模型即使在很长的文本输入序列中也能保持高性能。
由MosaicML团队开源出来了英文预训练大模型 MPT 以及 BLOOM 都使用了这种编码方法。
阅读量:1507
点赞量:0
收藏量:0