1. AI中的向量是什么?

在人工智能(AI)领域,向量是表示数据的基本数学工具。它本质上是一个有序的数字列表,用于将现实世界中的对象(如单词、图片、用户)映射到一个多维的数学空间中。

1.1 向量的核心作用

  • 数值化表示:将非结构化的文本、图像、声音转换为计算机可以处理的数字形式。
  • 语义捕捉:在向量空间中,语义相近的对象(如“猫”和“狗”)距离更近。
  • 计算基础:支持相似度计算、分类、聚类等核心AI任务。

1.2 一个简单示例

在自然语言处理中,单词“国王”可能被表示为:

[0.12, -0.45, 0.78, 0.03, -0.91, ..., 0.67]  # 一个300维的向量

而“王后”的向量可能与之非常接近,体现了语义上的相似性。

2. 什么是密集向量?

密集向量是指向量中绝大多数元素都是非零值的向量。每个维度通常都承载着特定的、有意义的语义信息。

2.1 关键特征

  • 存储方式:使用数组或列表连续存储所有维度的值。
  • 信息密度高:几乎每个维度都对最终表示有贡献。
  • 适合深度学习:是现代神经网络(如Transformer)的标准输出格式。

2.2 典型应用

  1. 词嵌入:Word2Vec、GloVe、BERT生成的向量。
  2. 图像特征:卷积神经网络(CNN)从图片中提取的特征。
  3. 语音表征:音频信号经过模型处理后的编码。
  4. 推荐系统:用户和物品的嵌入向量。

2.3 代码示例

# 一个来自BERT模型的768维密集向量示例
dense_embedding = [
    0.12, -0.23, 0.45, 0.67, -0.89, 0.01,  # 前6个维度
    # ... 总共768个浮点数
]
# 计算两个密集向量的余弦相似度
similarity = np.dot(dense_embedding_A, dense_embedding_B) / (np.linalg.norm(dense_embedding_A) * np.linalg.norm(dense_embedding_B))

3. 什么是稀疏向量?

稀疏向量是指向量中大部分元素为零(或接近零)的向量。它通常用于表示高维空间中的对象,其中只有少数几个特征被激活。

3.1 关键特征

  • 存储方式:只存储非零元素的索引和值,极大节省空间。
  • 维度极高:常见于万维甚至百万维的特征空间。
  • 计算优化:专门的稀疏算法可以跳过零值,加速运算。

3.2 典型应用

  1. 文本表示:TF-IDF、词袋模型(每个单词是一个维度)。
  2. 推荐系统:用户-物品交互矩阵(用户可能只与极少物品交互)。
  3. 生物信息学:基因表达数据(大多数基因在特定样本中不表达)。
  4. 分类特征:经过One-Hot编码后的类别变量。

3.3 代码示例

# 一个10,000维的稀疏向量,表示一篇文档的TF-IDF特征
# 只有“人工智能”、“机器学习”、“算法”三个词有显著权重
sparse_tfidf = {
    124: 0.85,   # 索引124对应“人工智能”
    567: 0.72,   # 索引567对应“机器学习”
    892: 0.63    # 索引892对应“算法”
}
# 其他9,997个维度值均为0,无需存储

4. 密集向量 vs 稀疏向量:核心区别对比

对比维度 密集向量 稀疏向量
零值比例 很少(< 10%) 极多(> 90%)
典型维度 几十到几千维 几千到几百万维
存储开销 存储所有值,O(n) 只存非零值,O(k),k << n
语义解释 每个维度含义模糊(分布式表示) 每个维度含义明确(如一个单词)
计算方式 适合GPU并行矩阵运算 需要特殊的稀疏矩阵运算库
模型偏好 深度学习、神经网络 传统机器学习(如线性模型、SVM)
更新影响 局部更新影响整个向量表示 局部更新只影响少数维度

4.1 存储效率直观对比

假设一个 50,000维 的向量(例如,一个包含5万个单词的词袋模型):

  • 密集存储:需要保存 50,000 个浮点数 ≈ 400 KB 内存。
  • 稀疏存储:如果一篇文档只包含20个独特单词,只需保存 20 个(索引,值)对 ≈ 320 字节 内存。
  • 节省了超过 1000 倍的空间!

4.2 如何选择?

  • 选密集向量:当特征维度可控(<1000),且需要捕捉复杂的、非线性的语义关系时(如BERT词向量)。
  • 选稀疏向量:当特征维度爆炸性增长,且数据天然稀疏(如文本、推荐交互)时,优先考虑稀疏表示以节省资源。

5. 现代AI中的融合趋势

在实际的AI系统中,密集向量和稀疏向量经常结合使用,发挥各自优势:

5.1 混合检索系统(Hybrid Search)

# 1. 稀疏检索:基于关键词匹配(TF-IDF/BM25),保证召回率
sparse_score = bm25(query, document)

# 2. 密集检索:基于语义相似度(向量检索),保证准确性
dense_score = cosine_similarity(bert_embedding(query), bert_embedding(document))

# 3. 混合分数:加权结合两者优点
final_score = α * sparse_score + (1 - α) * dense_score

5.2 特征工程流水线

  1. 原始数据:高维稀疏特征(如用户历史点击的百万级物品ID)。
  2. 嵌入层:通过嵌入表将稀疏ID映射为低维密集向量(如128维)。
  3. 神经网络:密集向量输入深度模型进行训练和预测。

6. 总结

  • 向量是AI将现实世界数据“翻译”成机器语言的通用货币。
  • 密集向量紧凑、语义丰富,是深度学习的基石,适合表示融合后的复杂特征。
  • 稀疏向量高效、可解释,是处理高维、稀疏数据的利器,适合表示原始的、独立的特征。
  • 核心区别在于信息存储的密度和方式,从而导致了不同的计算、存储和应用范式。
  • 最佳实践是根据任务、数据和资源约束,灵活选择或组合两种表示方法。

理解这两种向量,是构建高效、可扩展AI系统的重要基础。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐