在 Transformer 架构中,Embedding(嵌入/向量化) 是将离散符号(Token)转化为连续、稠密、蕴含语义信息的向量表示的关键步骤。它不仅是模型理解语言的“词典”,更是构建高层次语义抽象的基石。本文基于视频内容,深入剖析 Transformer 中 Embedding 的原理、实现、优化及其深远影响。
一、Embedding 的本质:从离散符号到连续语义空间
-
核心问题:为什么需要 Embedding?
-
离散性的困境:Token 化后的文本是整数 ID 序列(如
[101, 2054, 2003, 1037, 2307, 102]
)。这些 ID 本身是离散、无序、无内在语义关联的(相邻 ID 不代表语义相似)。模型无法直接从中学习规律。 -
One-Hot 编码的局限:
-
每个 Token 用一个长度等于词汇表大小
|V|
的向量表示,仅在对应索引处为 1,其余为 0。 -
维度灾难:
|V|
通常巨大(数万至数十万),导致向量极其稀疏且高维。 -
语义隔离:任何两个词向量都是正交的,无法表达相似性(如 “猫” 和 “狗” 的相似度与 “猫” 和 “飞机” 一样为 0)。
-
-
-
Embedding 的解决方案:稠密语义向量
-
核心思想:为词汇表中的每个 Token 学习一个固定长度的稠密实数向量(如 768 维)。这个向量不再是稀疏的 0/1,而是每个维度都包含有意义的小数。
-
关键特性:
-
低维稠密:维度
d_model
(如 128, 256, 768, 1024) 远小于|V|
,向量元素大部分非零。 -
语义编码:向量空间中的几何关系(距离、方向)编码了语义和语法关系:
-
相似性:语义相近的词(如 “猫”/“狗”、“高兴”/“快乐”)向量距离较近(余弦相似度高)。
-
类比性:
vec(王) - vec(男人) + vec(女人) ≈ vec(王后)
。 -
语法特性:动词时态(“walk”/“walked”/“walking”)、单复数、词性等模式可被向量运算捕捉。
-
-
可学习性:这些向量是模型参数的一部分,在训练过程中通过反向传播和梯度下降从海量数据中自动学习其数值,以最优地表征语义服务于下游任务。
-
-
二、Embedding 层的实现机制
-
核心操作:查表 (Lookup Table)
-
Embedding 矩阵 (
W_embed
): 这是一个形状为[|V|, d_model]
的可学习参数矩阵。-
行数
|V|
:词汇表大小,每一行对应一个 Token 的嵌入向量。 -
列数
d_model
:嵌入向量的维度(也是 Transformer 模型的主维度)。
-
-
前向传播过程:
-
输入:一个批次的 Token ID 序列 (形状
[batch_size, seq_len]
)。 -
操作:对于序列中的每个 Token ID
i
,从W_embed
中取出第i
行向量。 -
输出:一个形状为
[batch_size, seq_len, d_model]
的 3D 张量。这就是 Transformer 编码器/解码的真正输入。
-
-
-
数学表示:
-
设输入序列为
X = [x_1, x_2, ..., x_L]
,其中x_t
是第t
个位置的 Token ID。 -
则其对应的词嵌入向量为:
E_word = [W_embed[x_1], W_embed[x_2], ..., W_embed[x_L]]
。 -
E_word
的形状为[L, d_model]
(忽略 batch 维度)。
-
-
关键点:
-
参数共享:同一个 Token 在任何位置、任何句子中都被映射到同一个向量(初始时),其语义会通过后续网络层在不同上下文中动态调整。
-
初始化:通常使用较小的随机值初始化(如从均值为 0,标准差为 0.02 的正态分布采样)。
-
可训练性:
W_embed
是模型参数的一部分,会随着训练过程不断更新优化。
-
三、Transformer 中的核心 Embedding 类型
Transformer 的输入 Embedding 通常是三种嵌入向量的叠加:
-
词嵌入 (Token Embeddings / Word Embeddings)
-
功能:捕获 Token 本身的核心语义。
-
实现:如上所述,通过
W_embed
查找表实现。 -
示例:
"apple"
的向量应包含“水果”、“公司”、“电子产品”等潜在语义信息。
-
-
位置嵌入 (Positional Embeddings)
-
核心问题:Transformer 的自注意力机制本质上是置换不变 (Permutation Invariant) 的。它能看到序列中所有 Token 的关系,但天然地丢失了顺序信息。然而,语言是时序依赖的(“猫追老鼠” ≠ “老鼠追猫”)。
-
解决方案:向模型显式注入 Token 在序列中的绝对位置或相对位置信息。
-
主要方法:
-
绝对位置编码 (Absolute Positional Encoding - APE) - 原始 Transformer 方案:
-
公式 (正弦/余弦函数):
PE(pos, 2i) = sin(pos / 10000^(2i / d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
-
pos
:Token 在序列中的位置(0, 1, 2, ..., L-1)。 -
i
:向量维度的索引(0, 1, ..., d_model/2 - 1)。
-
-
特性:
-
确定性:无需学习,预先计算好一个位置矩阵
[max_len, d_model]
。 -
可外推:理论上可表示任意长的位置(虽然实际效果随长度衰减)。
-
蕴含相对位置:位置
pos + k
的编码可以表示为位置pos
编码的线性变换(证明其能捕获相对距离)。 -
奇偶维度交替使用 sin/cos:确保每个位置编码是唯一的,且在不同维度上编码不同频率的信息。
-
-
实现:对于长度为
L
的序列,生成一个形状[L, d_model]
的位置编码矩阵E_pos
,直接加到词嵌入E_word
上。
-
-
可学习的位置嵌入 (Learned Positional Embeddings) - BERT 等常用:
-
原理:将位置索引(0, 1, ..., max_len-1)也视为一种特殊的 “Token”,为其创建一个单独的嵌入矩阵
W_pos
(形状[max_len, d_model]
)。 -
操作:根据位置索引
pos
,从W_pos
中查找对应的位置向量W_pos[pos]
,加到词嵌入上。 -
优缺点:
-
优点:更灵活,可能学到更复杂的、任务特定的位置模式。
-
缺点:只能处理预定义的最大长度
max_len
,无法外推;增加了少量参数。
-
-
-
相对位置编码 (Relative Positional Encoding - RPE) - 如 T5, DeBERTa:
-
核心思想:不关注 Token 的绝对位置
pos
,而是关注 Token 对(i, j)
之间的相对距离i - j
(或j - i
)。 -
实现方式多样:
-
将相对位置信息融入自注意力分数的计算中(修改
Q*K^T
项)。 -
学习相对距离
k = i - j
的嵌入向量a_{k}
(或a_{k}^K
,a_{k}^V
),在计算 Key/Value 或注意力权重时加入。
-
-
优势:对处理长序列、泛化到未见过的序列长度更友好;更符合自注意力关注关系的本质。
-
-
旋转位置嵌入 (Rotary Position Embedding - RoPE) - 如 GPT-J, LLaMA, GLM:
-
创新点:将绝对位置信息通过旋转矩阵融入到 Query 和 Key 向量中。
-
公式:对位置
m
的 Token 的 Queryq_m
和 Keyk_n
进行旋转变换:q̃_m = R_Θ^m * q_m k̃_n = R_Θ^n * k_n
其中
R_Θ^m
是一个由位置m
和预设旋转角度Θ
决定的旋转矩阵。 -
特点:显式引入位置信息,同时保持相对位置内积只依赖于相对距离
m-n
的良好性质;在长文本任务中表现很好。
-
-
ALiBi (Attention with Linear Biases) - 如 BLOOM:
-
思想:不修改 Q/K/V 向量,直接在计算注意力分数
softmax(Q*K^T / √d_k)
后,给距离远的 Token 对添加一个负的线性偏置 (penalty):softmax(Q*K^T / √d_k + m * (i - j))
,其中m
是预设的斜率,(i - j)
是相对距离(i > j
)。距离越远,惩罚越大,注意力越弱。 -
优势:简单高效,外推能力,能处理远超训练长度的序列。
-
-
-
-
段嵌入 (Segment Embeddings / Token Type Embeddings)
-
适用场景:处理成对输入的任务(如句子对分类:NLI、问答;掩码语言模型:下一句预测)。
-
功能:区分序列中属于不同句子/片段的 Token。
-
实现:
-
定义少量段类型(通常是
0
和1
,分别代表第一句和第二句)。 -
创建一个小的嵌入矩阵
W_seg
(形状[num_seg_types, d_model]
,通常num_seg_types=2
)。 -
为输入序列中的每个 Token 生成一个段类型 ID 序列(如
[0,0,0, ..., 1,1,1]
)。 -
根据段类型 ID 查找对应的段嵌入向量
E_seg
(形状[seq_len, d_model]
)。
-
-
示例 (BERT):
[CLS] I love NLP [SEP] It is fascinating [SEP] Token: CLS I love NLP SEP It is fasc... SEP Seg ID: 0 0 0 0 0 1 1 1 1
-
输入整合:最终输入 Transformer 的嵌入是三者之和:
E = E_word + E_pos + E_seg
-
形状均为
[batch_size, seq_len, d_model]
,直接相加。
-
-
四、Embedding 层的后续处理
-
层归一化 (Layer Normalization - LayerNorm):
-
位置:通常在 Embedding 层之后、进入第一个 Transformer 编码层之前应用。
-
目的:
-
稳定训练:抵消 Embedding 求和可能带来的数值范围变化。
-
加速收敛:对每个 Token 的
d_model
维向量进行归一化(减均值,除以标准差,再缩放和移动),使其落入一个相对稳定的数值范围。
-
-
公式:
y = γ * (x - μ) / √(σ² + ε) + β
-
x
:Token 向量 (形状[d_model]
)。 -
μ, σ
:该 Token 向量在所有d_model
个维度上的均值和标准差。 -
γ, β
:可学习的缩放和偏移参数(形状[d_model]
)。 -
ε
:防止除零的小常数。
-
-
-
Dropout:
-
位置:常应用于 Embedding 输出
E
和 LayerNorm 之后。 -
目的:一种好的正则化技术,在训练过程中随机将一部分神经元输出置零(比例由
dropout_rate
控制,如 0.1),防止模型对特定 Embedding 特征过度依赖,提升泛化能力。
-
五、Embedding 的高级特性与影响
-
参数共享:
-
编码器-解码共享:在一些 Seq2Seq Transformer(如 T5、BART)中,编码器和解码可能共享同一个 Embedding 矩阵 (
W_embed
) 和 Softmax 前的投影矩阵。这显著减少了参数量,并迫使模型学习更通用的表示。 -
跨层共享?:通常不共享,每层有自己的参数。
-
-
跨语言 Embedding (Cross-lingual Embeddings):
-
目标:让不同语言的词在同一个向量空间中对齐。
-
方法:
-
共享词汇表与 Embedding 矩阵:如多语言 BERT (mBERT)、XLM-R。使用 SentencePiece/BBPE 在混合多语料上构建共享词汇表,所有语言共享同一个
W_embed
。模型隐式语言间的对应关系(如 “dog” 和 “perro” 向量接近)。 -
映射 (Mapping):先训练单语 Embedding(如 Word2Vec),再学习一个线性变换矩阵
W
,将一种语言的 Embedding 空间映射到另一种(如W * vec_en(“king”) ≈ vec_es(“rey”)
)。
-
-
-
Embedding 可视化与分析:
-
降维技术:使用 t-SNE、PCA 将高维 Embedding 降至 2D/3D 进行可视化,观察词簇、语义/语法规律。
-
探针任务 (Probing Tasks):设计简单分类器,测试 Embedding 中是否编码了特定语言属性(如词性、句法树深度、语义)。
-
-
对模型能力的影响:
-
语义表示基础:Embedding 的质量直接决定了模型理解词汇语义的起点。好的 Embedding 能极大加速模型学习复杂语义关系。
-
OOV 处理:子词 Token 化结合 Embedding 允许模型为未知词组合出合理的向量表示(基于其子词 Embedding)。
-
信息瓶颈?:
d_model
的维度限制了 Embedding 层能携带的信息量。更大的d_model
通常能容纳更丰富的语义,但也增加计算量和过拟合风险。 -
偏见来源:Embedding 向量从训练数据中学习,会继承数据中的社会文化偏见(如性别、种族刻板印象)。缓解偏见是重要研究方向。
-
六、总结与前瞻
Embedding 向量化绝非简单的查表操作。它是 Transformer 将离散符号世界与连续语义空间相连接的魔法桥梁。通过融合词嵌入、位置嵌入(及其各种变体如 APE、RoPE、ALiBi)和段嵌入,Transformer 获得了理解语言序列的结构化、语义化、位置感知的起点。
词嵌入承zai核心语义,位置嵌入赋予序列灵魂,段嵌入厘清结构边界。LayerNorm 和 Dropout 则确保了这一输入的稳定性和泛化性。参数共享、跨语言对齐、可视化分析等高级特性,进一步展现了 Embedding 层的厉害和灵活。
理解 Embedding 技术,是解锁 Transformer 理解语言奥秘的第一把钥匙。随着模型向更大规模、更长上下文、多模态(文本+图像/音频/视频)、更高效架构(如稀疏注意力、混合专家)发展,Embedding 技术也在持续演进:
-
动态/上下文感知 Embedding:Embedding 本身可能不再是静态查找,而是受上下文影响(如 DeepSeek-V2 的 Multi-Head Latent Embeddings)。
-
更优的位置表示:针对超长文本(100K+ tokens)的新型位置编码(如 NTK-aware 插值、YaRN)是研究热点。
-
多模态统一 Embedding:将文本、图像、语音等不同模态映射到同一语义空间是通用人工智能(AGI)的关键挑战。