嵌入基础

Embedding是将离散数据转换为连续向量表示的技术,是现代AI系统的基石。

共 3 篇文章·阅读时间:约25分钟

01什么是Embedding

Embedding是能将离散的符号信息(如文字、图片)转换为连续数值向量的技术。

Embedding的定义

在数学上,Embedding是一个从离散空间到连续向量空间的映射函数。 对于文本,这个过程将每个词或句子映射为一个固定长度的实数向量。

一个简单的例子

假设我们使用3维向量表示单词:
"男人" → [0.8, 0.2, 0.1]
"女人" → [0.7, 0.3, 0.2]
"国王" → [0.9, 0.1, 0.0]
"王后" → [0.8, 0.2, 0.1]

可以看出,"男人"和"国王"的向量相似,"女人"和"王后"的向量相似。 这体现了Embedding捕捉语义关系的能力。

核心特征

语义捕获

语义相似的对象在向量空间中距离更近。 "猫"和"狗"的距离比"猫"和"汽车"更近。

维度压缩

将高维稀疏数据(如one-hot编码)压缩为低维密集向量。 典型的embedding维度从数万压缩到256/512/768等。

可计算性

转换后的向量可以进行数学运算。 vec("国王") - vec("男人") + vec("女人") ≈ vec("王后")

02嵌入空间

嵌入空间是一个几何空间,向量之间的距离和方向蕴含着语义关系。

空间特性

  • 语义聚类:同义词或相关概念倾向于聚集在一起
  • 线性关系:词与词之间的语义关系可以表示为向量运算
  • 维度语义:不同的维度可能对应不同的语义特征
  • 各向异性:某些方向的语义信息更丰富

可视化理解

由于人类无法直接理解高维空间,通常使用降维技术(如t-SNE、UMAP)将向量投影到2D或3D空间进行可视化。

常见可视化发现

  • 同类词汇形成明显的聚类(如国家名、城市名)
  • 性别、时态等语法特征形成特定方向
  • 多义词在不同上下文中落在不同区域

03相似度计算

在向量空间中,通过计算向量之间的距离或夹角来衡量语义相似度。

余弦相似度

余弦相似度衡量两个向量方向的相似程度,取值范围为[-1, 1]。 值越接近1表示越相似,接近-1表示越相反。

公式

cosine(A, B) = (A · B) / (||A|| × ||B||)

其中 A·B 是向量点积,||A|| 和 ||B|| 是向量的模长。

Python实现

import numpy as np
from numpy.linalg import norm

def cosine_similarity(a, b):
    return np.dot(a, b) / (norm(a) * norm(b))

点积与欧氏距离

点积(Dot Product)

当向量已归一化时,点积与余弦相似度等价。
点积值越大,相似度越高。

dot(A, B) = Σ(Ai × Bi)

欧氏距离(L2距离)

衡量向量在空间中的绝对距离。
距离越小表示越相似。

euclidean(A, B) = ||A - B|| = sqrt(Σ(Ai - Bi)²)

选择建议

  • 余弦相似度:向量长度不重要,关注方向时使用
  • 点积:已归一化的向量,或需要快速计算时
  • 欧氏距离:需要考虑向量绝对位置时
----