什么是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提供上下文