跳转至

位置编码与长度外推:从原理到实践的系统性解析

Transformer 的位置编码是连接序列顺序与模型理解的桥梁。当模型需要在比训练时长得多的序列上推理时,这座桥能否延伸就成了关键。以下逐一深剖长度外推的核心问题、主流方法及其内在机理。

什么是长度外推?为什么训练时 2K 的模型在推理 8K 时性能会大幅下降?

长度外推是指模型在推理阶段处理超过训练时最大序列长度的文本时,仍能保持较好的性能。一个典型场景是,模型在 2048 长度的序列上训练,但用户希望它能理解 8192 甚至更长的一本书的章节。

当推理长度从 2K 扩展到 8K 时,性能下降的根源是多方面的:

位置编码的分布外问题。这是最直接也是最核心的原因。如果模型使用的是可学习的绝对位置编码,那么位置 2048 到 8191 的嵌入向量在训练时从未被见过,完全是随机初始化或未定义的。模型根本不知道如何处理这些新位置的信号,就像考试时遇到从未学过的知识点。即使使用正弦位置编码,模型也只在有限的位置范围内学习到了注意力模式。当位置索引超出训练范围,正弦函数虽然可以外推,但模型学到的权重组合并未针对这些新的位置变化模式进行优化。

注意力分数的分布漂移。随着序列变长,softmax 需要归一化的元素数量从 2048 增加到 8192。即使每个 token 的注意力分布保持不变,归一化后每个位置的权重都会被稀释。更关键的是,模型在训练时习惯了在 2048 个候选中分配注意力,突然面对 8192 个候选,那些原本应该获得高注意力的 token 可能被淹没在大量无关 token 中。这就好比在 10 个人的房间里找人很容易,在 1000 人的广场上找同一个人就困难得多。

长距离依赖的失效。模型在训练时学到的“远距离”最多是 2048。当上下文扩展到 8192 时,token 之间的相对距离远远超出了训练时见过的范围。模型没有学会如何处理相隔 5000 个 token 的两个词之间的关系,它可能会把这种超远距离的 token 当作无关噪声处理,导致长距离的指代消解、篇章连贯性等能力大幅下降。

局部窗口的破碎。某些注意力头在训练中形成了关注邻近 token 的局部模式(如关注前后 10 个 token)。在长序列中,这种局部注意力模式可能无法有效覆盖所有需要的位置,或者因为序列变长而导致了注意力碎片化。

位置编码的外推本质上是什么问题?为什么 OOD 的位置会导致困惑度上升?

位置编码的外推本质上是一个分布外泛化问题。训练时,位置变量 pospos 采样自一个有限区间 [0,Ltrain)[0,Ltrain)。推理时,模型需要处理 pos≥Ltrain的位置。模型从未在这些新位置上学习过,因此这是一个典型的分布外推理场景。

困惑度上升的深层原因可以从几个层面来理解:

输入表示的失真。对于可学习的位置编码,新位置的嵌入是未训练的随机向量。当这些随机噪声被加到词嵌入上时,破坏了词向量的语义结构。原本在语义空间中相近的词向量,因为加上了不同的随机位置噪声,可能变得分散。模型后续的自注意力和前馈网络都是基于训练分布内的表示模式工作的,面对被噪声污染的输入,它们无法做出准确的预测,导致输出概率降低,困惑度上升。

注意力权重的扭曲。注意力机制的核心是计算 token 之间的相关性。当位置编码失效时,模型无法正确判断两个 token 的相对位置关系。该关注的不关注,不该关注的乱关注。注意力矩阵变得混乱,信息聚合的效率大幅下降。每一层的表示质量都在恶化,经过多层传播后,高层表示几乎变成了噪声。

频率不匹配。以正弦位置编码为例,其高频分量对位置变化非常敏感。在训练长度内,模型学会了如何利用这些高频信号来精确区分邻近 token 的顺序。但当外推到更长序列时,某些高频分量的周期性会导致不同绝对位置产生相似的编码,模型可能混淆远距离的不同位置。低频分量虽然在训练范围内变化缓慢,但外推后可能超出其设计范围,导致绝对位置的单调性丧失。

序列长度带来的统计偏移。语言模型的困惑度与上下文长度有关。更长的上下文理论上应该降低困惑度,因为模型看到了更多信息。但当位置编码失效时,长上下文不仅没有提供有用信息,反而引入了噪声。模型在噪声中迷失,困惑度不降反升。

Position Interpolation (PI) 是如何将长位置缩放到训练范围的?它的公式是什么?

Position Interpolation 的核心思想非常直观:将超出训练范围的位置线性缩放到模型见过的区间内。如果模型训练时只见过 [0,Ltrain) 的位置,但推理时需要处理长度为 Ltarget的序列(Ltarget>Ltrain),那么可以将推理时的实际位置乘以一个缩放因子,使其落在训练范围内。

具体公式为:

image.png

例如,训练长度 2048,推理长度 8192,缩放因子为 2048/8192=0.25。推理时位置 4096 被映射为 4096×0.25=1024,位置 8192 被映射为 2048。这样所有位置都落在了模型训练过的 [0,2048]区间内。

image.png

PI 方法有什么缺点?为什么它可能导致局部位置分辨能力下降?

PI 的线性缩放是一把双刃剑。它在解决外推问题的同时,也引入了新的问题。

image.png

注意力模糊。位置编码的退化直接导致注意力权重变得平滑。局部注意力头无法将注意力精准聚焦到邻近的几个 token 上,而是分散到更宽的窗口中。这会损害模型对词序和局部语法结构的建模能力。

需要微调来弥补。PI 通常不是即插即用的。直接应用缩放后的模型,性能会有明显下降,需要在少量长文本数据上进行微调,让模型重新适应新的位置编码尺度。在微调过程中,模型需要调整注意力权重和其他参数来补偿分辨率的损失。

对极端长度效果有限。当目标长度是训练长度的数十倍甚至上百倍时,缩放因子变得极小,局部位置完全丧失区分度,PI 方法基本失效。

NTK-Aware Scaling 是如何利用神经正切核的思想来改进 RoPE 外推的?

NTK-Aware Scaling 受神经正切核理论的启发,提出了一种非均匀的频率缩放策略。神经正切核理论指出,神经网络的训练动态与核方法有密切联系,网络对不同频率信号的敏感性不同。在 RoPE 中,不同维度组对应不同频率的旋转,它们在捕捉位置信息时扮演不同角色。

NTK-Aware 的核心思想是:高频维度负责局部精确位置,不应该被大幅缩放;低频维度负责全局位置趋势,可以被缩放以扩展支持的长度。这与 PI 对所有维度进行均匀缩放形成鲜明对比。

具体做法是,不是简单地用缩放因子 ss 来拉伸所有频率,而是选择一个缩放因子 ss,将 RoPE 的基频(base)从 10000 增大。新的基频计算公式为:

image.png

其中 d 是每个头的维度。增大基频的效果是让低频维度变化更慢,从而支持更长的序列;而高频维度因为指数衰减快,基频的变化对其影响很小,因此局部位置分辨率得以保留。

这样,NTK-Aware 实现了高频外推、低频内插的非线性缩放,在扩展上下文长度的同时,最大程度保护了模型在短文本上的性能。

NTK-Aware Scaling 中“高频外推,低频内插”的具体做法是什么?为什么有效?

具体做法:

image.png

为什么有效:

这种策略抓住了 RoPE 不同频率分量的本质功能。高频分量变化快,在一个很短的窗口内就能完成一个周期的变化,它们天然对外推具有鲁棒性。一个高频正弦波在训练时已经经历了多个完整周期,模型学会了它的完整模式,即使位置超出训练范围,这种模式依然适用。因此高频分量可以直接外推。

低频分量则不同。在训练长度内,低频分量可能只经历了不到一个完整周期,模型从未见过它的完整变化模式。如果直接外推,位置编码的数值会进入模型从未见过的区域。因此需要对低频分量进行内插,将其变化范围压缩到模型见过的区间内。

这种差异化处理使得模型在扩展上下文时,既能保留对局部词序的精确感知,又能适应更长的全局距离。

YaRN(Yet another RoPE extensioN)方法在 NTK-Aware 基础上还做了什么调整?

YaRN 在 NTK-Aware 的频率缩放基础上,进一步做了两个关键改进:

引入温度机制来控制注意力熵。当序列变长时,softmax 的熵会自然增大,注意力分布趋于均匀。YaRN 对注意力 logits 施加一个与长度相关的温度系数 t:

image.png

其中 tt 随着序列长度增加而略微增大(如 t=0.1ln⁡s+1,s 为缩放因子)。温度的升高使得 softmax 更加平滑,防止在长序列中注意力过度集中在极少数 token 上,同时缓解了长序列导致的注意力退化问题。

对高频维度的特殊处理。YaRN 观察到,即使在 NTK-Aware 缩放后,某些极高频的维度在长序列上仍可能出现性能下降。因此,它对最高频的几组维度应用了更小的缩放,甚至保持完全不缩放,并配合一个小的额外微调因子来校准。

此外,YaRN 提出了一种无需微调即可外推的方案。通过精心设计频率缩放和温度系数,YaRN 可以在不进行任何长文本微调的情况下,将模型的有效上下文长度扩展数倍,且性能下降极小。

YaRN 实际上是 NTK-Aware 的一个工程化增强版本,将频率缩放、温度调节和部分维度的精细控制结合为一个完整的即插即用方案,是目前 RoPE 外推中最有效的技术之一。

除了修改位置编码,还有哪些方法可以扩展上下文?如窗口注意力、稀疏注意力。

修改位置编码是一种“软件”层面的解决方案,而通过改变注意力机制本身来处理长序列则是另一种思路。这些方法可以单独使用,也可以与位置编码外推结合使用。

image.png

稀疏注意力。不限制为固定窗口,而是设计稀疏的注意力模式,让每个 token 关注一部分远距离的 token。例如 Longformer 使用滑动窗口加全局注意力的组合;BigBird 在此基础上增加了随机注意力模式;Sparse Transformer 使用固定的稀疏模式。这些方法在保持亚平方复杂度的同时,尽可能保留了对全局信息的访问能力。

分块递归处理。将长序列切分为多个块,每个块内部做全注意力,块之间通过循环机制传递信息。Transformer-XL 是最早的实践者,它在相邻块之间传递隐藏状态和相对位置信息,使模型能够捕获跨块的长距离依赖。

记忆压缩。将历史信息压缩为少量记忆 token,这些记忆 token 参与后续所有位置的注意力计算。例如 Compressive Transformer 将旧块的隐藏状态压缩为少量记忆单元;Memorizing Transformers 使用外部记忆库存储历史 key-value 对,通过 kNN 检索相关记忆。

层次化注意力。将序列组织为层次结构,如先在小块内做注意力,再在块级别做注意力,逐层聚合信息。这种方法类似于卷积神经网络中的金字塔结构,适合处理具有天然层次结构的文本。

这些方法的共同点是牺牲全注意力以换取效率,它们在不同程度上限制了模型对全局任意位置信息的直接访问。因此,在实际应用中,通常会与改进的位置编码外推方法结合使用,以在不牺牲太多性能的前提下大幅扩展有效上下文长度。

如何对 ALiBi 进行长度外推?它的偏置斜率需要调整吗?

ALiBi 天然具有长度外推能力,因为它施加的线性偏置只依赖于相对距离,与绝对位置完全无关。当序列从训练长度 2048 扩展到推理长度 8192 时,相对距离 ∣i−j∣ 的计算没有任何变化,偏置项的值也不受影响。

image.png

然而,当序列极长(如 100K)时,可能会出现一个问题:对于非常远的 token 对,负偏置变得极大(如 -m * 50000),在 softmax 之前就被压到了非常小的值,注意力权重几乎为零。这本身不是问题,因为模型本来就不应该关注那么远的 token。但如果某些任务需要极长距离的依赖,固定斜率的 ALiBi 可能会过于“近视”。

如果确实需要在超长序列上调整 ALiBi,可以减小斜率,让注意力窗口变宽。但这需要根据具体任务进行调试。通常来说,ALiBi 的原始斜率设计已经足够鲁棒,在大部分外推场景下无需修改。

如果要让一个 4K 模型支持 128K,你会选择什么外推方法?为什么?

将模型从 4K 扩展到 128K,即扩展 32 倍,这是一个巨大的跨度。单一方法可能难以完美解决,我会采用组合策略。

首选方法是 YaRN 或 NTK-Aware Scaling。如果模型使用 RoPE,直接修改基频来拉伸频率尺度是最便捷的方案。对于 32 倍的扩展,需要显著增大基频(如从 10000 增大到数百万)。NTK-Aware 的非均匀缩放能保护高频局部信息,YaRN 的温度机制能进一步稳定长序列上的注意力分布。这些方法已在 LLaMA 等模型上经过验证,扩展后仅需少量长文本微调即可恢复性能。

配合注意力窗口机制。128K 的全注意力计算成本极高。我会在部分层引入滑动窗口注意力,例如在浅层使用较大的窗口(如 4096),在深层使用全局注意力或更小的窗口。这样既能控制计算开销,又能保留捕捉长距离依赖的能力。

长文本微调策略。无论使用哪种位置编码外推,都需要在长文本数据上进行微调。我会准备一个包含不同长度(4K、8K、16K、32K、64K、128K)的混合数据集,训练时按比例采样。初期用较短文本热身,后期逐步增加长文本比例,让模型平稳过渡。

选择 YA RN 的理由:它不需要复杂的稀疏注意力实现,部署简单;即插即用,效果稳定;社区已有大量成功案例和开源工具支持。

长上下文扩展后,需要什么样的数据继续微调?数据长度分布如何设计?

微调数据的构造是长上下文扩展成败的关键。一个好的微调数据集应该具有以下特征:

长度分布的渐进性。不要一开始就全部使用 128K 的数据。应该设计从短到长的课程:先让模型在它已经熟悉的长度(4K-8K)上适应新的位置编码,然后逐步引入 16K、32K、64K、128K 的样本。这种渐进式训练能避免模型在初期被极长文本“吓到”,导致训练不稳定。

长度混合比例。在训练的每个阶段,数据集中应混合不同长度的样本。一个有效的策略是让长文本和短文本各占一定比例。短文本(如 4K 以内)保证模型不丧失原有的短文本处理能力;长文本(目标长度附近)训练模型的长距离依赖能力。常见做法是让长文本占比 30%-50%,短文本占 50%-70%。如果短文本性能下降,则提高短文本比例。

数据质量与多样性。长文本数据应覆盖文档级理解、长对话、书籍、长代码等多种类型。对于问答和摘要任务,确保问题和答案不都在文本的开头或结尾,而是分散在全文各处。这能训练模型在整个长上下文范围内检索信息。

“大海捞针”式数据。专门构造一些需要从长文本中间位置提取信息的训练样本。例如在一篇长文档的中间某处插入一个关键事实,然后在文档末尾提问该事实,迫使模型学会关注长文本的中间部分,而非只依赖开头和结尾。

注意避免截断。微调时不应截断长文本。如果原始数据超过目标长度,应使用滑动窗口或其他方式完整保留,否则模型永远学不到真正的长距离依赖。

评估长上下文性能时,除了困惑度,通常还使用哪些任务?如“大海捞针”。

困惑度是一个基础指标,但它只能反映模型对整体语言分布的建模能力,无法精确衡量模型在长文本中检索特定信息的能力。需要多维度的评估。

“大海捞针”测试。这是目前最流行的长上下文评测方法。将一句与上下文无关的短句(“针”)随机插入一篇长文档(“海”)的某个位置,然后在文档末尾提问这个短句的内容。测试模型能否准确找到并回忆出这个信息。通过变化“针”的插入位置(开头、中间、结尾)和文档的长度,可以精细地绘制出模型在不同位置、不同长度下的检索能力热力图。理想的模型应该在所有位置和长度上都能找到“针”。

长文档问答。使用需要跨段落或跨章节推理的数据集,如 LongBench、∞Bench 等。这些数据集包含了多跳推理、摘要、信息抽取等任务,能全面评估模型在长文本上的理解和推理能力。

键值检索。给模型大量的键值对(如数百个),然后询问某个键对应的值。测试模型在长序列中精确记忆和检索的能力。

多轮长对话。构建数十轮甚至数百轮的对话历史,测试模型在长时间对话中保持话题一致性、记忆早期用户需求的能力。

代码长上下文。给模型一个大型代码仓库的多个文件,测试其跨文件理解代码结构和定位 bug 的能力。

这些任务从不同角度测试了模型的长上下文能力:精确检索、长程推理、记忆持久性和抗干扰能力。

长度外推后,模型在短文本上的性能是否可能下降?如何缓解?

会的,这是一个常见问题。长度外推本质上改变了模型的内部表示,尤其是位置编码的分布。当把训练好的模型通过修改位置编码来适应长文本时,模型在短文本上的性能可能受损,表现为:

局部位置敏感度降低。以 NTK-Aware 为例,虽然高频部分得到保护,但仍有部分频率被拉伸。原本对短文本中邻近 token 的精细区分可能变弱,影响语法、词序相关的能力。

注意力分布的偏移。外推后,模型的注意力模式可能发生全局性的变化。即使输入的是短文本,由于位置编码参数已变,注意力权重的数值分布也不同于原始模型,可能导致性能波动。

训练-推理不一致。如果在长文本微调时没有充分混合短文本,模型会逐渐“忘记”短文本的处理技巧,即灾难性遗忘。

缓解策略:

  • 混合微调数据:在长文本微调阶段,确保数据集中包含足够比例的短文本(如 50%)。让模型同时学习短文本和长文本。

  • 短文本性能回归测试:在微调过程中持续监控模型在短文本基准上的表现。一旦发现指标下降,立即调整数据配比或降低学习率。

  • 使用 YaRN 等即插即用方法:这些方法经过专门设计,在不需要微调的情况下就能外推,对短文本性能的影响极小。

  • 参数高效微调:使用 LoRA 等轻量微调方法,只更新少量参数,减少对原有知识的覆盖。

  • 在推理时根据序列长度动态调整:当输入是短文本时,可以选择不启用长文本模式,或者动态调整位置编码的缩放因子。

位置编码外推后,注意力分数的分布会发生怎样的变化?如何分析?

位置编码外推后,注意力分布的变化是理解和优化外推效果的关键。可以通过以下方式进行分析:

注意力熵的变化。计算每一层、每个头在 softmax 后的注意力分布的熵。外推后,熵通常会增大,意味着注意力更加均匀分散。可以绘制熵随序列长度的变化曲线,观察在哪个长度范围熵开始显著偏离训练时的基准。

注意力距离分布。统计注意力权重随 token 间相对距离的分布。在原始模型中,可能有明显的局部峰值(多数注意力集中在近距离 token)。外推后,这个峰值可能变平、变宽,说明局部性减弱。可以绘制“平均注意力权重 vs 相对距离”的曲线。

注意力聚焦度。定义每个查询位置的最大注意力权重(top-1 权重)或前 K 个权重的累计和。外推后,这些指标通常下降,表明注意力被稀释。

位置编码内积矩阵。直接分析未经 softmax 的注意力分数矩阵 QKT。对于 RoPE,可以单独分析位置编码的贡献部分。观察在不同相对距离下,内积值的变化趋势是否合理。如果位置编码贡献的内积曲线在外推区域出现异常波动(如不单调、振荡加剧),说明位置编码失效。

可视化诊断。选择典型的长文本样本,可视化不同层的注意力矩阵。观察注意力模式是否仍然呈现结构化(如对角线附近的局部注意力),还是退化为随机噪声。

这些分析工具可以帮助判断外推是否成功,以及问题出在哪一层、哪个频率范围,从而指导进一步的参数调整。

解释一下“注意力窗口”的概念,以及它如何帮助模型处理超长序列。

注意力窗口是指限制每个 token 在计算自注意力时只关注其周围一定范围内的 token,而不是整个序列的所有 token。这个范围就是“窗口”。

在标准全注意力中,序列长度为 L 时,每个 token 需要与所有 L个 token 计算注意力,复杂度为 O(L2)。当 L 极大时,计算和内存都无法承受。

注意力窗口将每个 token 的关注范围限制在一个大小为 W 的固定窗口内(通常 W 远小于 L),复杂度降为 O(L⋅W)。窗口可以是单向的(只关注前面的 token,适用于自回归模型)或双向的(关注前后各 W/2个 token,适用于编码器)。

为什么窗口注意力能处理超长序列:

效率。计算量和显存占用与序列长度呈线性关系而非平方关系,使得处理百万级别 token 成为可能。

局部性归纳偏置。自然语言具有很强的局部性——相邻的 token 之间关联最紧密。注意力窗口强制模型优先学习这种局部依赖,符合语言的统计特性,因此即使视野受限,模型在大多数任务上仍能表现良好。

层次化组合。虽然单层窗口注意力只能捕捉局部信息,但多层堆叠后,高层可以间接获得更大的感受野。第 1 层看到窗口内的 token,第 2 层看到的 token 已经包含了其邻居的信息,依此类推,感受野随层数线性增长。

与全局注意力的结合。纯窗口注意力可能丢失关键的长距离信息。实际中,通常会在某些层保留全局注意力,或引入特殊的全局 token(如 [CLS])可以与所有 token 交互,作为信息传递的桥梁。

长文本训练时,如何通过截断或采样来平衡计算与效果?

当文本长度超过模型的处理上限时,需要在保留信息和控制计算开销之间做出权衡。

简单截断。只保留文本的前 L 个 token 或后 L 个 token。这种方法最简单,但会丢失大量信息。适用于任务只关心文本开头或结尾的场景(如新闻分类看标题和首段即可)。

滑动窗口截断。如果文本长度是 NN,模型处理上限是 LL,可以使用大小为 LL 的窗口在文本上滑动,步长为 L/2(有重叠)。每个窗口独立处理,最后通过某种方式(如平均、投票)合并结果。这种方法能覆盖文本的全部内容,但窗口之间没有交互,跨窗口的长距离依赖无法捕捉。

随机采样。在训练时,每次从长文本中随机截取一段长度为 L 的连续片段。这种方法类似于数据增强,使模型接触到文本的不同部分,但它破坏了文档的完整性。对于语言模型预训练,随机采样是最常用的方法,因为预训练的目标是学习语言的统计规律,而非理解特定文档。

层次化训练。先在较短文本上训练基础模型,再在较长文本上微调。微调时使用更大的 L 或组合多种截断策略。

重要区域优先。根据任务相关的启发式规则选择最可能包含关键信息的片段。例如,对于问答任务,可以通过检索模型先找出与问题相关的段落,然后只处理这些段落。

计算与效果的平衡点。通常,L 选择 2048 或 4096 是性价比较高的起点。训练时使用截断,但在评估长文本任务时使用完整文本(通过推理优化),以真实反映模型能力。

RoPE 的高频维度是否需要特殊处理?一些方法中缩放所有维度的频率是为什么?

高频维度确实需要特殊保护。RoPE 的高频维度(低索引组)是局部位置感知的核心。它们对位置变化极度敏感,负责区分相邻 token 的细微顺序。如果对这些维度进行大幅缩放,会模糊局部位置信息,直接损害模型对词序和基础语法的理解能力。

NTK-Aware 的核心创新就在于不对所有频率一视同仁,而是让高频几乎不受影响,让低频承担主要的缩放负担。YaRN 进一步发现,即使在 NTK-Aware 缩放后,最高频的一些维度仍可能需要额外的微调因子来精确保留原有行为。

为什么有些方法仍然缩放所有维度?主要是为了实现的简单性。PI 就是最简单粗暴的做法,一个缩放因子应用到所有维度,代码一行就能完成。在某些场景下(如扩展倍数不大,或可以在大量数据上充分微调),这种简单做法可能就足够了,性能损失在可接受范围内。但对于大倍数扩展或对性能要求苛刻的场景,非均匀缩放是必须的。

你如何看待位置编码的未来?有没有可能完全抛弃显式位置编码?

位置编码的未来可能会朝着更加隐式、更加灵活的方向发展,但短期内完全抛弃显式位置编码的可能性不大。

可能的发展方向:

结构内置的位置感知。设计新型的注意力机制或序列处理架构,使其天然具有感知顺序的能力,而不需要额外的编码。例如,使用状态空间模型(如 Mamba)这类架构,其循环结构本身就携带位置信息,可能不再需要显式的位置编码。

可学习的内容驱动位置。让模型根据内容自动推断位置关系,而非依赖外部强加的位置信号。在训练数据足够大、模型足够深的情况下,模型可能学会通过语义线索(如标点、段落结构、内容流)来隐式感知位置。

混合编码。结合绝对和相对位置编码的优点,设计更通用的位置表示。例如,在不同层使用不同类型的位置编码,或让模型动态选择使用哪种位置信息。

为什么不能完全抛弃?自注意力的置换等变性是其固有属性。只要还在使用标准自注意力机制,就需要某种方式来打破这种对称性,区分序列顺序。除非架构发生根本性变革,否则某种形式的位置信号仍是必需的。即使是最先进的大模型,位置编码仍是核心组件之一。

最终展望:位置编码将从一个需要精心手工设计的组件,演变为模型中自动学习、自适应的一部分。它会变得更加灵活、高效,支持任意长度,对不同类型的任务自动调整其位置感知策略。但“告知模型顺序”这个根本需求,在可预见的未来仍将存在。