什么是Embedding

Embedding是将离散对象(如词、用户、商品)映射到连续向量空间的技术。它是现代机器学习和NLP的基石,让计算机能够理解事物之间的语义关系。

学习难度:入门·阅读时间:约10分钟

什么是Embedding

基本定义

Embedding是一种映射:

  • 将离散的对象转换为连续的向量
  • 每个对象对应一个低维实数向量
  • 向量之间的距离反映对象的相似度

简单例子

假设我们有一个词表:

"猫" → [0.2, -0.5, 0.8, ...]
"狗" → [0.25, -0.48, 0.75, ...]
"汽车" → [-0.7, 0.9, -0.3, ...]

"猫"和"狗"的向量相似,而与"汽车"的向量差异大。

维度

嵌入向量的维度通常是几十到几千:

  • Word2Vec:通常300维
  • BERT:768维或1024维
  • OpenAI Embedding:1536维

为什么需要Embedding

传统表示的问题

One-hot编码的局限:

  • 维度等于词汇表大小,通常很大
  • 所有词向量正交,无法表达相似性
  • 无法处理新词(OOV问题)
  • 稀疏表示,计算效率低

Embedding的优势

  • 低维稠密:维度固定,计算高效
  • 语义相似:相似对象有相似的向量
  • 可泛化:能处理未见过的对象
  • 可迁移:预训练嵌入可用于多种任务

比喻

Embedding就像是给每个对象一张"身份证":

  • 身份证号码包含了这个人的各种信息
  • 相似的人有相似的号码
  • 通过比较号码可以判断相似度

嵌入空间的性质

距离与相似度

向量之间的关系反映对象的关系:

  • 余弦相似度:向量夹角,常用于衡量语义相似度
  • 欧氏距离:向量之间的直线距离
  • 点积:两个向量的内积

线性关系

嵌入空间中存在有趣的线性关系:

vec("国王") - vec("男人") + vec("女人") ≈ vec("王后")

聚类结构

相似的对象在嵌入空间中形成聚类:

  • 动物词汇聚集在一起
  • 国家词汇聚集在一起
  • 动词聚集在一起

常见嵌入类型

按对象类型分类

词嵌入(Word Embedding)

将词语映射为向量,如Word2Vec、GloVe。

句嵌入(Sentence Embedding)

将句子或段落映射为向量,如Sentence-BERT。

用户/物品嵌入

用于推荐系统,表示用户偏好和物品特征。

图嵌入(Graph Embedding)

将图中的节点映射为向量。

按是否考虑上下文分类

  • 静态嵌入:每个词有固定的向量(Word2Vec、GloVe)
  • 上下文嵌入:同一个词在不同上下文中有不同向量(BERT)

如何学习嵌入

主要方法

  • 共现统计:GloVe,基于词共现矩阵
  • 预测任务:Word2Vec,预测上下文或目标词
  • 语言模型:BERT、GPT,预训练语言模型
  • 对比学习:SimCSE,通过对比学习句嵌入

端到端学习

嵌入层可以作为模型的一部分端到端训练:

  • 初始化随机嵌入或预训练嵌入
  • 随任务目标一起优化
  • 得到任务特定的嵌入表示

应用场景

NLP领域

  • 语义搜索:通过向量相似度检索相关文档
  • 文本分类:用嵌入向量作为特征
  • 机器翻译:跨语言语义对齐
  • 问答系统:匹配问题和答案

推荐系统

  • 用户和物品的嵌入表示
  • 相似物品推荐
  • 冷启动问题缓解

RAG系统

  • 文档嵌入存储到向量数据库
  • 查询嵌入检索相关文档
  • 为LLM提供上下文
----