位置编码是一类用于表示人工神经网络所处理数据中各元素位置的技术。它在Transformer架构中尤为重要,位置信息为基于内容的自注意力提供了补充。位置编码可以通过向量、旋转或对注意力分数的调整,表示绝对位置、相对距离或空间关系。(arxiv.org)
目的与数学背景
在自然语言处理中,序列由通过分词与词元化产生的词元组成。词元的内容表示与词嵌入相关,但这些表示本身并不指明词元出现的位置。与循环神经网络不同,Transformer并不会天然地沿着有序的循环状态链处理词元。因此,必须通过额外的机制来表示位置。(arxiv.org)
如果没有位置信号或依赖位置的掩码,普通自注意力具有置换等变性:重新排列输入只会使输出发生相应的重排,并不会让模型理解序列顺序。相对位置方法通过让元素间的交互取决于彼此的间距,而不仅仅取决于内容,来解决这一问题。这一区别针对的是注意力运算本身;其他架构约束也可以引入顺序信息。(arxiv.org)
绝对位置表示
绝对位置编码将位置 与向量 对应起来。一种常见的融合方式是
其中, 是内容嵌入,两个向量具有相同的维数(向量空间)。得到的表示同时包含词元身份和位置信息。(arxiv.org)
可学习的绝对位置嵌入为每个支持的位置存储一个可训练向量。在BERT 语言模型中,输入表示由词元嵌入、片段嵌入和位置嵌入组合而成。这些组成部分各有用途:位置嵌入用于确定词元的位置,片段嵌入则用于区分句子片段。学习得到的位置向量属于模型参数,而不是固定的数学公式。(arxiv.org)
最初的Transformer采用固定的正弦余弦编码:
这里, 是编码的维度, 是坐标对的索引。各频率按几何级数变化。根据三角学中的恒等式,固定的位置偏移可以表示为作用于每个正弦—余弦坐标对的线性映射。(arxiv.org)
相对位置表示
相对位置方法表示查询位置与键位置之间的位移。2018年的论文《具有相对位置表示的自注意力》将可学习的位移向量引入注意力计算,其中既包括与键相关的项,也包括与值相关的项。其实现将距离截断在一个有界区间内,使距离足够远的词元对能够共享表示。(arxiv.org)
一种更简单的相对位置机制是在注意力分数中加入依赖位置的偏置:
第一项是查询向量与键向量之间经过缩放的内积;第二项用于编码位移。分数通过Softmax函数转换为注意力权重。这类偏置不一定是加到输入嵌入上的向量。(arxiv.org)
相对位置表示强调的是“前面第三个词元”这样的关系,而不是“第二十个词元”这样的绝对位置。它们并非天然不含参数:位移向量或偏置值都可以通过学习获得。不同形式之间还有一个区别,即它们是仅修改注意力分数,还是也改变参与聚合的表示。(aclanthology.org)
旋转位置嵌入
旋转位置嵌入通常缩写为 RoPE,由2021年的RoFormer论文提出。它对查询向量和键向量中的成对坐标施加依赖位置的旋转,而不是简单地将位置向量加到输入上。这些旋转可以用分块对角矩阵 表示。(arxiv.org)
如果变换后的查询向量和键向量分别为 和 ,则它们的交互满足
因此,尽管每次旋转都使用绝对位置索引,但交互中的位置部分取决于相对位移。词元本身的内容仍然起作用;完整的注意力分数并不只是距离的函数。(arxiv.org)
旋转保持向量长度不变,不同坐标对使用不同的角频率。因此,RoPE将依赖绝对位置的变换与注意力内部的相对位置结构结合起来。其数学定义适用于不同的序列长度,但仅凭这种灵活性,并不能保证模型在超出训练时所见长度的序列上仍有可靠表现。(arxiv.org)
线性偏置与长度泛化
带线性偏置的注意力,即 ALiBi,直接在注意力分数中引入与距离成正比的惩罚。在因果注意力中,位于较早位置 的键会获得一个通常写作 的偏置,其中 是注意力头 的固定斜率。不同的斜率使多头注意力中的各个头具有不同的距离偏好。(arxiv.org)
ALiBi不需要可学习的位置嵌入表。其作者在特定的语言模型实验中展示了长度外推能力,包括在长度为1,024个词元的序列上训练,并在长度为2,048个词元的序列上评估。这些结果反映的是经过测试的配置,而非不受限制的长度泛化(机器学习)能力。(arxiv.org)
对于采用RoPE的大语言模型,位置插值通过将位置索引重新缩放到原有的位置范围内,来扩展上下文窗口。2023年提出的这一方法将上述变换与少量微调结合起来。它区分了在新位置上计算编码的能力与有效利用这些位置的能力。(arxiv.org)
空间应用
位置表示也用于计算机视觉。视觉Transformer将图像块转换为序列,并在图像块表示中加入可学习的位置嵌入。这些嵌入标识的是图像块的位置,而不是每个图像块内部单个像素的位置。当图像分辨率发生变化时,原始ViT方法会在图像块网格上对预训练的位置嵌入进行插值,使空间表示适应新的布局。(arxiv.org)