词元ID是如何转为嵌入向量? 位置嵌入的作用是什么?

一、 词元 ID 是如何转为嵌入向量的?

比如"I love AI",在经过 BPE 等分词算法,先分词成 ["I", "love", "AI"],,再变成一串数字(Token IDs)变成了 [12, 532, 981]。这是一个查词汇表的过程,这张词汇表定义了如何将每个唯一的单词和特殊字符映射到一个唯一的整数。但这只是离散的数字,神经网络无法直接处理它们,也无法理解 12532 之间的语义关系。

将它们转化为嵌入向量(Embedding Vectors),实际上是一个查字典(Lookup Table) 的过程:

  1. 词嵌入矩阵(Embedding Matrix)
    模型在内部维护着一个巨大的表格(矩阵)。这个表格的行数 等于词表的大小(Vocabulary Size,比如 10,000),列数等于嵌入向量的维度(Embedding Dimension,比如4维, 实际是 768 / 4096 等)。

假设词嵌入矩阵为:

复制代码
token_id    embedding vector
0        [0.2, 0.1, 0.9, 0.3]
1        [0.8, 0.5, 0.1, 0.4]
2        [0.3, 0.7, 0.6, 0.2]
...
12       [0.9, 0.1, 0.3, 0.8]
...
532      [0.4, 0.2, 0.7, 0.1]
...
981      [0.6, 0.3, 0.5, 0.9]
  1. 索引查找(Index Lookup)
    当模型接收到一个 Token ID(例如 12)时,它会直接去这个矩阵中提取第 12 行 的那一整排数据。
    • 输入:12 (整数)
    • 输出: [0.9, 0.1, 0.3, 0.8]

通过token iDs为 [12, 532, 981] 直接查表,得到下面嵌入向量:

复制代码
[0.9, 0.1, 0.3, 0.8]   ← I
[0.4, 0.2, 0.7, 0.1]   ← love
[0.6, 0.3, 0.5, 0.9]   ← AI
  1. 数学本质
    在底层数学运算中,这等价于将一个 One-hot 向量(只有一个位置是 1,其余全为 0,长度为 10000 的向量)
    这个过程的意义:
    这些浮点数向量并不是随机的。在模型预训练的过程中,这个矩阵会被不断更新。最终,语义相近的词汇(如"猫"和"狗"),它们对应的向量在多维空间中的距离会非常接近。这样,离散的数字就变成了蕴含丰富语义的连续数学表达。

二、 位置嵌入(Positional Embedding)的作用是什么?

如果你了解过传统的循环神经网络(RNN/LSTM),它们是按照顺序一个词一个词读取的,所以天生就知道词的先后顺序。

但是,现代大模型基于 Transformer 架构 ,它的核心"自注意力机制(Self-Attention)"是并行处理所有词元的。也就是说,它是一次性把一句话里的所有词一起吞进去计算的。

这就带来了一个致命问题: 对于原始的 Transformer 来说,如果没有位置信息,"I love AI" 和 "AI love I" 对它来说是完全一模一样的输入!因为词元集合相同,它失去了对语序的感知能力

位置嵌入(Positional Embedding)的作用就是为了解决这个问题:它告诉模型每个词在句子中的确切位置。

具体是如何运作的?

  1. 生成位置向量:模型会为句子中的每一个位置(第 1 个词、第 2 个词、第 3 个词......)生成一个特定规则的"位置向量"。这个向量的维度和之前的词嵌入向量维度一模一样(比如都是 4096 维)。
  2. 两者相加 :将前面查字典得到的词嵌入向量 与对应的位置嵌入向量 进行元素级别的相加(Add)
    • 最终向量= 词义信息(Token Embedding) + 位置信息(Positional Embedding)

比如:

词嵌入向量:

复制代码
I     [0.9, 0.1, 0.3, 0.8]
love  [0.4, 0.2, 0.7, 0.1]
AI    [0.6, 0.3, 0.5, 0.9]

位置嵌入向量:

复制代码
pos0  [0.1, 0.0, 0.2, 0.0]
pos1  [0.0, 0.3, 0.1, 0.2]
pos2  [0.2, 0.1, 0.0, 0.1]

两者相加:

复制代码
I     [1.0, 0.1, 0.5, 0.8]
love  [0.4, 0.5, 0.8, 0.3]
AI    [0.8, 0.4, 0.5, 1.0]
  1. 传递给模型:相加后的新向量不仅包含了"这个词是什么意思",还包含了"这个词在句子中的哪个位置",然后才送入后续的网络层进行处理。

常见的位置编码方式:

  • 绝对位置编码(Absolute PE):早期 Transformer 使用正弦和余弦函数(Sinusoidal)的数学公式硬编码生成,或者像词嵌入一样让模型自己学习每个位置的向量(GPT-2/3 的做法)。
  • 相对位置编码(Relative PE) :现在最流行的大模型(如 LLaMA、Qwen 等)更倾向于使用 RoPE(旋转位置编码,Rotary Position Embedding) 或 ALiBi。这类方法不关注词的"绝对位置是第几个",而是关注两个词之间的"相对距离有多远",这大大增强了模型处理长文本和泛化的能力。
相关推荐
AI周红伟4 小时前
OpenClaw是什么?OpenClaw能做什么?OpenClaw详细介绍及保姆级部署教程-周红伟
大数据·运维·服务器·人工智能·微信·openclaw
Alvin千里无风4 小时前
在 Ubuntu 上从源码安装 Nanobot:轻量级 AI 助手完整指南
linux·人工智能·ubuntu
环黄金线HHJX.4 小时前
龙虾钳足启发的AI集群语言交互新范式
开发语言·人工智能·算法·编辑器·交互
Omics Pro4 小时前
虚拟细胞:开启HIV/AIDS治疗新纪元的关键?
大数据·数据库·人工智能·深度学习·算法·机器学习·计算机视觉
悦来客栈的老板5 小时前
AI逆向|猿人学逆向反混淆练习平台第七题加密分析
人工智能
KOYUELEC光与电子努力加油5 小时前
JAE日本航空端子推出支持自走式机器人的自主充电功能浮动式连接器“DW15系列“方案与应用
服务器·人工智能·机器人·无人机
萤火阳光5 小时前
13|自定义 Skill 创作:打造专属自动化利器
人工智能
我哪会这个啊5 小时前
SpringAlibaba Ai基础入门
人工智能
tianbaolc6 小时前
Claude Code 源码剖析 模块一 · 第六节:autoDream 自动记忆整合
人工智能·ai·架构·claude code