游乐游手机版
首页/AI热点日报/热点详情

如何利用位置编码实现长度外推的常见方法

类型:热点整理2026-05-29
Transformer受限于预设长度,长度外推是重要挑战。位置编码是实现外推的关键,分为绝对和相对两类。绝对编码如正弦嵌入外推性差,相对编码如RoPE和ALiBi被大模型广泛采用。大模型时代还提出了位置插值等改进方法,以增强外推能力。

Transformer自诞生以来就席卷了NLP领域,原因无他——它对序列中复杂依赖关系的建模能力确实独树一帜。基于Transformer的预训练语言模型(PLM)在几乎所有NLP任务中都取得了巨大成功,但它们都有一个硬伤:预设的长度限制。这意味着,超过训练时见过的序列长度,模型就难以招架了,这就是所谓的长度外推问题。为了增强Transformer的长度外推能力,研究者们提出了大量可外推的位置编码方案。

论文:Length Extrapolation of Transformers: A Survey from the Perspective of Position Encoding

地址:https://arxiv.org/abs/2312.17044

在有限的学习资源下,人类可以通过理解语言成分的结构,来把握潜在无限长度的话语。这种能力在NLP中被称为模型的长度外推——在较短的上下文窗口上训练,在更长的上下文窗口上推理。尽管神经网络在各种任务上进展惊人,但长度外推依然是个重大挑战,而Transformer正是被用来缓解这一问题的。

然而,Transformer的优势容量是有代价的:计算和内存复杂度与输入序列长度呈二次方关系。这导致基于Transformer的模型通常预设上下文长度限制在512或1024个token。用Transformer处理长序列极为困难。更普遍的看法是,用更长的上下文窗口对现有模型进行微调,要么有害,要么昂贵。更棘手的是,高质量长文本数据稀缺,加上二次成本的负担,直接通过长序列训练来扩展上下文窗口并不现实。因此,长度外推成了减少训练开销、同时放宽Transformer上下文长度限制的最合适路径。

近些年,基于Transformer的大语言模型(如Llama和GPT-4)在业界和学术界引发了极大关注。但就算这些强大的大模型,依然对上下文长度有硬性限制,在长度外推上频频翻车——这大大限制了它们的普及。尽管GPT-4的上下文窗口已高达32k,但这个长度其实远远不够。一方面,随着大模型能力的增长,我们对它们的期望也在水涨船高;另一方面,现有有效利用大模型的技术,也对上下文窗口的长度提出了更高的要求。

预备知识

Transformer最初是以编码器-解码器架构亮相的,其中编码器和解码器都由相同数量的层组成。每个编码器层包含两个子层:self-attention层和位置全连接前馈网络。解码器层则多了一个执行交叉注意力的子层(即对编码器输出的注意力)。这里给出编码器层的形式化描述。给定输入矩阵为\(n\)个维度为\(d\)的嵌入序列,编码器层定义为:

其中\(Q, K, V\)就是所谓的query、key和value,\(W_Q, W_K, W_V\)是投影矩阵。首先,兼容性分数通过query和key的点积(带缩放因子)计算得出。然后,逐行softmax将兼容性分数转换为权重,值的加权和就是注意力子层的输出。全连接前馈网络由两个线性变换中间夹一个ReLU激活组成。每个子层周围还有残差连接和层归一化。

为了让模型从不同表示子空间的不同位置共同关注信息,通常会使用多头注意力。简单说,\(h\)个头意味着用不同的投影矩阵\(W_Q^i, W_K^i, W_V^i\)分别计算自注意力\(h\)次,然后将输出矩阵沿着第二个维度拼接起来得到最终结果。从上述描述不难看出,整个编码器层是置换等价的——也就是说,注意力子层和前馈子层都是置换等价的。给定任意置换矩阵\(P\),得到\(f(PX) = Pf(X)\)。这种置换等价性质与人类语言的有序性冲突,因此需要向Transformer中注入位置信息来弥补。

位置编码实现长度外推

直观来看,长度外推与长度和位置有强相关性。有趣的是,在Transformer被提出时,研究者同时提出了正弦位置嵌入,并声称它可以外推到训练之外的更长序列。这个说法的核心思路是:只要改变位置表示方式,就能实现长度外推——这一观点已得到广泛支持和验证。因此,开发更好的位置编码方法已成为增强Transformer长度外推的主要途径。

将位置信息集成到Transformer中的方法五花八门,统称为位置编码(PEs)。表1给出了不同外推PE的特征。根据PE是绝对的还是相对的,可以分为两大类。绝对位置编码(APE)为每个位置映射一个唯一的表示,而相对位置编码(RPE)则基于两个token之间的相对距离来表示位置。

绝对位置编码

考虑到Transformer的置换等价性质,APE被提出来融入位置信息。具体来说,对于位置为\(pos\)的token,位置嵌入定义为:

其中\(i\)是位置嵌入的维数,\(d_{model}\)表示模型维数。随后,每个位置嵌入与对应的token嵌入相加,输入到Transformer中,query与key之间的兼容性得分形式化为:

这是许多不同PE的基础。此外,研究者比较了正弦APE和完全可学习位置嵌入的性能——后者是在训练时随机初始化和更新的。虽然两者性能类似,但正弦位置嵌入被认为可能外推到比训练时更长的序列。不过,后来的研究者发现正弦APE其实很难外推。因此,人们提出了各种APE和RPE来增强正弦位置编码,进而提升Transformer的外推能力。

有研究者推测,优异的外推性能来自PE的平移不变性——即输入发生移动时函数输出不变。为了融合正弦APE中平移不变性的优点,他们简单地对每个序列和每次训练迭代,通过从离散均匀分布中提取随机偏移量\(r\)来移动每个位置索引(\(r\)是最大偏移量)。也就是说,他们用\((pos+r)\)代替了\(pos\)——这阻止了模型使用绝对位置,转而鼓励使用相对位置。

遵循类似思路,有研究利用连续信号来增强正弦APE。除了用相同的随机偏移量移动APE的每个位置索引(全局偏移),还引入了局部偏移和全局缩放。三种增广方法的形式如下:

其中\(\vec{pos}\)为位置索引向量,\(\vec{src}\)\(\vec{tgt}\)分别为源序列和目标序列的嵌入向量。全局位移将每个嵌入转换为一个从\([0, r_g]\)的全局随机位移序列。

除了这些基于正弦APE的简单方法,还有一些APE采取了完全不同的理论途径。例如,将每个词嵌入扩展为自变量(位置)上的连续函数,使得词表示随位置增加而平滑移动。通过数学推导,将单词\(w_j\)在位置\(k\)上的一般复数嵌入定义为:注意,振幅向量\(\psi_{w_j}\)、频率矢量权值\(\omega_{w_j}\)和初始相位向量\(\phi_{w_j}\)都是可训练的参数。振幅只取决于单词\(w_j\),向量\(\exp(i(\omega_{w_j}k + \phi_{w_j})\psi_{w_j})\)可被视为“纯粹”的位置嵌入。

研究者也试图直接捕捉位置表示之间的依赖关系或动态关系。有人引入了一个动态系统来对这些位置表示建模,其特征可以表示为:

正弦APE作为Transformer的第一个PE,对后续研究影响深远。然而,它的外推性很差。为了增强外推,研究者要么利用随机偏移将平移不变性纳入正弦APE,要么生成随位置平滑变化的位置嵌入。这些方法确实比正弦APE表现更好,但只能勉强赶上RPE的外推能力。

相对位置编码

已经有许多新的RPE被提出来加强Transformer的外推。在深入之前,先重新制定兼容性得分如下,以帮助阐明RPE的视角:其中\(a_{ij}\)是编码相对位置信息的项。RPE倾向于直接修改注意力机制来融合相对位置信息。这种位置信息通常在每一层都重复出现,而不是像APE那样只在第一层之前注入。此外,这种修改独立于值向量,使它们不与位置信息纠缠。这些差异如图1所示。

研究者基于此公式引入了RPE的思想。具体来说,他们将公式具体化为:其中\(a_{ij}^K\)是可训练的相对位置嵌入,\(i-j\)表示相对位置关系。通过在确定范围内裁剪相对位置,减少了要学习的位置嵌入数量,增强了长度外推。同样,在计算\(V\)值时,他们还引入了\(a_{ij}^V\),将其添加到词嵌入中。在此基础上,研究者又增加了一项来同时建模键嵌入和相对位置嵌入的交互:

然而,有些研究者走了完全相反的路——将其简化为极其简单的形式。利用可学习的标量来表示相对位置信息:为了让Transformer有效利用真实的token距离信息,有研究者提出了一种更复杂的方法:其中ReLU被用于确保兼容性分数的非负性,\(r_{ij}\)是通过可学习的sigmoid函数从加权相对距离映射而来的重新缩放系数:同样为了利用真实距离信息增强上下文建模,另一种更简单的方法表示相对位置信息:其中标量\(m\)是训练前固定的特定头部斜率。值得注意的是,该方法不需要额外的可学习参数,效率更高,也有助于更好地外推。另一种方法建议按以下方式计算兼容性:

类似地,有些研究者认为位置嵌入和词嵌入编码不同的概念,因此应该对不同的信息应用不同的投影。他们建议用:其中\(\vec{p}_i\)为正弦位置嵌入。他们发现这种方法结合T5偏差可以有效降低预训练成本,并提高GLUE基准上的性能。

同样受正弦APE启发,有研究者提出通过正弦嵌入将键和查询相乘,而不是相加。他们将兼容性分数重新表述为:

这种方法称为旋转位置嵌入(RoPE),因为直观地说,它根据位置索引旋转键和值嵌入,该索引形式化为\(R_i\)。值得注意的是,尽管这是一个绝对的旋转过程,但兼容性分数以及注意力机制仅依赖于查询与键之间的相对距离,这有助于长度外推。

尽管之前提出了大量的PE,但在最近的大模型中,只有ALiBi和RoPE被广泛采用。因此,大模型时代提出的PE大多衍生自这两种方法,试图让ALiBi更具表现力,或让RoPE更具外推性。

有研究者意识到正弦APE的过拟合问题,提出通过将其简化为一种新的RPE Sandwich来克服。具体来说,他们删除了交叉项,但保留了两个位置嵌入的内积:值得注意的是,在这种形式化中,\(p_i^T p_j\)成为与ALiBi具有相同衰减与距离模式的时间偏差项。此外,由于这里的位置嵌入只需要与自己交互,作者将它们的维度作为超参数,以进一步改善外推。

FIRE采用与T5 bias完全相同的形式,将位置信息与Transformer集成:其中,它们的偏差使用可学习的连续函数,例如MLP。为了避免输入在函数训练域之外时的泛化问题,提出了通过查询位置索引对距离进行归一化的渐进式插值方法。在因果注意力中,相对距离总是在[0,1]之间有界,对于任何序列长度,这将使推理域与训练域对齐,从而带来更好的长度泛化。

由于RoPE在流行的大模型中被广泛使用,也出现了一些变体来改进它。研究者首先定义了特定距离上token之间的注意力得分期望和进一步的注意力分辨率,作为Transformer编码位置能力的指标。他们将RoPE外推性能较差的原因归结为注意力期望的剧烈振荡,并提出引入平衡项来惩罚不稳定维度的振荡,保持稳定维度的分布。他们的方法可以简化为:

大模型时代的长度外推

大模型彻底改变了NLP领域,也对长度外推提出了更高要求——理解长文档、利用更多示例、处理多轮对话、增强智能体的长期记忆等。因此,在大模型长度外推方面投入了大量努力,催生了许多新的PE。除这些方法外,也有研究尝试分析大模型的外推能力,试图揭示PE对长度外推的影响。

位置插值

尽管有大量外推性更好的PE,但RoPE因其优越的分布性能,在最新的大模型中被广泛采用。因此,有很多方法被提出来增强现有用RoPE预训练的大模型的外推能力,其中最流行的是位置插值。基于将大模型外推到更长序列的简单想法,研究者引入了RoPE的位置插值——通过线性缩放降低位置索引的比例,使预训练期间的最大位置索引匹配之前的长度限制。形式上,这个方法将RoPE\(f(x_i, i)\)替换为\(f(x_i, \frac{i L}{L'})\),定义如下:其中\(L\)是预训练期间的长度限制,\(L'\)是推理时较长的上下文窗口。这里的比例是\(\frac{L}{L'}\),将位置\(L'\)转换为位置\(L\)。该方法将绝对位置索引从\([0, L')\)减少到\([0, L)\)以匹配原始范围,也减少了最大相对距离从\(L'\)\(L\)。因此,位置插值通过对齐位置索引的范围和扩展前后的相对距离,减轻了上下文窗口扩展对注意力分数计算的影响。

然而,从神经正切核(NTK)理论的角度看,简单地线性插值RoPE的傅里叶空间会造成高频信息丢失,使模型难以区分附近的位置。为了解决这个问题,研究者提出了NTK-Aware Scaling RoPE,通过修改基底来代替RoPE的尺度:其中\(\theta_0\)是原始基底,\(\kappa\)仍然是比例,两者都可作为超参数。核心思想是减少高频的缩放,增加低频的缩放,以减少高频信息损失。由于NTK-Aware插值不直接对傅里叶特征进行缩放,所有位置都是可区分的。此外,该方法不需要对上下文窗口进行任何微调。

已经出现了几种改进NTK-Aware插值的变体。Dynamic-NTK插值在预训练的上下文窗口中为token使用精确的位置值,防止性能下降,并随着当前序列长度的增加动态增加缩放比,以适应预训练的上下文窗口以外的位置:

其中\(s\)是当前序列的长度,\(t\)每一步都会增加。

无论是缩放位置索引还是修改基底,所有token都变得彼此更接近,这会损害大模型区分相近token位置顺序的能力。结合对RoPE波长的观察——存在一些波长比预训练上下文窗口长的维度——NTK-by-parts插值的作者建议完全不插值较高的频率维度,而总是插值较低的频率维度。除了这种方法,在Softmax之前引入一个兼容性分数的温度可以持续降低困惑度,他们将其称为注意力缩放。具体来说:请注意,该方法与上述插值方法是正交的,这促使作者将YaRN作为注意力扩展和NTK-by-parts插值的组合,以进一步提高性能,并在微调和非微调场景中超越所有基于NTK-Aware插值的方法。

研究者在此基础上提出了一种更简单的方法。在训练过程中,模型已经看到了全范围的高频分量,而低频分量则没有。这种不平衡使得模型对低频进行外推特别困难。因此,他们建议使用截断基:

其中\(\rho\)是一个相对较小的固定值,\(t_1\)\(t_2\)是选定的截断值。这样,模型将通过选择适当的截断值,在微调期间使用的上下文长度中体验所有基值,并在推理过程中更好地进行外推。

随机化位置编码

对于没有裁剪机制的APE和RPE,长度外推意味着位置表示超出了训练期间观察到的范围,导致分布外位置表示,性能下降。解决这个问题最直观的方法之一是让模型在训练期间观察所有可能的位置表示——这正是随机PE的核心思想。

作为这一想法的具体化,研究者提出模拟更长的序列的位置,并随机选择一个有序子集来适应训练上下文窗口。具体来说,\(N\)的长度远大于训练和评估过程中的最大长度。对于每个训练步骤,长度为\(n\)的序列的随机位置是较大范围\([0, N)\)位置的升序子样本,范围大小为\(N\),且不包含重复。因此,通过充分训练,可以确保模型遇到足够多的唯一位置,在推理之前已经充分训练了从1到\(N\)的所有位置,从而在token的任何序列上实现一致的性能。

基于相同想法,PoSE也试图通过在固定的预训练上下文窗口内操纵位置索引来模拟更长的输入。不过PoSE将原始序列划分为几个块,并通过添加不同的skip偏差项来调整每个块的位置索引。这样,PoSE保持了每个块中的连续位置(与预训练相似),同时允许模型适应更长的上下文窗口中的所有位置。

本质上,随机PE只是通过在训练过程中引入随机位置,将预训练的上下文窗口与较长的推理长度解耦,从而提高了较长上下文窗口中所有位置的暴露程度。

讨论

评估和基准

早期阶段,研究者通过在长度受限的序列上训练模型,并在稍长的序列上测试来评估长度外推。当时训练和测试的长度限制只有几十个token和样本,指标通常来自各种下游任务(如机器翻译、文本分类和问答)。后来,由于PLM被证明是通用的,其他NLP任务可以很容易地转换为语言建模,语言建模和困惑度成为测试和评估长度外推的标准做法。但人们越来越认识到,仅靠困惑度作为唯一指标并不能说明下游任务的性能,而且非常不充分。

理论基础

早期方法大多是经验性的,通过下游性能来宣称外推能力。最近,出现了量化外推能力的趋势,例如累积归一化梯度和注意力分辨率。对数衰减时间偏差模式被认为是成功长度外推的秘密,而没有PE的仅解码器模型在小规模合成任务中有更好的长度外推。尽管取得了这些进展,但坚实的理论基础仍然缺乏——什么真正导致更好的长度外推,依然是一个开放问题。

其他方法

除了上述方法,还有几种采取不同思维方式的方法来提高长度外推性能,例如暂存器或思维链、Λ-shaped注意力掩码和StreamingLLM。此外,长度外推还适用于更大的任务,即上下文窗口扩展或长上下文大模型。

总结

本文对从Transformer诞生到LLM时代关于Transformer长度外推的研究工作进行了全面而有组织的综述,重点放在外推PE和相关方法(包括位置插值和随机PE)上。

来源:https://m.elecfans.com/article/2363054.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。