Embedding(嵌入/向量化)

将离散的符号(如单词、token)映射为连续的高维向量的技术。嵌入向量捕捉语义关系——含义相近的词在向量空间中距离更近。是所有神经网络处理文本的第一步。

Embedding(嵌入/向量化)

一句话理解

Embedding 就是给每个 token 分配一个高维数字向量,让计算机能用数学运算处理原本离散的文字符号。

为什么需要 Embedding

神经网络只能处理数字,不能直接处理"猫"、"狗"这样的文字。最简单的方法是 one-hot 编码——词表有 5 万个词,就用一个 5 万维的向量,只有对应位置是 1,其余全是 0。

问题是:

  • 维度爆炸:词表越大向量越长,极其浪费
  • 没有语义信息:"猫"和"狗"的 one-hot 向量之间的距离,跟"猫"和"飞机"完全一样——无法表达"猫和狗都是动物"这种语义关系

Embedding 的解法:用一个可学习的查找表,把每个 token 映射到一个低维稠密向量(如 768 维)。训练过程中,语义相近的词会自动聚到向量空间中相近的位置。

在 Transformer 中的位置

Embedding 是 Transformer 数据流的第一步

Input=TokenEmbedding(x)+PositionalEncoding\text{Input} = \text{TokenEmbedding}(x) + \text{PositionalEncoding}Input=TokenEmbedding(x)+PositionalEncoding
  1. 文本经过 Tokenization 变成 token ID 序列
  2. 每个 ID 通过 Embedding 层查表得到向量
  3. 加上位置编码后送入注意力层

直觉类比

类似于字典查询:给定一个"词条名",查表得到一组描述该词条含义的"属性值"。只不过这里的属性值是一组数字向量,且这张字典是模型在训练中自动学出来的。

关键特性

  • 维度固定:不管词表多大,每个 token 的嵌入向量维度相同(如 768、1024、4096)
  • 可学习:嵌入向量在训练过程中不断更新,最终自动编码语义关系
  • 预训练价值:Word2Vec、GloVe 等早期工作证明,好的词嵌入本身就蕴含丰富的语言知识(如 "国王" - "男人" + "女人" ≈ "女王")

引用本术语的文章