Day 7: 矩阵的基因 —— 奇异值分解 (SVD)

图解:SVD 把复杂的矩阵运算拆成了最简单的三步:转一下,拉一下,再转一下。 ◎ 图解:SVD 把复杂的矩阵运算拆成了最简单的三步:转一下,拉一下,再转一下。

引言

还记得之前聊的 特征值分解 ($\mathbf{A} = \mathbf{P}\boldsymbol{\Lambda}\mathbf{P}^{-1}$) 吗?它确实很美,能抓出矩阵的“固有频率”。但说实话,这东西太挑食了

首先,它非得是方阵 ($n \times n$) 不可;其次,就算你是方阵,要是运气不好撞上个亏损矩阵,它还罢工(不可对角化)。

但在现实世界里,我们处理的数据大都不是方方正正的。比如一个电商平台,有 $m$ 个用户,$n$ 个商品,这构成的评分矩阵通常是个“大长条”或者“大扁片”。这时候,特征值分解就彻底废了。

我们需要一把万能钥匙,不管矩阵长什么样,胖的瘦的、满秩的亏秩的,统统能拆解。这就是 奇异值分解 (SVD)

如果说特征值分解是在找共鸣,那 SVD 就是暴力拆解——它能把任何一团乱麻的数据,强行拆成最纯粹的几个动作。


几何直觉:把圆捏成椭圆

我们在 Day 2 提过,矩阵 $\mathbf{A}$ 本质上就是一种运动(线性变换)。 试想一下,你在纸上画个单位圆,然后用矩阵 $\mathbf{A}$ 去“揉捏”这个圆,它最后会变成啥? 答案是:一个椭圆(或者超椭圆)

SVD 的几何道理,说白了就这一句话:

不管矩阵 $\mathbf{A}$ 多复杂,我们总能找到一组正交的坐标轴,让它们在经过变换后,依然保持正交。

这个过程,其实就是三步走的“广播体操”:

  1. 旋转 ($\mathbf{V}^\mathsf{T}$):先把坐标系转个角度,对准要拉伸的方向。
  2. 拉伸 ($\boldsymbol{\Sigma}$):沿着坐标轴用力拉。有的方向拉长了,有的压扁了。这些拉伸的倍数,就是奇异值
  3. 旋转 ($\mathbf{U}$):拉完之后,这坨东西可能还是斜的,再转一下,把它摆正。

翻译成数学语言,就是大名鼎鼎的 SVD 公式: $$\mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^\mathsf{T}$$

这里面的门道是:

  • $\mathbf{V}$:输入空间里的正交基(右奇异向量)。
  • $\mathbf{U}$:输出空间里的正交基(左奇异向量)。
  • $\boldsymbol{\Sigma}$:对角阵,里面的 $\sigma_i \ge 0$ 就是奇异值(拉伸力度)。

深度解析:解剖矩阵的四个子空间

SVD 最牛的地方,在于它像一把精细的手术刀,把矩阵的四个基本子空间切得明明白白。

假设 $\mathbf{A}$ 是个 $m \times n$ 的矩阵,秩为 $r$。分解开来看长这样: $$\mathbf{A} = \begin{pmatrix} \vdots & & \vdots \\ \boldsymbol{u}_1 & \cdots & \boldsymbol{u}_m \\ \vdots & & \vdots \end{pmatrix} \begin{pmatrix} \sigma_1 & & \\ & \ddots & \\ & & \sigma_n \end{pmatrix} \begin{pmatrix} \cdots & \boldsymbol{v}_1^\mathsf{T} & \cdots \\ & \vdots & \\ \cdots & \boldsymbol{v}_n^\mathsf{T} & \cdots \end{pmatrix}$$

1. 谁是有用信息?(Row Space & Null Space)

奇异值 $\sigma$ 是按大小排队的:$\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_r > 0$。至于剩下的 $\sigma_{r+1} \dots$,全是 0。

  • 有用信号:非零奇异值对应的 $\boldsymbol{v}_1, \dots, \boldsymbol{v}_r$,构成了 $\mathbf{A}$ 的行空间
  • 垃圾桶:奇异值为 0 对应的那些 $\boldsymbol{v}$,构成了零空间。这些方向的输入进去也是白搭,直接被矩阵“吃”成了 $\boldsymbol{0}$。

2. 变换后去了哪?(Column Space)

  • 变换之后,$\mathbf{A}\boldsymbol{v}_i = \sigma_i \boldsymbol{u}_i$。
  • 前 $r$ 个 $\boldsymbol{u}_1, \dots, \boldsymbol{u}_r$ 就是 $\mathbf{A}$ 的列空间(值域)。这就是矩阵 $\mathbf{A}$ 能力所能触达的边界。

3. 到底怎么算?(Connection to Eigenvalues)

你可能纳闷:$\mathbf{U}$ 和 $\mathbf{V}$ 怎么求?难道靠猜? 这里有个取巧的办法。虽然 $\mathbf{A}$ 可能是个长方形,但 $\mathbf{A}^\mathsf{T}\mathbf{A}$ 可是个实打实的 $n \times n$ 对称正定矩阵

咱们推导一下: $$\mathbf{A}^\mathsf{T}\mathbf{A} = (\mathbf{V} \boldsymbol{\Sigma}^\mathsf{T} \mathbf{U}^\mathsf{T}) (\mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^\mathsf{T}) = \mathbf{V} (\boldsymbol{\Sigma}^\mathsf{T}\boldsymbol{\Sigma}) \mathbf{V}^\mathsf{T} = \mathbf{V} \boldsymbol{\Sigma}^2 \mathbf{V}^{-1}$$

  • 真相:算出 $\mathbf{A}^\mathsf{T}\mathbf{A}$ 的特征向量,你就得到了 $\mathbf{V}$。
  • 数值:$\mathbf{A}^\mathsf{T}\mathbf{A}$ 特征值的平方根,就是奇异值 $\sigma_i$。

示例与应用:低秩近似 (Low Rank Approximation)

SVD 最性感的应用其实是压缩。 你可以把矩阵 $\mathbf{A}$ 拆成一堆“秩-1 矩阵”的叠加: $$\mathbf{A} = \sigma_1 \boldsymbol{u}_1 \boldsymbol{v}_1^\mathsf{T} + \sigma_2 \boldsymbol{u}_2 \boldsymbol{v}_2^\mathsf{T} + \dots + \sigma_r \boldsymbol{u}_r \boldsymbol{v}_r^\mathsf{T}$$

注意到 $\sigma$ 是从大到小排的吗?如果 $\sigma_1$ 很大,而 $\sigma_{100}$ 很小,那后面那些项跟噪音没啥区别,直接扔掉

这就是图像压缩PCA 降维推荐系统的核心逻辑:只留主干,砍掉细枝末节。


✍️ 课后实战:SVD 手算指南

  1. (基础计算) 给个简单的矩阵 $\mathbf{A} = \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}$,求它的 SVD 分解。
🔐 点击查看解析 / Click to Reveal

【思路】 手算 SVD 就一招:先算 $\mathbf{A}^\mathsf{T}\mathbf{A}$ 的特征系,搞定 $\mathbf{V}$,剩下的 $\mathbf{U}$ 顺藤摸瓜就行。

【解】 第一步:搞定 $\mathbf{V}$ $$\mathbf{A}^\mathsf{T}\mathbf{A} = \begin{pmatrix} 1 & 0 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}$$ 算特征值(口算级):$|\lambda \mathbf{I} - \mathbf{A}^\mathsf{T}\mathbf{A}| = \lambda(\lambda-2) = 0$。

  • $\lambda_1 = 2 \implies \sigma_1 = \sqrt{2}$
  • $\lambda_2 = 0 \implies \sigma_2 = 0$ 对应的单位特征向量(这就是 $\mathbf{V}$):
  • $\lambda_1=2$ 对应 $\boldsymbol{v}_1 = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix}$
  • $\lambda_2=0$ 对应 $\boldsymbol{v}_2 = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ -1 \end{pmatrix}$ 所以: $$\mathbf{V} = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}$$

第二步:搞定 $\mathbf{U}$ 利用公式 $\mathbf{A}\boldsymbol{v}_i = \sigma_i \boldsymbol{u}_i$: $$\boldsymbol{u}_1 = \frac{1}{\sigma_1}\mathbf{A}\boldsymbol{v}_1 = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix} \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$$ 那个 $\sigma_2=0$ 的怎么办?没法除。直接找一个跟 $\boldsymbol{u}_1$ 正交的单位向量就行。 一眼看出 $\boldsymbol{u}_2 = \begin{pmatrix} 0 \\ 1 \end{pmatrix}$。 所以: $$\mathbf{U} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$$

最终答案: $$\mathbf{A} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} \sqrt{2} & 0 \\ 0 & 0 \end{pmatrix} \begin{pmatrix} 1/\sqrt{2} & 1/\sqrt{2} \\ 1/\sqrt{2} & -1/\sqrt{2} \end{pmatrix}$$

  1. (正规矩阵与谱定理) 证明:矩阵 $\mathbf{A}$ 是正规矩阵(即 $\mathbf{A}\mathbf{A}^* = \mathbf{A}^*\mathbf{A}$) $\iff$ $\mathbf{A}$ 可以被酉对角化。
🔐 点击查看解析 / Click to Reveal

【注】 这题是线性代数里的谱定理 (Spectral Theorem)。它解释了为啥实对称矩阵一定能对角化——因为它只是正规矩阵的一个特例而已。

【证】 ($\Leftarrow$) 这一头很好证: 如果 $\mathbf{A}$ 能被酉对角化,那 $\mathbf{A} = \mathbf{U}\boldsymbol{\Lambda}\mathbf{U}^$。 直接算 $\mathbf{A}\mathbf{A}^$ 和 $\mathbf{A}^*\mathbf{A}$,中间都会变成 $\boldsymbol{\Lambda}\bar{\boldsymbol{\Lambda}}$。因为对角阵乘法是可以交换的,所以两边相等。

($\Rightarrow$) 这一头有点绕: 如果 $\mathbf{A}$ 是正规矩阵。 先搬出舒尔引理 (Schur's Lemma):任何方阵都能搞成上三角矩阵 $\mathbf{T}$,即 $\mathbf{A} = \mathbf{U}\mathbf{T}\mathbf{U}^$。 因为 $\mathbf{A}$ 正规,所以 $\mathbf{T}$ 也得正规($\mathbf{T}\mathbf{T}^ = \mathbf{T}^\mathbf{T}$)。 关键来了:一个上三角矩阵如果是正规的,它只能是对角矩阵。 (你不信的话,去比一下 $\mathbf{T}\mathbf{T}^$ 和 $\mathbf{T}^*\mathbf{T}$ 的第一个对角元 $t_{11}$,你会发现非对角元素必须全是 0)。 既然 $\mathbf{T}$ 是对角阵,那就证完了。


🏁 终章:从直觉到自由

到这里,咱们的线性代数重构计划(Day 1 - Day 7)就彻底完结了。

线性代数从来不是那个由 $a_{ij}$ 堆出来的冰冷方阵,它是一门描述变换的语言,是通往高维世界的地图。

正如《黑客帝国》里的代码雨,当你真正看懂了线性代数,你眼里的世界不再是数字,而是结构

感谢你的陪伴。未来的数学海洋,祝你见招拆招,游刃有余。


线性代数重构计划 (The Plan)

加载评论