当前位置: 首页 > news >正文

一文讲透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原论文标准公式,无任何删减改动:

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

目标:希望存在线性变换使得:对所有成立

数学推导: 设(单维度),则:

问题:右侧出现,但中只有→ 无法用的线性组合表示。

解决方案:同时包含定义二维位置编码:

位置偏移可表示为线性旋转:其中是仅依赖偏移量的旋转矩阵:

核心收益:

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

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

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

为什么指数衰减?

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

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

钟表齿轮类比:

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

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

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

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

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

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

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

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

http://www.jsqmd.com/news/1379975/

相关文章:

  • Ubuntu安装与高效使用tldr:命令行速查手册全攻略
  • 两节点MPP集群搭建操作指南
  • HarmonyOS 7.0 / API 26 DevEco 性能分析实战:首帧之后继续卡顿该看哪些日志
  • 重塑流量获客增长路径 柱子科技用AI定义泛家居营销新生态 - 甄选测评官
  • 成绩单毕业证公证多少钱?怎么办?办理费用明细与办理指引 - 指上通
  • MFC飞机大战实战:从消息驱动到双缓冲绘图的Windows游戏开发指南
  • Spring Cloud 测试分层:Testcontainers 验数据,WireMock 验降级
  • C++数据结构优化实战:从缓存原理到性能提升技巧
  • 2026年工业仪器仪表源头厂家推荐:研发能力与产线对比 - 科技焦点
  • HarmonyOS 7.0 / API 26 DynamicLayout 拖拽节流实战:窗口连续变化时如何减少重复测量
  • Applera1n:免费解锁iOS 15-16.6.1设备激活锁的完整指南
  • HarmonyOS 7.0 / API 26 DevEco 性能分析实战:ArkUI 掉帧到底该先看哪条链路
  • 小米具身智能面试,VLA+行为树能不能造出一个“万能大脑“
  • 恒美智造空气浮游菌采样器:食品行业洁净车间国产厂家品牌推荐 - 专业仪器测评品牌推荐
  • 找合肥猎头公司服务医药AI制药赛道,快速锁定计算生物学专家的策略在这里 - 榜单推荐
  • 白龙桥靠谱聚餐土菜馆推荐|地道农家菜 + 特色煲品,家庭好友小聚很合适
  • 采购O型密封圈/密封圈/O型圈/橡胶O型圈/氟胶O型圈/硅胶O型圈如何筛选源头厂家?盘点国内O型密封圈工厂实力企业金维密封科技等五家广东本土供应商参考 - 变量人生001
  • 海伦网站建设:从0到1搭建高转化企业官网的全流程实战指南与避坑指南
  • MEMS红外测温传感器如何在MLX90614替代方案中建立技术纵深
  • 2026 武汉激光焊接制氮机选型与安装指南:纯度标准、流量匹配、系统集成与维保方案 - 中国华商产业观察网
  • 广西壮族自治区武术学校一年费用|玉林市、百色市、贺州市、河池市武校学费性价比盘点推荐 - 圣龙武术朱老师
  • 沃尔玛购物卡回收怎么选渠道?闲置卡券变现实用科普 - 团团收购物卡回收
  • 点微同城小程序部署与微信审核一次通过实战指南
  • Appium设备操作API详解:从网络模拟到多设备测试实战
  • 彻底解决Python UnicodeEncodeError:从gbk编码错误到UTF-8最佳实践
  • 重庆施工财税规划优选铭景财税 - 甄选测评官
  • 蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
  • 2026深圳**国际物流测评|外贸出口高靠谱企业甄选列表 - 互联网科技品牌测评
  • VC6.0安装与配置全攻略:解决现代系统兼容性问题
  • C语言高效哈希表实现:uthash库核心原理与实战指南