介绍
近年来模型取得的指数级进步与Transformer架构的出现息息相关。在此之前,人工智能科学家必须为每项任务选择适合的架构,然后优化超参数以获得最佳性能。另一个限制其潜力的挑战是处理数据长距离依赖的困难,这导致了梯度消失、长序列上下文丢失以及由于局部性约束而无法捕获全局上下文等问题。此外,传统模型在可扩展性和并行化方面的不足减缓了大型数据集上的训练速度,阻碍了该领域的发展。
Transformer架构通过其自注意力机制解决了这些问题,从而彻底改变了这一领域。它使模型能够捕获长序列中的关系并有效地理解全局上下文,同时具有很高的并行性和对各种模态(如文本、图像等)的适应性。在自注意力机制中,对于每个标记,会将其查询与所有其他标记的键进行比较以计算相似度分数。然后,这些相似度用于对值向量进行加权,最终决定当前标记应该关注的位置。自注意力机制将所有标记视为同等重要,而不考虑它们的顺序,从而丢失了标记出现顺序这一关键信息;换句话说,它将输入数据视为一个没有顺序的集合。现在,我们需要一种机制来对数据施加某种顺序概念,因为自然语言和许多其他类型的数据本质上是序列化和位置敏感的。这就是位置嵌入发挥作用的地方。位置嵌入编码序列中每个标记的位置,使模型能够保持对序列结构的感知。已经探索了各种编码位置信息的方法,我们将在本文章中对此进行介绍。
注意力机制:
设S = {wi}(其中i = 1,…,N)为N个输入标记的序列,其中wi表示第i个标记。因此,S对应的标记嵌入可以表示为E = {xi}(其中i = 1,…,N),其中xi是标记wi的d维标记嵌入向量。自注意力机制将位置嵌入整合到标记嵌入中,并生成查询、键和值表示,具体为:
然后,基于查询向量和键向量之间的相似度来计算注意力权重:
注意力权重决定了标记n对于标记m的重要性。换句话说,它决定了标记m应该给予标记n多少关注。标记m的输出是通过对值向量进行加权求和来计算的:
因此,注意力机制使标记m能够从序列中的其他标记中收集信息。
绝对位置嵌入:
对于方程(1)的一个典型选择是:
其中pi是一个d维向量,表示标记xi的绝对位置。正弦位置编码和学习到的位置编码是生成pi的两种替代方法。
1.a 正弦位置编码
正弦位置编码是在提出Transformer架构的“Attention is all you need”论文中引入的。正弦位置编码为输入序列中的每个标记提供了唯一的位置表示。它基于不同频率的正弦和余弦函数,表示为:
其中pos是标记在序列中的位置,d是位置嵌入的维度,i是维度索引(0<=i<d)。
正弦位置编码中使用正弦和余弦函数与傅里叶变换有着深刻的关系。通过使用一系列不同的频率来编码位置,Transformer创建了一种类似于傅里叶变换的表示,其中:
这有助于模型通过比较它们的位置编码来理解标记的相对位置。正弦位置编码在推理时能够推广到更长的序列长度,而不需要额外的训练参数。然而,其表达能力有限。
1.b 学习到的位置编码
学习到的位置编码是在“Attention is all you need”论文中引入的,并在BERT和GPT模型中作为正弦位置编码的替代方案得到应用。在学习到的位置编码中,序列中的每个位置(例如第一个标记、第二个标记等)都被分配一个嵌入向量。这些位置嵌入在训练过程中与其他Transformer参数一起学习。例如,如果模型的上下文长度为512,标记嵌入大小为768(即d=768),那么一个大小为512*768的可学习张量将被添加到其他可训练参数中。这意味着模型逐渐学习如何为特定任务(如文本分类或翻译)编码位置信息的最佳方式。
学习到的位置嵌入比正弦位置嵌入更具表达能力,因为模型可以学习到对特定任务有效的位置嵌入。然而,它们引入了更多的可训练参数,这增加了模型的大小和计算成本。
相对位置嵌入
正弦位置编码和学习到的位置编码都关注标记的绝对位置。然而,注意力机制是通过计算序列中每个特定标记的其他标记的重要性来工作的。因此,这个过程依赖于标记的相对位置(它们彼此之间的距离),而不是标记的绝对位置。为了解决绝对位置嵌入的局限性,引入了相对位置编码。
RelativePosEmb并不将位置信息添加到标记嵌入中。相反,它修改了每一层中键和值的计算方式,如下所示:
在这里,r = clip(m-n, Rmin, Rmax) 表示位置m和n之间的相对距离。假设在超过一定距离后,精确的相对位置并不再有用,因此会对最大相对位置进行裁剪。裁剪最大距离使得模型能够在推理时进行外推,即能够泛化到训练期间未见过的序列长度。然而,这种方法可能会丢失一些来自标记绝对位置的有用信息(如第一个标记的位置)。
你可能注意到fq中缺少位置嵌入。这是因为我们正在编码相对位置。在注意力公式中,查询(query)和键(key)值用于根据方程(2)计算注意力权重,因此我们只需要查询或键中包含相对位置嵌入即可。
这种编码已被许多模型使用,如Transformer-XL和T5。
旋转位置嵌入(RoPE)
与之前的方法不同,RoPE基于标记的位置在多维空间中旋转向量。它不是将位置信息添加到标记嵌入中,而是修改每一层计算注意力权重的方式,如下所示:
他们提出了一个适用于任何偶数嵌入维度d的广义旋转矩阵,如下所示:
其中θi是预先定义的:
将RoPE应用于注意力权重,可以得到:
请注意,RoPE公式并没有向注意力模块中的值添加位置信息。注意力模块的输出是值向量的加权和,由于位置信息没有被添加到值中,因此每个Transformer层的输出都没有明确的位置细节。
像LLaMA和GPT-NeoX这样的流行模型都在使用RoPE。
带线性偏置的注意力(ALiBi)
ALiBi同样不向词嵌入中添加位置编码;相反,它会对注意力权重分数添加一个与标记之间距离成正比的惩罚。因此,每一层中两个标记i和j之间的注意力分数计算为:
注意力分数 = query_i . key_j — m.(i-j)
其中,-m.(i-j)是一个与标记i和j之间距离成正比的惩罚。标量m是训练前固定的特定于头的斜率,并且不同头的值被选择为几何序列。例如,对于8个头,m可能是:
这意味着,第一个头的m值相对较大,因此它对距离较远的标记施加了更大的惩罚,并更关注最近的标记,而第八个头的m值最小,允许它关注更远的标记。图2也提供了可视化效果。
Transformer在推理时的外推能力:
Transformer在推理时的外推能力是指模型能够很好地处理比训练时更长的输入序列的能力。Transformer机制对输入长度是不可知的,这意味着在推理时,它可以处理更长的序列。然而,请注意,尽管Transformer层本身对输入长度是不可知的,但计算成本却随着输入长度的增加而呈二次方增长。
ALiBi的作者证明了Transformer外推的瓶颈在于其位置嵌入方法。如图所示,他们比较了不同位置嵌入方法的外推能力。由于学习到的位置嵌入无法编码比训练长度更大的位置,因此它不具有外推能力。
图3表明,在实际应用中,正弦位置嵌入的外推能力非常有限。虽然RoPE的表现优于正弦嵌入,但仍然没有达到令人满意的结果。T5偏置方法(一种相对位置嵌入的版本)比正弦嵌入和RoPE嵌入都带来了更好的外推效果。不幸的是,T5偏置的计算成本很高(见图4)。ALiBi在内存增加微乎其微(0~0.7%)的情况下,其表现优于所有这些位置嵌入方法。
结论
综上所述,Transformer架构中位置信息的编码方式对其理解序列数据的能力,尤其是推理时的外推能力,有着显著的影响。虽然绝对位置嵌入方法提供了位置感知能力,但它们通常在Transformer的外推方面表现不佳。因此,提出了更新的位置嵌入方法。相对位置编码、RoPE和ALiBi具有在推理时进行外推的能力。随着Transformer不断被整合到各种应用中,完善位置编码对于推动其性能边界至关重要。