从数据压缩到语义理解:什么是奇异值分解?

创建时间:2026-07-21 更新时间:2026-07-21 阅读次数:1007 次

我们生活在一个数据的时代。每当你拍下一张照片、在网上发表一段文字,或者收到一条购物推荐,背后都藏着海量的数字矩阵。如何从这些庞大的数字表格中,找到隐藏的结构、提炼出最重要的信息?一个诞生于一百多年前的数学工具——奇异值分解(Singular Value Decomposition,简称 SVD),至今仍然是最核心的方法之一。

一、矩阵:一个数字的矩形阵列

在理解 SVD 之前,我们先聊聊它操作的对象——矩阵。

一个矩阵,简单来说,就是把一堆数字按行和列排成的表格。比如,假设我们有 5 个用户对 4 部电影的打分(1 到 5 分),就可以用一个 $5 \times 4$ 的矩阵来表示:

$$ A = \begin{pmatrix} 5 & 3 & 0 & 1 \\ 4 & 0 & 0 & 1 \\ 1 & 1 & 0 & 5 \\ 1 & 0 & 0 & 4 \\ 0 & 1 & 5 & 4 \end{pmatrix} $$

这里,每一行对应一个用户,每一列对应一部电影。如果某个用户没看过某部电影,分数可能就记为 0。

我们面对这样一个矩阵时,心中会生出一个自然的愿望:能不能用更简洁的方式,概括这些数据的主要模式? 比如,能不能发现这 4 部电影其实只代表两三种“品味类型”?能不能把每个用户的偏好,压缩成几个关键的数字?

奇异值分解,就是回答这些问题的数学利器。

二、核心思想:把矩阵拆成三块积木

SVD 告诉我们:任何一个 $m \times n$ 的实数矩阵 $A$,都可以精确地拆解成三个矩阵的乘积

$$ A = U \Sigma V^T $$

这个等式就是奇异值分解的全部。它看起来简洁,但内涵极其丰富。我们来逐一认识这三块积木。

  • $U$ 是一个 $m \times m$ 的正交矩阵。它的每一列都是一个单位向量,并且所有列两两正交。可以理解为:$U$ 的列向量构成了 $m$ 维空间的一组新的标准正交基,它们代表了行空间中的某种“模式”。在我们的电影打分例子里,$U$ 的列可以看作“用户品味类型”的方向。

  • $V$ 是一个 $n \times n$ 的正交矩阵,同样,它的每一列也是单位向量且两两正交。$V$ 的列向量构成了 $n$ 维空间的一组标准正交基,它们代表了列空间中的某种“模式”。在我们的例子里,$V$ 的列可以看作“电影类型”的方向。注意公式里出现的是 $V^T$($V$ 的转置),因此 $V$ 的行向量也承担着重要角色。

  • $\Sigma$ 是一个 $m \times n$ 的对角矩阵(非对角线上的元素全为 0)。它的“对角线”上排列着一串非负的实数,从大到小排列:

$$\sigma_1 \ge \sigma_2 \ge \ldots \ge \sigma_r > 0$$

这些数叫做奇异值。奇异值的大小,直接衡量了对应的 $U$ 列向量与 $V$ 行向量所代表的那种模式,在原矩阵 $A$ 中到底有多重要。奇异值越大,那一对模式就越能刻画原始数据的核心结构。

如果我们把矩阵乘法展开,就能看到一个更直观的形态:

$$ A = \sigma_1 u_1 v_1^T + \sigma_2 u_2 v_2^T + \ldots + \sigma_r u_r v_r^T $$

这里,每一项 $\sigma_i u_i v_i^T$ 都是一个秩为 1 的矩阵,可以看作一层“信息”。$u_i$ 是一个 $m$ 维列向量,$v_i^T$ 是一个 $n$ 维行向量,它们的外积形成一个和 $A$ 同样大小的矩阵。SVD 把原始矩阵 $A$,表示成了许多个秩-1 矩阵的加权和,而权重就是奇异值。

三、几何视角:旋转变换的分解

我们还可以从几何变换的角度理解 SVD,这也许是它最优雅的视角。

任何一个矩阵 $A$ 作用在一个向量 $x$ 上,得到 $Ax$,可以看作是对 $x$ 做了一次线性变换:旋转、拉伸、反射等操作组合在一起。

SVD 公式 $A = U \Sigma V^T$ 把这个变换拆成了三步:

  • 1、$V^T$:旋转或反射

首先,$V^T$ 作用在 $x$ 上。因为 $V^T$ 是正交矩阵,它不改变向量的长度,只是在空间中旋转(或反射)这个向量,把它对准即将进行拉伸的方向。

  • 2、$\Sigma$:沿着坐标轴拉伸

接着,对角矩阵 $\Sigma$ 沿着各个坐标轴方向,用 $\sigma_1, \sigma_2, \ldots$ 对向量进行拉伸或压缩。某个方向可能被拉得很长(对应大奇异值),另一个方向可能被压得很短,甚至压缩为零(对应零奇异值)。

  • 3、$U$:再次旋转或反射

最后,正交矩阵 $U$ 再把拉伸后的向量旋转到最终的位置。

因此,任何一个线性变换,本质上都可以分解为“旋转—拉伸—旋转”这三个基本操作。这种分解把复杂的变换彻底梳理清楚,哪些方向被放大,哪些方向被缩小,一目了然。

四、降维与压缩:扔掉那些小的奇异值

SVD 的强大之处,不仅在于精确分解,更在于它能给出最优的低秩近似

现实数据往往存在大量冗余,或者夹杂着噪声。在 SVD 的和式里,排在前面的奇异值大,对应的成分贡献了矩阵的“主体结构”;排在后面的奇异值越来越小,往往对应着细节波动甚至噪声。

如果我们只保留前 $k$ 个最大的奇异值及其对应的向量,把其余部分全部舍弃,就得到一个秩为 $k$ 的近似矩阵:

$$ A_k = \sigma_1 u_1 v_1^T + \ldots + \sigma_k u_k v_k^T $$

可以证明,在所有秩为 $k$ 的矩阵中,这个 $A_k$ 是原矩阵 $A$ 在最小二乘意义下的最优近似。这个性质叫做Eckart–Young 定理

这意味着什么呢?我们来看几个生动的应用。

图像压缩
一张灰度照片可以用一个矩阵表示,每个元素是一个像素的亮度。对它做 SVD,只保留前几十个甚至十几个奇异值,就能重建出质量尚可的图像。原本可能需要上百万个数字来存储的照片,现在只需要存储 $U$、$\Sigma$、$V$ 的少量行和列,数据量大幅缩减。

推荐系统中的“潜在语义”
回到开头的电影评分矩阵。即便原始矩阵有很多缺失值(用户没打分),SVD 的思想依然能派上用场。我们假定评分背后隐藏着少数几个“品味因子”,比如动作片爱好者、文艺片爱好者、喜剧片爱好者等。每个用户可以由这些因子的权重刻画(对应 $U$ 的行),每部电影也可以由这些因子的含量刻画(对应 $V$ 的行)。而奇异值的大小反映了每个因子对整体评分数据的影响力。

通过对评分矩阵做矩阵分解(在实践中会使用针对缺失值优化的变体),就能同时学出用户的偏好向量和电影的特征向量。想要给某个用户推荐电影?只需计算他的偏好向量与所有电影特征向量的匹配度,挑出预测打分最高的几部即可。

自然语言处理中的潜在语义分析(LSA)
在文本处理中,我们可以构造“文档—词语”矩阵,每一行是一篇文章,每一列是一个单词,矩阵的值是单词在文档中出现的频次或权重。对这个矩阵做 SVD 并保留前 $k$ 维,就能把文档和词语都映射到同一个低维的“语义空间”中。在这个空间里,同义词或语义相近的文档会有相似的向量表示,哪怕它们共用很少的显式词汇。这就是潜在语义分析的基本思路。

主成分分析(PCA)与 SVD 的亲密关系
在统计学和机器学习中,主成分分析是降维的经典方法。实际上,对数据中心化(减去均值)后的矩阵进行 SVD,就等价于执行 PCA。右奇异向量 $V$ 的列就是主成分方向,奇异值的平方与每个主成分的方差成比例。SVD 提供的这条数值计算路径,既稳定又高效。

五、SVD 的灵魂:奇异向量与奇异值

从这些应用里,我们可以提炼出 SVD 带给我们的核心礼物:

  • 奇异向量($U$ 和 $V$ 的列)揭示了数据内部的结构方向。在推荐系统里,它们是“品味轴”;在文本分析里,它们是“语义轴”;在人脸识别里,它们是“特征脸”。
  • 奇异值 则量化了这些方向的重要性。大的奇异值对应数据的主要变化方向,微小的奇异值往往对应噪声。通过忽略小的奇异值,我们在保留本质特征的同时,抛弃了次要和干扰成分。

这种“抓住主要矛盾,忽略次要细节”的能力,让 SVD 成为纷繁数据中的一座灯塔。

六、SVD 不仅是一则定理,更是一种视角

奇异值分解诞生于 19 世纪的微分几何与线性代数研究,如今却在计算机科学的几乎每一个角落闪烁光芒。它告诉我们,再复杂的矩形数据阵,也可以被透彻地理解为一组基本模式的叠加。

下次当你收到一条精准的影片推荐,或者惊讶于一张压缩了几十倍却依然清晰的图片时,或许可以在心中默默感谢这个优美的数学事实:

$$A = U \Sigma V^T$$

一个简单的等式,却藏着拆解世界的无穷力量。

本教程共19节,当前为第11节!
本教程最新修订时间为:2026-07-22 00:39:56