Skip to content
On this page

核心概念一句话总结

  • 稠密向量:向量中的大多数元素都不是零,包含了丰富、稠密的信息。
  • 稀疏向量:向量中的绝大多数元素都是零,只有少数几个位置有非零值。

1. 稠密向量

定义:稠密向量是指其元素中大部分(或者说相当一部分)都是非零值的向量。这些非零值通常是连续的实数(如0.8, -1.2, 0.05),承载着具体的、有意义的数值信息。

特点

  • 信息丰富:每个维度(或大部分维度)都对最终的表征有贡献。
  • 存储开销大:需要存储每一个元素的值,包括那些非常接近零但不为零的值。
  • 计算开销大:进行向量运算(如点积)时,需要对所有维度进行计算。
  • 语义连续:向量空间中的距离和方向有明确的数学和语义含义(例如,在词嵌入中,“国王” - “男人” + “女人” ≈ “女王”)。

举例说明

例子1:词嵌入

假设我们用稠密向量来表示单词,比如使用一个4维的向量。

  • “猫” = [0.8, -0.5, 1.2, 0.1]
  • “狗” = [0.7, -0.6, 1.1, 0.2]
  • “数学” = [-0.5, 0.9, -0.8, 0.5]

你可以看到,这些向量里几乎没有零。每个维度可能代表了某种潜在的语义特征(比如“宠物属性”、“科学属性”等,但这些特征是人类难以直接解释的)。通过计算向量之间的距离,我们可以知道“猫”和“狗”的语义更接近,而它们都与“数学”相差较远。

例子2:图像特征

一张小的2x2的灰度图片,每个像素点的值在0到255之间。

  • 图片 = [ [120, 45], [200, 30] ]
  • 将其展平为一个稠密向量:[120, 45, 200, 30]
  • 同样,所有元素都是非零的,包含了图像的全部信息。

2. 稀疏向量

定义:稀疏向量是指其中绝大多数元素都是零,只有极少部分元素为非零值的向量。非零值的数量被称为向量的“稀疏度”。

特点

  • 信息集中:信息只集中在少数几个特定的位置上。
  • 存储高效:可以使用特殊的数据结构(如“坐标列表COO”或“压缩稀疏行CSR”)只存储非零值的位置和数值,从而极大地节省内存。
  • 计算高效:在进行向量运算时,可以只对非零元素进行操作,忽略所有零值,从而加快计算速度。
  • 语义明确:每个维度通常对应一个非常具体的、可解释的特征(如一个特定的单词、一个特定的类别)。

举例说明

例子1:词袋模型中的文本表示

假设我们有一个包含所有词汇的词典: [“苹果”, “香蕉”, “汽车”, “电脑”, “喜欢”, “购买”] (词典大小为6)

现在,我们要用这个词典来表示下面这个句子:

  • 句子:“我喜欢苹果和香蕉”

我们创建一个长度为6的向量,每个位置对应词典中的一个词。如果句子中包含某个词,该位置就为1,否则为0。

  • 句子向量 = [1, 1, 0, 0, 1, 0]

这个向量中,只有3个位置是1(非零),其余3个位置都是0。这就是一个典型的稀疏向量。在实际应用中,词典可能有几万甚至几十万个词,而一个句子通常只包含几十个词,所以向量会变得极其稀疏(比如99.9%的元素都是0)。

例子2:用户行为记录

假设一个电商平台有100万种商品。我们要表示用户A的购买记录。

  • 用户A只购买了“商品ID:12345”和“商品ID:67890”。
  • 那么用户A的向量就是一个长度为1,000,000的向量。
  • 在第12345和67890的位置上,值是1(或者购买数量),在其他999,998个位置上的值都是0。
  • 这个向量是极度稀疏的。

对比总结

特征稠密向量稀疏向量
零值比例极高(通常超过95%-99%)
典型值连续的实数(如0.15, -0.72)通常是0、1或整数/浮点数
存储方式存储整个数组 [v1, v2, v3, ...]只存储非零值的(索引, 数值)对
计算效率需要对所有维度进行计算可优化,只计算非零维度
语义/特征潜在、抽象、难以解释明确、具体、可解释
典型应用词嵌入(Word2Vec, GloVe), 神经网络层输出词袋模型, One-hot编码, 推荐系统中的用户/物品向量

如何选择?

  • 当你的特征是类别型的(如单词、产品ID、用户ID),并且可能的值非常多时,通常会产生稀疏向量
  • 当你通过一个模型(如神经网络)学习到一个低维、连续的表示时,你得到的就是稠密向量。这种表示通常能捕捉到更复杂的关系和相似性。

希望这个解释和例子能帮助你彻底理解这两个概念!

技术文档集合