一文讲透Transformer 的正余弦位置编码核心原理

Transformer正余弦位置编码原理与实践详解 位置编码是Transformer架构中处理序列顺序信息的关键技术,其核心原理是通过数学函数为每个位置生成独特标识。正余弦位置编码利用周期性波动特性,在保持位置间相对关系的同时避免数值过大问题,这种设计尤其适合并行计算的注意力机制。从工程实践看,该技术通过多级交替编码可同时捕捉短语级和篇章级位置特征,并需注意数值稳定性处理等实现细节。在自然语言处理领域,位置编码技术已发展出动态频率调整、混合编码等前沿改进方向,广泛应用于机器翻译、文本生成等场景,与注意力机制共同构成现代预训练模型的基础组件。 阅读详情

前言

做过Transformer、BERT、大模型微调的开发者,几乎人人都用过正余弦位置编码(Sinusoidal Positional Encoding)。

日常开发中,我们只会机械套用公式:偶数维用sin、奇数维用cos,固定底数10000,直接加到词嵌入向量上,训练全程固定不更新。

但绝大多数中级开发者都停留在会用但不懂底层的状态,甚至长期被各类错误认知误导。本文彻底破除误区,从业务场景、设计目标、数学原理、工程权衡四个维度,完整拆解正余弦位置编码的底层逻辑,读完你将彻底明白:为什么Transformer原生选择正余弦编码,而非可学习位置编码、绝对位置编码、相对位置编码?公式的每一项参数到底有什么作用?

绝对位置编码为什么不可以

绝对位置编码最简单粗暴的位置编码

最容易想到的办法:直接给序号

猫 = 第 1 位,追 = 第 2 位,狗 = 第 3 位

把「单词本身的向量」+「位置数字向量」融合在一起。

狗  追  小  猫   咪   小  猫  咪  跑  回  家

1   2  3   4    5   6   7   8   9  10  11

问题:

  1. 句子长短不固定,长句子序号会巨大,序列变长时pos数值无限变大,直接叠加到词向量会数值爆炸,破坏语义分布、梯度爆炸;

  2. 只能体现绝对差值, 模型很难学到「相近位置」的关系:第 5 位和第 6 位离得近,第 1 位和第 10 位离得远,单纯数字无法体现远近差距。无法体现 “相邻位置更相似、远距离差异更大” 的自然语序规律。

比如一句话 200 个字,第 199、200 位序号很大,模型感知不到他俩是紧挨着的。

可学习位置编码为什么不行

BERT 中的使用,直接训练位置向量,初始化一个参数矩阵[max_seq_len,dmodel],随模型训练更新位置向量。 给每个位置单独造一组参数训练。

优点:简单好训

缺点:长度超限就报废缺陷: 无法外推。训练时最大句子长度是 512,推理时遇到 600 字长文本,多出的位置没有训练好的编码参数,模型直接失效。

训练时最长句子是 100 个词,当测试来了 120 个词,多出 20 个位置没有训练过的编码,模型直接懵掉。

位置编号硬性要求:

  1. 唯一:不同位置pos,编码向量完全不同;

  2. 相对位置可推导:给定PE(pos),能推出PE(pos+k),模型感知词语间隔;

  3. 有界:向量数值稳定在[−1,1],叠加词向量不会数值爆炸;

  4. 可外推:训练没见过的超长位置,能直接计算编码,不用重新训练参数。

正余弦交替位置编码

Transformer原论文标准公式,无任何删减改动:

PE(pos, 2i) = \sin\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right)

PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right)

原因:纯正弦编码无法表达相对位置的线性变换

目标:希望存在线性变换  M_\Delta  使得:\text{PE}(t+\Delta) = M_\Delta \cdot \text{PE}(t)  对所有  t  成立

数学推导:  设  \text{PE}(t)=\sin(t)  (单维度),则:\sin(t+\Delta)=\sin t\cos\Delta + \cos t\sin\Delta

问题:右侧出现 \cos t  ,但  \text{PE}(t)  中只有 \sin t  → 无法用  \sin t   的线性组合表示。

解决方案:同时包含 \sin  和  \cos 定义二维位置编码: \text{PE}(t)=\begin{bmatrix}\sin t \\ \cos t\end{bmatrix} 

\sin(\alpha+\beta) = \sin\alpha\cos\beta + \cos\alpha\sin\beta

\cos(\alpha+\beta) = \cos\alpha\cos\beta - \sin\alpha\sin\beta

位置偏移可表示为线性旋转: \begin{bmatrix}\sin(t+\Delta) \\ \cos(t+\Delta)\end{bmatrix}= \begin{bmatrix}\cos\Delta & \sin\Delta \\ -\sin\Delta & \cos\Delta\end{bmatrix} \begin{bmatrix}\sin t \\ \cos t\end{bmatrix}  其中 M_\Delta   是仅依赖偏移量  \Delta 的旋转矩阵:M_\Delta=\begin{bmatrix}\cos\Delta & \sin\Delta \\ -\sin\Delta & \cos\Delta\end{bmatrix}

核心收益:

  1. ✅ 任意位置偏移\Delta 可通过线性旋转实现

  2. ✅ 模型只需学习旋转角度\Delta,而非具体位置值

  3. ✅ 天然支持相对位置建模(旋转角度 = 位置差)

为什么指数衰减?

  • 高频维度(\omega_i 小):波长短 → 捕捉精细位置差异(如区分位置1和2)

  • 低频维度( \omega_i 大):波长长 → 编码宏观位置关系(如区分前半段和后半段)

钟表齿轮类比:

  • 秒针(高频):快速旋转,区分相邻秒

  • 分针(中频):中速旋转,区分分钟级差异

  • 时针(低频):缓慢旋转,区分小时级位置 三针组合,可唯一确定任意时刻!

为什么底数固定是10000?不是100、1000、100000?

绝非玄学参数,是长短距离感知的最优平衡值。

  • 底数过小:高频维度周期过密,长距离位置编码容易重叠混淆,无法区分远距离Token;

  • 底数过大:低频维度周期过长,局部短距离位置的编码差异极小,模型无法捕捉细微的位置顺序差异;

  • 10000:刚好覆盖NLP任务的常规序列长度(几百到几千),兼顾局部细粒度感知与全局长距离区分度,是理论最优解。

深入解析Transformer位置编码:从数学原理到实践应用 本文深入解析了Transformer位置编码的数学原理与实践应用,详细探讨了其核心价值、正余弦编码的数学奥秘以及双重信息捕获机制。通过对比固定编码与可学习编码的优劣,提供了处理超长序列的实用技巧,并分享了在不同任务中的调参经验,帮助开发者优化模型性能。 阅读详情

相关推荐

【NLP】第十章:位置编码Positional Encoding

前面讲RNN时一般都会有一个ht的输出,这个输出就是样本与样本之间的信息,而且RNN是时序循环的,所以RNN本身的结构,在物理上,就自带词的前后顺序信息的。比如词never,不管never本身的词向量是什么,只要你在序列中排第一个位置,你的位置向量就是[0,1,01],你排第三个位置,你的位置向量就是[0.9,-0,4,0.2,1.0]。也所以,你可以理解为:embedding后的词嵌入,PE按照每个样本在sequence中的位置,把embedding后的词嵌入给扭转后,才送入attention的。

因为热爱所以坚持 1918

【NLP练习】Transformer中的位置编码

Transformer 模型中的位置编码是为了在处理序列数据时引入位置信息,以便模型能够分辨输入序列中不同位置的词或标记。其中,每个位置/索引都映射到一个向量。因此,位置编码层的输出是一个矩阵,其中矩阵的每一行代表序列中的一个编码对象与其位置信息相加。下图为仅对位置信息进行编码的矩阵示例。Transformer的位置编码一方面通过正弦和余弦函数来编码位置信息,这种编码方式能够使得不同位置的编码在空间上有良好的分布。

Elfin_z的博客 1392

单细胞基因可视化之热图的根本改造2

我们前面已经说过了单细胞marker/或者其他任意基因的热图的简单修饰(单细胞基因可视化之热图改造修饰1),仅仅是基于颜色和DoHeatmap函数的参数修饰。那么要对热图进行根本的改造,关键点在于提取表达矩阵,然后对分组进行注释,就可以使用heatmap或者ComplexHeatmap来做图了。 首先计算marker基因,然后选择自己需要展示的基因。 library(Seurat) library(stringr) library(dplyr) all.markers <- Find

qq_42090739的博客 6676

LLaMA的旋转位置编码与Transformer的正余弦位置编码:原理、对比与选择原因分析

位置编码作为Transformer架构中的关键组件,其设计直接影响模型对序列数据的处理能力。通过对正余弦位置编码和旋转位置编码(RoPE)的深入分析与对比,我们不仅理解了它们的技术原理和实现差异,也揭示了现代大语言模型如LLaMA在位置编码选择背后的深层考量。本节将总结两种编码方法的本质区别,探讨位置编码技术的演进逻辑,并展望未来的发展方向。哲学理念差异正余弦编码体现了一种静态注入的思想,位置信息通过预定义的固定模式添加到输入表示中。RoPE代表了一种动态融合。

深耕互联网架构与AI领域多年,专注大模型工程化、云原生架构、AI驱动系统,分享实战经验、前沿技术和架构方法论。每周产出深度长文+技术短文,涵盖大厂案例、论文解读与工程实践。拒绝水文,只讲干货。关注我,与一线架构师共同探索技术本质。 2239

Arduino MLX90393磁力计驱动库:高精度三轴霍尔传感器开发指南

三轴霍尔效应磁力计是嵌入式系统中实现无接触角度检测、电子罗盘与电流传感的核心器件。其工作原理基于霍尔电压随外磁场矢量变化的物理特性,通过I²C接口输出高分辨率(16/20-bit)XYZ轴原始数据,并集成温度补偿与数字滤波功能。技术价值体现在确定性响应、低功耗(典型0.5 μA待机)及强抗干扰能力,适用于电池供电设备与实时操作系统环境。典型应用场景包括电机位置反馈、永磁体旋转角度解算、工业编码器和地磁导航。本库专为Arduino生态优化,深度封装MLX90393寄存器协议与自校准流程,同时兼容STM32、E

weixin_29363791的博客 642

sdc时钟约束2——多驱动时钟

sdc 多驱动时钟 master_clock

qq_40411444的博客 5529

从正余弦到旋转:Transformer位置编码的演进逻辑与技术解析

Transformer架构自2017年由Vaswani等人提出以来,已成为自然语言处理领域的基石模型。与传统的RNN和CNN不同,Transformer完全依赖注意力机制来建模序列关系,这使得位置编码(Positional Encoding)成为不可或缺的组成部分。位置编码的作用是为模型提供序列中元素的位置信息,弥补自注意力机制本身对顺序不敏感的缺陷。在原始Transformer中,作者提出了正余弦位置编码方案,这一设计在早期取得了显著成功。

深耕互联网架构与AI领域多年,专注大模型工程化、云原生架构、AI驱动系统,分享实战经验、前沿技术和架构方法论。每周产出深度长文+技术短文,涵盖大厂案例、论文解读与工程实践。拒绝水文,只讲干货。关注我,与一线架构师共同探索技术本质。 1308

深入解析车载以太网DoIP诊断:Wireshark实战TCP/UDS报文分析

本文深入解析车载以太网DoIP诊断,重点介绍如何利用Wireshark进行TCP/UDS报文实战分析。文章详细讲解了从以太网帧、IP帧、TCP段到DoIP协议及UDS服务的逐层拆解方法,并提供了使用Wireshark定位通信故障(如乱序、丢包、重传)的实用技巧,帮助工程师高效排查车载诊断网络问题。

c2d3e4f的博客 677

【Transformer系列】深入浅出理解Positional Encoding位置编码

【Transformer系列】深入浅出理解Positional Encoding位置编码

IT菜鸟 4万+

双脉冲测试中IGBT驱动电阻和驱动电容的研究

  在LTspice中没有双脉冲波形发生器,要做一个双脉冲的波形只能用电压源来进行特殊设置,不是很方便,为此我写了一个双脉冲波形发生器,有需要的可以下载。双脉冲波形发生器。   如下,该元器件可以自定义延迟时间Td,第一个脉冲宽度T1,第二个脉冲宽度T3,两个脉冲间隔T2,脉冲循环个数Ncycle以及高低电平Vhigh,Vlow。       IGBT开通时Rg的影响: 如果增大Rg: ①开通延...

gaoyong_wang的博客 8358

YOLOv11改进策略【独家融合改进】| 模型轻量化二次改进:StarNet + FreqFusion,极限降参,适用专栏内所有轻量化模型

FreqFusion是一种旨在解决密集图像预测任务中特征融合问题。

Limiiiing的博客 2125

深入理解Transformer位置编码:正余弦函数编码

Transformer模型自2017年提出以来,彻底改变了自然语言处理领域。与传统的RNN和LSTM不同,Transformer完全基于注意力机制,能够并行处理整个序列。然而,这也带来了一个关键问题:如何让模型理解序列中元素的位置信息?在RNN中,位置信息是天然存在的——每个时间步的处理都依赖于前一个时间步。但在Transformer中,所有位置是并行处理的,因此需要显式地注入位置信息。这就是位置编码(Positional Encoding)的作用。

TracyCoder的博客 1712

基于STM32+ESP8266+手机APP的心率血氧温湿度监测报警系统设计(项目资料ID:18)

基于 STM32 微控制器、ESP8266 无线模块和 QT 手机 APP 的多参数监测报警系统。该系统可实时采集心率、血氧饱和度、环境温湿度等参数,通过 OLED 显示屏本地显示,并通过 WiFi 模块上传至手机 APP 实现远程监测与数据可视化。系统具备报警阈值自定义功能,当参数超出设定范围时,通过蜂鸣器和 LED 进行声光报警。系统以 STM32F103 为控制核心,采用 MAX30102 传感器采集心率和血氧,DHT20 采集温湿度,通过 ESP8266 实现无线通信,配合 QT 开发的手机 APP

以培养嵌入式工程师为己任 1万+

Transformer底层原理—位置编码

Transformer模型中的Embedding层将离散词汇转换为连续向量,便于模型学习语义关系。由于Transformer缺乏序列顺序信息,需引入位置编码(Positional Encoding)来补充位置信息。位置编码采用正弦和余弦函数交替生成高维向量,其值域有限且能保持相对位置关系。这种编码方式避免了位置信息对语义的干扰,同时确保模型能有效处理序列顺序。位置编码矩阵与Embedding矩阵相加后输入编码器和解码器,使Transformer能同时利用语义和位置信息进行高效并行计算。

qq_45975143的博客 1522

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2241

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Transformer位置编码技术:原理、设计与数学本质深度解析

本文深入剖析Transformer模型中的位置编码技术,从序列建模的根本挑战出发,系统分析正余弦位置编码的设计原理、数学特性及其在自注意力机制中的作用机制。文章不仅详细解读原始Transformer论文中的位置编码方案,还探讨了其优势局限以及后续改进方向,为理解Transformer架构的核心组件提供全面视角。

深耕互联网架构与AI领域多年,专注大模型工程化、云原生架构、AI驱动系统,分享实战经验、前沿技术和架构方法论。每周产出深度长文+技术短文,涵盖大厂案例、论文解读与工程实践。拒绝水文,只讲干货。关注我,与一线架构师共同探索技术本质。 1294

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

讲透一个强大算法模型,Transformer !!

本文探讨了Transformer模型中不同位置编码方式的几何特征及其性能差异。首先介绍了位置编码的作用是为并行处理的Transformer模型提供序列顺序信息。重点分析了四种编码方式:1)正余弦编码具有周期性几何特征;2)可学习编码缺乏数学结构但灵活;3)相对位置编码更适合长文本;4)旋转编码通过向量旋转保持模长不变。通过PyTorch实验对比了不同编码在合成数据集上的表现,展示了PCA降维分布和注意力模式差异。文章还提出了混合编码等优化建议,并给出了系统化的调参流程。实验结果表明,编码方式的选择直接影响模

2501_91695155的博客 883

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Transformer位置编码实战:从正余弦到RoPE的代码实现与性能对比

本文深入探讨了Transformer模型中的两种主流位置编码方案:正余弦位置编码和旋转位置编码(RoPE),通过PyTorch代码实现和性能对比实验,帮助开发者理解如何在实际项目中选择最适合的方案。RoPE在处理长序列时展现出明显优势,而正余弦编码则因其简单可靠在资源受限场景中仍具价值。

hadoop5ranger的博客 1049

Transformer彻底剖析(8):正余弦位置编码、旋转位置编码

他自然的包含了相对位置信息,为什么,position + k的位置编码可以由位置position的位置编码来线性表示,这样就能证明这个公式包含了相对位置,那么任意pos +k的位置编码都可以由pos的位置编码进行线性变换得到,维度越小,则每个词之间的区别就越大,纬度越大,每个词之间的区别就越小,低纬度用来表示局部信息,高纬度用来表示全局信息。假设词向量只有两个维度,正余弦位置编码采用的是加法,而旋转位置编码采用的是旋转,如果是第m个词,就逆时针旋转m个角度,第n个词,就旋转n个角度,

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 204

10分钟看懂RoPE!动图拆解旋转位置编码,Transformer核心原理秒懂!

在自然语言中,词与词之间的语义关系往往取决于它们的相对距离,而不是它们在句子中的绝对位置。RoPE不再将位置信息加到词向量上,而是通过旋转操作直接编码相对位置关系。位置0的词保持原样(旋转0°)位置1的词旋转θ°*位置2的词旋转2θ°位置3的词旋转3θ°每个位置对应不同的旋转角度,位置信息就这样被优雅地"编码"到了向量的方向中。RoPE旋转位置编码中,当两个旋转后的向量进行点积运算时,会发生一个美妙的数学现象。⟨旋转m次的q, 旋转n次的k⟩ = ⟨q, k⟩ × cos((m-n)θ)

star_nwe的博客 1534

Transformer模型中位置编码(Positional Embedding)技术全解析(三)

本文解析Transformer位置编码的核心作用与技术演进。针对自注意力机制缺乏顺序感知的问题,对比绝对编码(固定正余弦、可学习编码)与相对编码(RoPE旋转、ALiBi线性偏置)的原理及优劣,涵盖傅里叶级数设计、外推能力等关键点。结合代码示例,总结主流方法(如Sinusoidal、RoPE)的参数效率与应用场景,探讨其在大模型(如LLaMA)中的实践趋势,为模型设计提供技术参考。

1249

Transformer位置编码详解:从正余弦编码到RoPE的演进与实现

在深度学习中,序列建模的核心挑战之一是让模型理解词序关系。Transformer的自注意力机制本身对位置不敏感,位置编码通过为每个Token注入位置信息来解决这一问题。其原理是利用不同频率的正余弦函数生成固定维度的编码向量,使模型能通过线性变换捕捉相对位置。技术价值在于提升模型对长距离依赖的建模能力,并支持序列外推。应用场景涵盖机器翻译、文本生成等NLP任务。随着大模型发展,旋转位置编码(RoPE)因其显式相对位置表达和良好外推能力成为主流。本文深入解析位置编码的数学原理、代码实现及演进逻辑,帮助读者掌握这

weixin_29483277的博客 258

Transformer正余弦位置编码原理与工程实践

位置编码是Transformer架构处理序列数据的关键技术,其核心作用是为模型注入位置感知能力。正余弦位置编码通过精心设计的波形函数,将序列位置映射为高维向量表示,兼具数学优雅性与工程实用性。该编码方式采用交替的正弦余弦函数,形成从高频到低频的连续频谱,不仅能唯一标识每个位置,还能通过线性变换捕捉相对位置关系。在自然语言处理和计算机视觉等领域,正余弦编码展现出优异的外推性和参数效率,特别是在处理长序列任务时优势明显。实际应用中需注意与词嵌入的整合方式、计算效率优化以及跨领域适配等工程细节,这些因素直接影响模

weixin_31499265的博客 241

Transformer(6)之位置编码(Positional Encoding)

本文探讨了Transformer模型中位置编码的必要性与实现方法。首先指出Attention机制本身无法感知词序,通过数学示例证明仅靠词向量无法区分"我吃苹果"和"苹果吃我"的语序差异。然后分析三种位置编码方案:整数编号会破坏语义关系,one-hot编码无法表达位置远近关系,而正余弦编码通过多频率波形映射,既能区分位置又保留相对距离信息。详细解读了Transformer原论文的正余弦位置编码公式,展示了不同频率分量对相邻位置变化的敏感性差异。最后说明位置编码与词向量相

wiwlk的博客 1172

一文搞懂大模型核心:旋转位置编码(RoPE)原理与实现!

本文详细介绍了Transformer架构中的位置编码,特别是旋转位置编码(RoPE)的原理与优势。RoPE通过旋转token embedding而非添加位置向量,在注意力计算中自然引入相对位置信息,解决了传统正余弦编码的局限性。其数学形式优雅、计算高效,被广泛应用于LLaMA、ChatGLM等大模型中,成为位置编码的事实标准,并衍生出多种改进方法以增强长序列外推能力。

WANGJUNAIJIAO的博客 1651

正余弦与RoPE位置编码:从理论到实践的全面解析

本文全面解析了Transformer模型中的两种核心位置编码技术:经典的正余弦位置编码与先进的旋转位置编码(RoPE)。文章从理论原理出发,详细对比了二者的工作机制、代码实现、优势局限及适用场景,并指出RoPE凭借其优异的相对位置感知和长度外推能力,已成为当前大语言模型(如LLaMA、GPT-NeoX)的主流选择。

java5的博客 240
上一篇: pycharm VScode终端报错:无法加载文件 ...\venv\Scripts\activate.ps1Python虚拟环境报错
下一篇: Pip离线安装本地依赖包完整教程(Windows+Linux,含参数详解)
王_teacher
博客等级 码龄9年 118粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值