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

位置编码(Positional Encoding)

为什么Transformer需要位置编码?

  • RNN和LSTM等模型天生具有顺序性(第t步的隐藏状态依赖于第t-1步)
  • Transformer的自注意力和前馈网络是置换不变的(permutation invariant)——它们不关心输入的顺序
    位置编码是解决这个问题的关键方法

位置编码的原理

  • 位置编码通过在输入嵌入向量中添加一个与位置相关的向量来实现,使每个token的表示同时包含"是什么"(token embedding)和"在哪个位置"(Positional Encoding)的信息。

位置编码的数学原理

原始Transformer中使用的是正弦/余弦位置编码,公式如下:

# pos:位置索引(从0开始)
# i:维度索引(从0到d_model-1)
# d_model:嵌入维度
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

位置编码在Transformer中的使用

  • 词嵌入(Embedding):将每个token映射为固定维度的稠密向量
  • 位置编码(Positional Encoding):为每个token添加位置信息
  • 输入到Encoder的向量 = token_embedding + positional_encoding
  1. 词嵌入(Token Embedding)的维度
    假设我们有一个批次(batch)包含 batch_size 个样本
    每个样本有 seq_len 个词
    词嵌入维度为 d_model
    词嵌入的形状是: (batch_size, seq_len, d_model)

  2. 位置编码(Positional Encoding)的维度
    位置编码的形状是: (max_seq_len, d_model)
    通常在实现时,我们会将其调整为 (1, max_seq_len, d_model) 以便广播

  3. 相加操作
    词嵌入: (batch_size, seq_len, d_model)
    位置编码: (1, seq_len, d_model) 或 (seq_len, d_model)
    相加后: (batch_size, seq_len, d_model)
    关键点:PyTorch会自动进行广播(broadcasting),将位置编码扩展到与词嵌入相同的形状,然后进行逐元素相加。

答疑

  1. 为什么单个token的位置编码是多维的?
    单个token的位置编码是多维的,因为它的维度与token嵌入的维度相同,每个维度都独立计算了位置信息。
    详细解释

  2. 为什么使用多维设计?

    1. 低维度(i小):使用较高的频率,变化更剧烈,适合区分相邻位置
    2. 高维度(i大):使用较低的频率,变化更平缓,适合区分远距离位置
  3. 为什么使用正弦和余弦交替?

    1. 位置编码可以表示相对位置关系
    2. 位置编码的每个维度可以保持一定的正交性
    3. 便于模型学习相对位置信息
http://www.jsqmd.com/news/444471/

相关文章:

  • 二分算法2-二分答案
  • 分治算法——求逆序对
  • word文档生成技术实现
  • C++游戏开发之旅 25
  • 使用vLLM部署Qwen/Qwen3.5-35B-A3B-FP8并且在DIFY中调用
  • ElasticSearch常见问题和注意事项
  • 一文搞懂LockSupport原理
  • Windows 安装 OpenClaw 踩坑全记录:Node、Git、CMake、VS Build Tools 一次解决
  • Flutter 三方库 preact_signals 的鸿蒙化适配指南 - 掌控极致信号响应、Signals 架构实战、鸿蒙级精密状态指控专家
  • 别只盯着模型参数了:聊聊多模态时代最容易被忽视的一件事——训练数据准备
  • 看懂“单词规律”的算法之美:为什么简单的模式匹配,其实很深
  • RAG 入门-LangChain 读取图片数据
  • 春节单位发的永辉超市卡如何回收? - 京顺回收
  • YOLO26改进66:全网首发--使用WFU改进特征融合模块
  • Kappa架构在电商大数据平台中的落地实践
  • AI+JavaWeb Vue Ajax
  • 详细介绍:数据结构之查找的方法
  • 2026年大连殡葬服务标杆机构最新推荐:大连众安诚信殡葬礼仪有限公司,一站式殡仪服务新标杆 - 海棠依旧大
  • 聚合支付系统设计方案
  • osi七层模型学习笔记
  • 2026年3月大连殡葬服务公司选择指南:殡葬一条龙、殡仪服务、殡葬用品、灵棚搭建、殡仪车出租相关公司 - 海棠依旧大
  • 保姆级VSCode入门指南,Python党直接抄作业
  • 二叉树的直径-leetcode
  • React Fibber架构设计理解
  • 2026年国内信号屏蔽仪品牌排名推荐,助您选择更具品质保障的产品 - 睿易优选
  • 嘎嘎降AI vs 学术猹 vs PaperYY降AI:同一篇论文三个结果 - 还在做实验的师兄
  • 博士论文降AI用什么工具?高要求场景下只推荐这2款 - 还在做实验的师兄
  • 论文降AI后查重率飙升怎么办?一招搞定两全其美 - 还在做实验的师兄
  • 【MySQL 数据库】MySQL 数据库核心概念详解:库、表、字段、主键与关系型模型一文读懂 - 指南
  • AI 模型服务化实战:FastAPI + vLLM 高性能部署指南