简介

本文系统梳理位置编码技术发展历程,从绝对位置编码到相对位置编码,重点剖析RoPE和ALiBi的数学原理与实现,以及DeepSeek的创新实践。现代大模型正朝着高效、可扩展、支持长上下文方向演进,RoPE及其变体已成为行业主流,而ALiBi在长序列外推任务中展现出独特优势。文章通过对比分析,为不同应用场景选择合适的位置编码方法提供了技术参考。


本文将从位置编码的起源出发,系统梳理其发展脉络,深入分析各类位置编码方法的原理与实现,并最终聚焦于DeepSeek位置编码的创新点,力求呈现一个完整的位置编码技术全景。

💡关键洞见:现代大模型正朝着高效、可扩展、支持长上下文的方向演进,RoPE及其变体已成为行业主流,而ALiBi在长序列外推任务中展现出独特优势。

**位置编码是Transformer架构中不可或缺的组成部分,它使模型能够感知序列中元素的顺序关系。**位置编码的发展历程体现了模型架构设计者对序列建模本质的深刻理解,以及在长序列处理和模型泛化能力之间的权衡与突破。

本文系统性地梳理位置编码技术的发展脉络,从早期的绝对位置编码到现代的相对位置编码方案,重点剖析了旋转位置编码(RoPE)和ALiBi位置编码的数学原理与实现细节,并深入探讨DeepSeek模型在位置编码方面的创新实践。

一、位置编码的起源与必要性

位置编码的诞生源于Transformer模型的一个致命缺陷:自注意力机制的顺序无关性。在传统的循环神经网络(RNN)中,模型通过隐藏状态的时序传递天然携带位置信息RNN的隐藏状态计算公式为:

这种设计使得RNN能够隐式地编码位置信息,但同时也带来了长序列处理中的梯度消失问题,限制了模型对远距离依赖关系的捕捉能力。

Transformer模型的自注意力机制的公式:

Transformer模型通过自注意力机制实现了并行计算,大幅提升了处理效率,但其计算方式完全忽略了词元的顺序信息。自注意力机制的输出对于输入序列的任何排列都是不变的,这意味着模型无法区分"猫追老鼠"和"老鼠追猫"之间的语义差异。

Transformer架构概述

为验证这一点,我们可以进行一个简单的实验:

对两个位置相同的查询向量与两个不同位置的键值向量计算注意力得分,结果会发现无论键值向量的位置如何交换,输出结果都完全一致,这显然不符合语言模型的需求。

举个例子,在自注意力机制的眼里,下面两个句子的结构是完全一样的:

  • 句子A:猫 追 老鼠
  • 句子B:老鼠 追 猫

所以,如果没有位置编码,那 LLM 基本上是没办法工作的。

正是基于这一洞察,位置编码被引入Transformer模型,以显式地向模型提供序列中词元的位置信息。

位置编码的必要性在多个实验中得到了验证。例如,在文本分类任务中,去除位置编码的模型准确率显著下降,需要更多的迭代次数才能学习到位置信息,最终性能也低于有位置编码的模型。

这也表明了,位置编码不仅提高模型的效率,还增强其对序列结构的理解能力。

二、基础位置编码方法

绝对位置编码是最直观的位置编码方法,它为每个位置分配一个唯一的标识符,通常与词嵌入向量相加。有两种典型的实现方式:

  • **线性位置编码:**为每个位置分配一个递增的整数值,如第一个词元位置为1,第二个为2,依此类推。这种方法的问题在于,随着序列长度增加,这些数值可能会变得非常大,导致模型难以处理比训练时更长的序列。
  • **One-Hot位置编码:**为每个位置创建一个二进制向量,其中只有一个元素为1,其余为0。这种方法虽然简单,但会导致位置向量维度与序列长度相同,对于长序列来说计算开销过大。

可学习位置编码是另一种基础位置编码方法,它通过一个可学习的嵌入层为每个位置生成向量。在BERT等模型中,位置嵌入与词嵌入一样是可学习的参数,通过反向传播进行优化。这种方法的优势在于能够适应不同任务的位置需求,但其缺点也很明显:模型无法处理训练时未见过的序列长度,外推能力受限。

😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述
三、Transformer 原始位置编码

论文地址:https://arxiv.org/pdf/1706.03762

论文题目:《Attention Is All You Need》

2017年,Transformer****论文提出基于正弦函数和余弦函数的绝对位置编码方法,这一设计至今仍被广泛研究和应用。

这里提到,正余弦函数的位置编码属于绝对位置编码!!

你可能会好奇,通过正余弦变换,可以推导出其含有相对位置,**为什么不叫相对位置编码呢?**其中主要原因是:在输入Embedding+位置Embedding,计算Attention的时候,由于矩阵变换的原因,会破坏掉这种相对位置信息。

Transformer的位置编码向量通过交替使用正弦和余弦函数生成,其核心思想是通过不同频率的波形组合来表示位置信息。具体公式如下:

其中,pos是词元在序列中的位置索引,i是位置编码向量的维度索引,dmodel是模型的隐藏层维度。

这种设计使得每个位置都有一个唯一的编码向量,同时通过几何级数递减的频率

实现了对不同尺度位置关系的捕捉。

原始 Transformer 将位置编码与词嵌入相加:

这种方法虽然简单,但具有几个重要优势:

  • 外推能力:由于正弦和余弦函数的周期性特性,模型即使在处理比训练时更长的序列时,也能通过位置编码向量的数学特性推断出位置关系,无需额外参数学习。
  • 确定性:位置编码向量是确定性生成的,不会受到随机初始化或训练过程的影响。
  • 低计算开销:与可学习位置编码相比,正弦/余弦位置编码不需要额外的参数存储和训练。

然而,Transformer原始位置编码也存在明显局限:

**它主要编码了词元的绝对位置,而非相对位置关系。**在计算注意力时,由于Q、K、V向量需要经过投影矩阵变换,**原始位置编码的相对位置信息会被破坏。**这一缺陷在长序列处理中尤为明显,因为模型需要理解词元之间的相对距离而非绝对位置。

四、相对位置编码

论文地址:https://arxiv.org/pdf/1803.02155

论文题目:《Self-Attention with Relative Position Representations》

论文地址:https://arxiv.org/pdf/1910.10683

论文题目:《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》

论文地址:https://arxiv.org/pdf/1901.02860

论文题目:《Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context》

为解决Transformer原始位置编码的局限性,相对位置编码方法应运而生。相对位置编码的核心思想是让模型关注词元之间的相对距离,而非绝对位置,这更符合语言建模的实际需求,因为语义理解往往依赖于词元之间的相对关系。

相对位置编码可以分为两类:训练式相对位置编码和函数式相对位置编码。

训练式相对位置编码通过可学习的参数来表示相对位置关系。Shaw等人在2018年首次提出相对位置编码[1]方法,将词元之间的相对位置关系表示为可学习的嵌入向量,并通过以下方式融入注意力计算:

其中,rij是表示位置i和j之间相对关系的可学习嵌入向量,通过clip函数限制其范围:

这种方法在机器翻译任务中取得了显著效果,但在长序列处理中面临参数量随序列长度平方增长的问题,限制了模型的扩展能力。

函数式相对位置编码则通过数学函数直接计算相对位置偏置,无需额外参数学习。T5模型[2]采用了一种简化版的相对位置编码,为每个相对位置ts分配一个可学习的标量偏置:

其中,Rij是表示位置i和j之间相对关系的标量偏置T5的相对位置编码采用分段衰减策略,对邻近位置分配独立偏置,对远距离位置共享偏置,有效平衡了局部与全局信息的建模。

Transformer-XL模型[3]则采用了另一种函数式相对位置编码方法,通过在注意力计算中引入位置偏置项,同时保持内容信息和位置信息的独立性:

其中,

可学习的参数,R是一个正弦编码矩阵,与Transformer原始位置编码类似。

下面,我们继续介绍两种当前应用较为广泛的函数式相对位置编码:RoPE和ALiBi。

五、旋转位置编码(RoPE)

论文地址:https://arxiv.org/pdf/2104.09864

论文题目:《RoFormer:Enhanced Transformer with Rotary Position Embedding》

深度推导解读:https://spaces.ac.cn/archives/8265(苏神的科学空间)

**2021年,**旋转位置编码[4](Rotary Position Embedding, RoPE)提出,它巧妙地将位置信息融入查询和键向量的旋转中,通过复数向量旋转的方式实现了对相对位置的建模,同时保持了与Transformer原始架构的兼容性。

RoPE的核心思想源于二维空间的旋转变换,其数学原理可以通过欧拉公式和复数向量旋转来理解。

RoPE的实现分为两个关键步骤:向量旋转和复数域表示

首先,将向量按维度两两分组,形成多个二维子空间:将向量

拆分为 偶数维度 Xeven 和奇数维度 Xodd。

然后,为每个位置生成旋转角度,并应用旋转矩阵:

这一旋转操作可以等价地表示为复数域中的乘法:

最后,将旋转后的子空间重新组合,得到融入位置信息的向量。

RoPE的数学精妙之处在于其能够保持自注意力权重仅依赖于token之间的相对距离,与绝对位置无关

通过严格的数学推导可以证明,对于位pos和pos+k的两个token,它们的旋转后向量点积仅包含k(相对位置)的信息,与绝对位置pos无关。这使得RoPE能够自然地支持长序列的外推能力,即使在处理比训练时更长的序列时,也能保持相对位置关系的正确建模。

在工程实现上,RoPE通过复数域表示简化了计算流程,使高维旋转的代码实现更加简洁高效。这一特性使得RoPE成为现代大语言模型(如LLaMA、GPT-J、ChatGLM等)的标配技术,显著提升了模型对长序列的处理能力。

六、ALiBi位置编码

论文地址:https://arxiv.org/pdf/2108.12409

论文标题:《Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation》

ALiBi[5] 是一种特殊的相对位置编码方法,它通过在注意力分数中引入与相对距离成正比的线性惩罚因子,调整注意力分布。与传统的位置编码方法不同,ALiBi不需要额外的训练参数,而是直接通过数学公式生成偏置矩阵,这使其成为计算效率最高的位置编码方法之一。

ALiBi的偏置矩阵计算公式为:

其中,m是注意力头的数量,t-s是两个token之间的相对距离。这一公式生成的偏置矩阵具有明显的线性衰减特性,使得模型注意力分布自然地倾向于关注邻近的token,而对远距离token给予较小的关注。

ALiBi的位置编码机制与RoPE不同,它不修改查询和键向量本身,而是直接调整注意力分数。具体实现为:

其中,B是ALiBi生成的偏置矩阵。

ALiBi的一个显著优势是其计算效率极高,无需进行复杂的向量变换,也无需额外的参数存储。这使得ALiBi特别适合资源受限的场景,如移动端部署或低算力环境下的模型应用。

然而,ALiBi也存在明显局限:其线性衰减模式无法适应不同任务对位置关系的差异化需求。在长序列处理中,ALiBi的固定衰减斜率可能导致注意力分布失衡,无法有效捕捉远距离依赖关系。

实验表明,ALiBi虽然在某些场景下表现出色,但其外推能力有限,当序列长度超过训练时的最大长度时,模型性能会显著下降。

七、DeepSeek位置编码

论文地址:https://arxiv.org/pdf/2405.04434

论文题目:《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》

论文地址:https://arxiv.org/pdf/2412.19437

论文题目:《DeepSeek-V3 Technical Report》

DeepSeek模型[6]在位置编码方面进行了创新性改进,提出低秩信息压缩、矩阵吸收和位置编码改进策略,显著提升了模型对超长序列的处理能力和效率。DeepSeek的位置编码技术是其支持超长上下文窗口(如128K tokens)的关键组件之一。

低秩信息压缩是DeepSeek位置编码的首个创新点。它通过奇异值分解(SVD)将键值缓存矩阵分解为低秩近似:

其中,Uk和Σk是保留前k个奇异值的分解矩阵。通过仅存储低秩近似矩阵,DeepSeek将键值缓存的显存占用降低至原体积的1/20,显著提升了长序列推理的效率。

矩阵吸收是DeepSeek的另一项关键技术。它通过将位置编码的旋转矩阵与查询/键投影矩阵合并,形成融合后的投影矩阵:

其中,WQWK是原始的查询和键投影矩阵,R(θ)是位置编码的旋转矩阵。通过这种融合方式,DeepSeek避免了单独存储位置编码参数,进一步降低了模型的显存占用。

DeepSeek位置编码对RoPE进行了改进,通过解耦RoPE与非RoPE维度,动态调整角度参数,结合NTK-aware策略优化外推能力。

在实际应用中,DeepSeek的位置编码技术与混合专家网络(MoE)架构相结合,通过稀疏计算模式大幅降低了长文本处理的推理成本(降低30%-50%),同时通过多头潜在注意力(MLA)技术,将键值缓存压缩至原体积的1/20,显著提升了长序列处理效率。

八、位置编码方法对比与性能分析

位置编码方法 计算复杂度 参数量 外推能力 长序列处理 内存占用
绝对位置编码
RoPE 良好
ALiBi 中等 中等 极低
DeepSeek 极低 极强 优秀 极低

从计算效率角度看,ALiBi和DeepSeek具有明显优势,因为它们不需要额外的参数学习或复杂的向量变换。RoPE虽然计算复杂度中等,但其复数域实现使得计算相对高效。绝对位置编码则需要存储和计算额外的位置嵌入向量,计算开销较大。

在长序列处理能力方面RoPE和DeepSeek表现出色,能够支持数千甚至上万token的上下文窗口。实验表明,RoPE在2048k tokens下仍能保持稳定的性能(如ARC-Challenge准确率59.0%)。DeepSeek通过YaRN技术扩展RoPE至128K tokens,并结合低秩压缩和矩阵吸收,实现了超长序列的高效处理。

外推能力是位置编码方法的重要指标。RoPE和DeepSeek的位置编码能够自然地支持外推,**即使在处理比训练时更长的序列时,也能通过数学特性保持相对位置关系的正确建模。**而ALiBi的外推能力有限,当序列长度超过训练时的最大长度时,模型性能会显著下降。绝对位置编码的外推能力最弱,因为其编码与序列长度直接相关。

💡关键洞察:位置编码已从简单的向量相加进化为复杂的旋转与偏置机制RoPE凭借其数学优雅性和强外推能力成为大模型标配,而ALiBi在特定场景下仍具竞争力DeepSeek的实践表明,动态NTK插值+解耦策略是当前长上下文建模的最优解之一,为未来百万级token上下文研究奠定了基础。

九、读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐