syntax.garden

29 奇异值分解

29 奇异值分解

奇异值分解

这讲讲什么:对任意线性映射(不管方不方、自伴不自伴、能不能对角化),都造出两组规范正交基,使它关于这两组基的矩阵变成对角阵——对角线上的数叫奇异值
前置:22 讲(内积与范数)、23 讲(规范正交基)、25 讲(伴随)、26 讲(谱定理)、27 讲(正算子)
一句话:正交方向进,正交方向出。 TT 挑几个互相垂直的方向拉长,TT 再把它们送成另一组互相垂直的方向,缩放倍数就是奇异值。


一、为什么需要它

1.1 特征值只解决了一小半问题

20 讲说过:算子可对角化   ⟺  \iff 存在由特征向量构成的基。26 讲又把它升级成:自伴(实)或正规(复)算子,存在由特征向量构成的规范正交基。

这两条都很强,但它们的适用范围被三道墙死死框住:

墙 撞墙的例子
必须是方阵 T:R3→R2T:\mathbb{R}^3\to\mathbb{R}^2 压掉一维,哪来的「特征方向」?
必须有足够多特征向量 (1101)\begin{pmatrix}1&1\\0&1\end{pmatrix} 只有一个特征值,特征空间一维,凑不出基
实情形下必须有实特征值 平面旋转 90∘90^\circ,λ2+1=0\lambda^2+1=0,一个实特征值都没有

而工程里最常出现的恰恰是这三堵墙后面的东西:一个 1000×30001000\times 3000 的数据矩阵、一个从高维测量空间回到低维状态空间的回归算子、一张被压缩过的图像。它们全都不是可以正交对角化的对象。

所以真正的问题不是「怎样对角化一个算子」,而是:

任意一个线性映射 T:V→WT:V\to W,能不能也用某种「对角化」的语言说清楚?

SVD 的回答是:能。代价是要用两组基,一组在出发空间 VV,一组在目标空间 WW。这个代价小得惊人——因为「两组基」正好对应「输入一组坐标、输出另一组坐标」这个现实场景。

1.2 它把「特征值」这个词的两个毛病治好了

毛病一:特征值可以有负数和复数,不便于当「大小」用。 你要衡量「这个映射把东西放大了几倍」,特征值给不了答案:−λ-\lambda 的绝对值一样,2i2\mathrm{i} 更是没法比大小。

毛病二:特征值对非方阵根本不存在。 但「放大倍数」这个概念对非方阵完全说得通。

奇异值把这两件事一起解决:它总是非负实数,而且对任何线性映射都有定义。 这是它比特征值「好用」的全部理由,也是它在数值线性代数里成为主力工具的原因。

1.3 读完这一讲你应该能回答

  1. 为什么奇异值要定义成「T∗TT^*T 特征值的非负平方根」,而不是别的什么?
  2. 一个矩阵的特征值和奇异值能差多远?极端情况长什么样?
  3. 给一个 2×22\times2 矩阵,能不能在十分钟内手算出它的完整 SVD?
  4. 为什么说「奇异值 = 像椭圆的半轴长」,这句话在 TT 不可逆时还成立吗?

二、定义与最小例子

2.1 先把那个「半步」补上

要让定义成立,得先确认 T∗TT^*T 是个好对象。这条结论是整讲的发动机。

引理(T∗TT^*T 的性质) 设 T∈L(V,W)T\in\mathcal{L}(V,W),则

(a) T∗TT^*T 是 VV 上的正算子;

(b) null⁡T∗T=null⁡T\operatorname{null}T^*T=\operatorname{null}T;

(c) range⁡T∗T=range⁡T∗\operatorname{range}T^*T=\operatorname{range}T^*;

(d) dim⁡range⁡T=dim⁡range⁡T∗=dim⁡range⁡T∗T\dim\operatorname{range}T=\dim\operatorname{range}T^*=\dim\operatorname{range}T^*T。

为什么 (a) 成立。 先看自伴:

(T∗T)∗=(T∗)(T∗)∗=T∗T(T^*T)^*=(T^*)(T^*)^*=T^*T

再看非负性——关键是把 ⟨T∗Tv,v⟩\langle T^*Tv,v\rangle 认成「长度的平方」:

⟨(T∗T)v,v⟩=⟨Tv,Tv⟩=∥Tv∥2≥0\langle (T^*T)v,v\rangle=\langle Tv,Tv\rangle=\|Tv\|^2\ge 0

两步都在用同一件事。设 x=Tvx=Tv、y=vy=v,则伴随的定义 ⟨T∗x,y⟩=⟨x,Ty⟩\langle T^*x,y\rangle=\langle x,Ty\rangle 给出

⟨(T∗T)v,v⟩=⟨T∗x,y⟩=⟨x,Ty⟩=⟨Tv,Tv⟩\langle (T^*T)v,v\rangle=\langle T^*x,y\rangle=\langle x,Ty\rangle=\langle Tv,Tv\rangle

这一步千万别写错

最容易犯的错是把它拆成 ⟨T∗v,v⟩\langle T^*v,v\rangle 之类的形式——那已经不是内积的定义域了
(T∗T^* 吃的是 WW 里的向量,vv 在 VV 里)。
正确做法只有一个:用伴随的定义把 T∗T^* 从左边推到右边,让它变成 TT。
推完之后,TT 在两侧各出现一次,于是自然合成 ⟨Tv,Tv⟩\langle Tv,Tv\rangle。

为什么 (b) 成立。 这是同一个技巧的第二次使用。若 T∗Tv=0T^*Tv=0,则

∥Tv∥2=⟨Tv,Tv⟩=⟨T∗Tv,v⟩=⟨0,v⟩=0\|Tv\|^2=\langle Tv,Tv\rangle=\langle T^*Tv,v\rangle=\langle 0,v\rangle=0

于是 Tv=0Tv=0。反过来若 Tv=0Tv=0,显然 T∗Tv=T∗(0)=0T^*Tv=T^*(0)=0。两个方向合起来就是 (b)。

记住这一行

⟨T∗Tv,v⟩=∥Tv∥2\langle T^*Tv,v\rangle=\|Tv\|^2

它把「算子的复合」翻译成「长度的平方」。 本讲的每个证明几乎都要用它一次:
正交性用它、(b) 用它、(d) 用它、最后「半轴长」还是用它。
看到 T∗TT^*T 就条件反射地换成 ∥Tv∥2\|Tv\|^2,这一讲就通了七成。

为什么 (d) 成立。 由 (b) 与 (c):

dim⁡range⁡T∗T=dim⁡range⁡T∗=dim⁡W−dim⁡null⁡T∗\dim\operatorname{range}T^*T=\dim\operatorname{range}T^*=\dim W-\dim\operatorname{null}T^*

(第一处:自伴算子的值域等于零空间的正交补——26 讲正交对角化的直接推论。第二处:08 讲的线性映射基本定理用在 T∗T^* 上。)

又因为 null⁡T∗=(range⁡T)⊥\operatorname{null}T^*=(\operatorname{range}T)^\perp(24 讲的正交补),所以 dim⁡null⁡T∗=dim⁡W−dim⁡range⁡T\dim\operatorname{null}T^*=\dim W-\dim\operatorname{range}T,代回即得 dim⁡range⁡T∗=dim⁡range⁡T\dim\operatorname{range}T^*=\dim\operatorname{range}T。

2.2 定义:奇异值

定义。 设 T∈L(V,W)T\in\mathcal{L}(V,W)。TT 的奇异值是 T∗TT^*T 的特征值的非负平方根,按降序排列;每个奇异值的出现次数等于 T∗TT^*T 对应特征空间的维数。

用式子写就是:若 T∗TT^*T 的特征值(带重数)是 λ1≥λ2≥⋯≥λn≥0\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n\ge 0,则

sk=λk,s1≥s2≥⋯≥sn≥0s_k=\sqrt{\lambda_k},\qquad s_1\ge s_2\ge\cdots\ge s_n\ge 0

这里 n=dim⁡Vn=\dim V,所以奇异值永远有 nn 个(允许并列、允许等于 00)——这一点很重要,它保证了后面 e1,…,ene_1,\dots,e_n 能凑满一组基。

换个说法:奇异值 = ∣T∣|T| 的特征值

27 讲证明了正算子有唯一的非负平方根。记 ∣T∣=T∗T|T|=\sqrt{T^*T}(读作「TT 的绝对值」),
那么 TT 的奇异值就是 ∣T∣|T| 的全部特征值,按降序排。
记号 ∣T∣|T| 不是装饰:对矩阵 AA,A∗A\sqrt{A^*A} 确实扮演了「绝对值」的角色——
对实数有 ∣a∣=a2|a|=\sqrt{a^2},对算子有 ∣T∣=T∗T|T|=\sqrt{T^*T}。标量的绝对值非负、可比较大小,
奇异值也非负、可比较大小。这个类比是本讲最省记忆的一条线。

2.3 最小例子:对角矩阵

取 A=diag⁡(3,2)A=\operatorname{diag}(3,2)(2×22\times2)。则

A∗A=(3002)(3002)=(9004)A^*A=\begin{pmatrix}3&0\\0&2\end{pmatrix}\begin{pmatrix}3&0\\0&2\end{pmatrix}=\begin{pmatrix}9&0\\0&4\end{pmatrix}

特征值 9,49,4,奇异值 3,23,2。这里奇异值恰好等于特征值的绝对值——因为 AA 本身就是正算子。对齐这个特例:一旦 AA 不是自伴的,「奇异值 = 特征值的绝对值」立刻失效,见第五节的误区 1。

2.4 第二个例子:奇异值能看见特征值看不见的东西

取

A=(0100)A=\begin{pmatrix}0&1\\0&0\end{pmatrix}

它的特征多项式是 λ2\lambda^2,所以唯一的特征值是 00(二重)。按特征值判断,这个矩阵「什么也没干」。但

A∗A=(0001)⋅(0100)=(0001)A^*A=\begin{pmatrix}0&0\\0&1\end{pmatrix}\cdot\begin{pmatrix}0&1\\0&0\end{pmatrix}=\begin{pmatrix}0&0\\0&1\end{pmatrix}

特征值 1,01,0,于是奇异值是 1,01,0。

这说明:AA 把 e2e_2 整个搬到了 e1e_1 上,长度没有损失。 特征值看不见这件事,是因为 AA 把一个方向搬走之后又把原方向清零了,两件事在「Av=λvAv=\lambda v」这个等式里互相抵消。而 A∗AA^*A 只看「长度有没有被改变」:

∥Ae2∥=∥e1∥=1,∥Ae1∥=∥0∥=0\|Ae_2\|=\|e_1\|=1,\qquad \|Ae_1\|=\|0\|=0

所以 ∥A∥\|A\| 意义下的「最大放大倍数」是 11,正是最大的奇异值。

这是本讲最重要的一个「反差」

同一个矩阵,特征值全是 00,奇异值却有 11。
奇异值衡量的是「长度怎么变」,特征值衡量的是「方向怎么变」。
一个映射可以完全不保留任何方向(AA 就是),却照样把某个方向拉得很长。


三、几个必须自己算一遍的结论

3.1 SVD 定理:证明的每一步都能在草稿纸上复现

定理(奇异值分解) 设 T∈L(V,W)T\in\mathcal{L}(V,W),TT 的正奇异值是 s1,…,sms_1,\dots,s_m。那么存在 VV 中的规范正交组 e1,…,eme_1,\dots,e_m 和 WW 中的规范正交组 f1,…,fmf_1,\dots,f_m,使得对任一 v∈Vv\in V 都有

Tv=s1⟨v,e1⟩f1+⋯+sm⟨v,em⟩fm(3.1)Tv=s_1\langle v,e_1\rangle f_1+\cdots+s_m\langle v,e_m\rangle f_m \tag{3.1}

证明分四步,一步都不能省。

第 1 步:用谱定理造 e1,…,ene_1,\dots,e_n。 把奇异值补齐成 s1,…,sns_1,\dots,s_n(n=dim⁡Vn=\dim V,允许后面若干个是 00)。由引理 (a),T∗TT^*T 是正算子,于是 26 讲的谱定理给出 VV 的一组规范正交基 e1,…,ene_1,\dots,e_n,使

T∗Tek=sk2ek,k=1,…,n(3.2)T^*Te_k=s_k^2e_k,\qquad k=1,\dots,n \tag{3.2}

注意这一步为什么能成:谱定理要求「自伴」,正算子满足;谱定理同时保证特征值全为实——这正好对应 sk2≥0s_k^2\ge 0,所以 x\sqrt{\phantom{x}} 取得出来。定义里那个「平方根」就是从这里来的。

第 2 步:把 fkf_k 定义出来。 对 k=1,…,mk=1,\dots,m(只对正奇异值),令

fk=Teksk(3.3)f_k=\frac{Te_k}{s_k} \tag{3.3}

这个定义合法,因为 sk>0s_k>0;而且 fkf_k 非零。

第 3 步:验证 f1,…,fmf_1,\dots,f_m 是规范正交组。 对 j,k∈{1,…,m}j,k\in\{1,\dots,m\}:

⟨fj,fk⟩=1sjsk⟨Tej,Tek⟩=1sjsk⟨ej,T∗Tek⟩=sk2sjsk⟨ej,ek⟩=sksjδjk\langle f_j,f_k\rangle=\frac{1}{s_js_k}\langle Te_j,Te_k\rangle=\frac{1}{s_js_k}\langle e_j,T^*Te_k\rangle=\frac{s_k^2}{s_js_k}\langle e_j,e_k\rangle=\frac{s_k}{s_j}\delta_{jk}

(第二处用伴随的定义,第三处用式 (3.2)。)当 j=kj=k 时得 11,当 j≠kj\neq k 时得 00。✓

第 4 步:展开 TvTv。 先处理下标 k>mk>m 的那些位置。若 k>mk>m,则 sk=0s_k=0,由 (3.2) 有 T∗Tek=0T^*Te_k=0;再由引理 (b),Tek=0Te_k=0。于是对任意 v=∑k=1n⟨v,ek⟩ekv=\sum_{k=1}^{n}\langle v,e_k\rangle e_k,

Tv=∑k=1n⟨v,ek⟩Tek=∑k=1m⟨v,ek⟩skfkTv=\sum_{k=1}^{n}\langle v,e_k\rangle Te_k=\sum_{k=1}^{m}\langle v,e_k\rangle s_kf_k

(第一个等号:TT 线性;第二个等号:k>mk>m 的项全为 00,k≤mk\le m 的项用 (3.3) 把 TekTe_k 换成 skfks_kf_k。)这正是 (3.1)。■\blacksquare

公式 (3.1) 怎么读

它是一句话:「TT 只沿 mm 个方向干活,其余方向直接拍死。」

  • ⟨v,ek⟩\langle v,e_k\rangle = vv 在 eke_k 上的坐标(因为 ee 是规范正交的,投影就是内积);
  • 乘上 sks_k = 沿这个方向伸缩;
  • 再贴上 fkf_k = 把这个方向搬到 WW 里去。

所以 TT = 「拆坐标 → 伸缩 → 换方向」三步。这三步对应的就是矩阵分解 A=BDC∗A=BDC^* 的三个因子。

3.2 把它写成矩阵:A=BDC∗A=BDC^*

把 (3.1) 翻译成矩阵语言。设 AA 是 TT(关于标准基)的 p×np\times n 矩阵,秩为 m≥1m\ge 1。令

B=[f1 ⋯ fm] (p×m),D=diag⁡(s1,…,sm) (m×m),C=[e1 ⋯ em] (n×m)B=\big[f_1\ \cdots\ f_m\big]\ (p\times m),\qquad D=\operatorname{diag}(s_1,\dots,s_m)\ (m\times m),\qquad C=\big[e_1\ \cdots\ e_m\big]\ (n\times m)

则

A=BDC∗(3.4)A=BDC^* \tag{3.4}

为什么。 直接验证两边的「作用」相同就够:对每个 eke_k,

BDC∗ek=BD uk=B(skuk)=skfk=TekBDC^*e_k=BD\,u_k=B(s_ku_k)=s_kf_k=Te_k

(uku_k 是 Fm\mathbb{F}^m 的标准基向量;C∗ek=ukC^*e_k=u_k 来自 CC 的列是规范正交的。)两边在 e1,…,eme_1,\dots,e_m 上一致,而 TT 在其余 eke_k 上作用为 00、BDC∗BDC^* 在其余方向同样为 00,所以两边作为映射一致。

三个因子的形状值得记

BB 是 p×mp\times m(列规范正交,是 WW 里的一组基的前 mm 个);
DD 是 m×mm\times m 对角,对角线上全是正数;
CC 是 n×mn\times m(列规范正交,是 VV 里的一组基的前 mm 个)。

这叫薄 SVD。如果想写成方阵版本,把 e1,…,eme_1,\dots,e_m 扩充成 VV 的规范正交基、f1,…,fmf_1,\dots,f_m 扩充成 WW 的规范正交基,就得到

A=UΣV∗,U (p×p), Σ (p×n), V (n×n)A=U\Sigma V^*,\qquad U\ (p\times p),\ \Sigma\ (p\times n),\ V\ (n\times n)

其中 Σ\Sigma 只有前 mm 个对角元非零,其余位置全为 00——这正是广义对角矩阵(允许非方阵,只要求除 Ak,kA_{k,k} 外全为 00)。
扩充出来的那些列是任意的,它们不影响 AA,只影响你用什么基去描述「被拍死的方向」。

3.3 手算一个 2×22\times2 的完整 SVD

这是本讲最该亲手做一遍的地方。取

A=(3045)A=\begin{pmatrix}3&0\\4&5\end{pmatrix}

它不对称,所以既不保证可正交对角化,特征值也未必反映大小。按流程走。

第 1 步:算 A∗AA^*A。(实情形 A∗=ATA^*=A^{\mathsf T}。)

A∗A=(3405)(3045)=(9+16202025)=(25202025)A^*A=\begin{pmatrix}3&4\\0&5\end{pmatrix}\begin{pmatrix}3&0\\4&5\end{pmatrix}=\begin{pmatrix}9+16&20\\20&25\end{pmatrix}=\begin{pmatrix}25&20\\20&25\end{pmatrix}

第 2 步:求 A∗AA^*A 的特征值。 这个矩阵长得对称且两个对角元相等,几乎可以直接看出答案,但还是按标准流程算:

det⁡(A∗A−λI)=(25−λ)2−400=λ2−50λ+225=(λ−45)(λ−5)\det(A^*A-\lambda I)=(25-\lambda)^2-400=\lambda^2-50\lambda+225=(\lambda-45)(\lambda-5)

所以 λ1=45\lambda_1=45,λ2=5\lambda_2=5。

第 3 步:取非负平方根,得奇异值。

s1=45=35≈6.71,s2=5≈2.24s_1=\sqrt{45}=3\sqrt5\approx6.71,\qquad s_2=\sqrt5\approx2.24

(降序排好。注意 s1s2=45⋅5=225=15=∣det⁡A∣s_1s_2=\sqrt{45\cdot5}=\sqrt{225}=15=|\det A|——这不是巧合,见第六节。)

第 4 步:求 A∗AA^*A 的单位特征向量。

λ=45\lambda=45:A∗A−45I=(−202020−20)A^*A-45I=\begin{pmatrix}-20&20\\20&-20\end{pmatrix},解得 x=yx=y,取 e1=12(1,1)Te_1=\dfrac{1}{\sqrt2}(1,1)^{\mathsf T}。

λ=5\lambda=5:A∗A−5I=(20202020)A^*A-5I=\begin{pmatrix}20&20\\20&20\end{pmatrix},解得 x=−yx=-y,取 e2=12(1,−1)Te_2=\dfrac{1}{\sqrt2}(1,-1)^{\mathsf T}。

自检:⟨e1,e2⟩=12(1−1)=0\langle e_1,e_2\rangle=\frac12(1-1)=0 ✓,∥e1∥=∥e2∥=1\|e_1\|=\|e_2\|=1 ✓。(这一步不用做 Gram–Schmidt,因为谱定理已经保证了不同特征值的特征向量自动正交。)

第 5 步:用 fk=Tek/skf_k=Te_k/s_k 算右边那组基。

先算 Ae1Ae_1 和 Ae2Ae_2:

Ae1=12(3045)(11)=12(39),Ae2=12(3045)(1−1)=12(3−1)Ae_1=\frac{1}{\sqrt2}\begin{pmatrix}3&0\\4&5\end{pmatrix}\begin{pmatrix}1\\1\end{pmatrix}=\frac{1}{\sqrt2}\begin{pmatrix}3\\9\end{pmatrix},\qquad Ae_2=\frac{1}{\sqrt2}\begin{pmatrix}3&0\\4&5\end{pmatrix}\begin{pmatrix}1\\-1\end{pmatrix}=\frac{1}{\sqrt2}\begin{pmatrix}3\\-1\end{pmatrix}

再除以 s1=35s_1=3\sqrt5、s2=5s_2=\sqrt5:

f1=1310(39)=110(13),f2=110(3−1)f_1=\frac{1}{3\sqrt{10}}\begin{pmatrix}3\\9\end{pmatrix}=\frac{1}{\sqrt{10}}\begin{pmatrix}1\\3\end{pmatrix},\qquad f_2=\frac{1}{\sqrt{10}}\begin{pmatrix}3\\-1\end{pmatrix}

第 6 步:全部自检。 三个都要查。

∥f1∥2=1+910=1 ✓∥f2∥2=9+110=1 ✓⟨f1,f2⟩=3−310=0 ✓\|f_1\|^2=\frac{1+9}{10}=1\ ✓\qquad\|f_2\|^2=\frac{9+1}{10}=1\ ✓\qquad\langle f_1,f_2\rangle=\frac{3-3}{10}=0\ ✓

第 7 步:组装。

A=BDC∗,B=110(133−1),D=(35005),C=12(111−1)A=BDC^*,\qquad B=\frac{1}{\sqrt{10}}\begin{pmatrix}1&3\\3&-1\end{pmatrix},\quad D=\begin{pmatrix}3\sqrt5&0\\0&\sqrt5\end{pmatrix},\quad C=\frac{1}{\sqrt2}\begin{pmatrix}1&1\\1&-1\end{pmatrix}

第 8 步:回代验算。 这一步千万别省——它是唯一能证明你没白算的步骤。

BD=110(133−1)(35005)=510(339−1)=12(339−1)BD=\frac{1}{\sqrt{10}}\begin{pmatrix}1&3\\3&-1\end{pmatrix}\begin{pmatrix}3\sqrt5&0\\0&\sqrt5\end{pmatrix}=\frac{\sqrt5}{\sqrt{10}}\begin{pmatrix}3&3\\9&-1\end{pmatrix}=\frac{1}{\sqrt2}\begin{pmatrix}3&3\\9&-1\end{pmatrix}

再右乘 C∗C^*(注意 CC 对称,C∗=CC^*=C):

BDC∗=12(339−1)(111−1)=12(60810)=(3045) ✓BDC^*=\frac{1}{2}\begin{pmatrix}3&3\\9&-1\end{pmatrix}\begin{pmatrix}1&1\\1&-1\end{pmatrix}=\frac{1}{2}\begin{pmatrix}6&0\\8&10\end{pmatrix}=\begin{pmatrix}3&0\\4&5\end{pmatrix}\ ✓

拿到了。 顺便对照一下这个例子里两组数的差别:

特征值 奇异值
数值 3, 53,\ 5(det⁡(A−λI)=(3−λ)(5−λ)\det(A-\lambda I)=(3-\lambda)(5-\lambda)) 35≈6.71, 5≈2.243\sqrt5\approx6.71,\ \sqrt5\approx2.24
有没有反映「把 e2e_2 拉长了」 没有 有(s1≈6.71s_1\approx6.71)
手算时最容易卡在哪

不是求特征值,而是忘记 sks_k 要开方。4545 是 s2s^2,s=35s=3\sqrt5。
第二容易错的是下标配错:e1e_1 必须配 λ=45\lambda=45、配 s1=35s_1=3\sqrt5;把 e1,e2e_1,e_2 写反,ff 序列就全乱。
检验办法:s1s_1 对应的是最大的那个特征值,而 f1f_1 应当是 AA 把单位向量拉得最长的那个像方向。

3.4 奇异值就是像椭圆的半轴长

这一条把上面所有代数都变成一张图。取 T∈L(V,W)T\in\mathcal{L}(V,W),奇异值 s1≥⋯≥sns_1\ge\cdots\ge s_n,谱定理给的规范正交基是 e1,…,ene_1,\dots,e_n。

任取单位向量 v=∑k=1nckekv=\sum_{k=1}^{n}c_ke_k,其中 ∑∣ck∣2=∥v∥2=1\sum|c_k|^2=\|v\|^2=1。由 (3.1),

∥Tv∥2=∥∑kckskfk∥2=∑k=1nsk2∣ck∣2(3.5)\|Tv\|^2=\Big\|\sum_k c_ks_kf_k\Big\|^2=\sum_{k=1}^{n}s_k^2|c_k|^2 \tag{3.5}

(第二个等号:fkf_k 是规范正交组,交叉项全为 00——这就是「正交」在计算上的全部价值。)

式 (3.5) 是一个加权平均:∥Tv∥2\|Tv\|^2 落在 sn2s_n^2 与 s12s_1^2 之间,权重 ∣ck∣2|c_k|^2 加起来正好是 11。于是立刻得到两条界:

  • 最大值:取 v=e1v=e_1(即 c1=1c_1=1,其余 00),得 ∥Te1∥=s1\|Te_1\|=s_1。所以 s1s_1 是 TT 在单位球上的最大放大倍数。
  • 最小值:取 v=env=e_n,得 ∥Ten∥=sn\|Te_n\|=s_n。所以 sns_n 是最小放大倍数。

而且这两个极值只在这两个方向取到(除非奇异值重根)。这就给出:

max⁡∥v∥=1∥Tv∥=s1,min⁡∥v∥=1∥Tv∥=sn\max_{\|v\|=1}\|Tv\|=s_1,\qquad \min_{\|v\|=1}\|Tv\|=s_n

几何说法。 把单位球面 {v:∥v∥=1}\{v:\|v\|=1\} 整个送过去,像集是

{Tv:∥v∥=1}={∑kskckfk:∑k∣ck∣2=1}\left\{Tv:\|v\|=1\right\}=\left\{\sum_k s_kc_kf_k:\sum_k|c_k|^2=1\right\}

把 y=Tvy=Tv 写成 ff 基下的坐标 y=∑dkfky=\sum d_kf_k,则 dk=skckd_k=s_kc_k,于是条件变成 ∑k(dk/sk)2=1\sum_k (d_k/s_k)^2=1——这是一个以 f1,…,fnf_1,\dots,f_n 为轴、以 s1,…,sns_1,\dots,s_n 为半轴长的椭球面。

二维情形就是:单位圆被 TT 送成一个椭圆,两条半轴的长度正是 s1,s2s_1,s_2。下一节配图说明。

不可逆时会怎样

若某个 sk=0s_k=0,上面那个「椭球」在对应方向上被压成 00——退化成低一维的东西。
二维时圆被压成一条线段,三维时椭球被压成一个椭圆盘。
这时「最小放大倍数 =0=0」:存在非零向量被 TT 打成 00,正是 null⁡T≠{0}\operatorname{null}T\neq\{0\}。
公式 (3.5) 在退化情形照样成立,只是权重要用 sn=0s_n=0 代入。

3.5 三条立刻能用的判据

判据一:单射   ⟺  \iff 00 不是奇异值。 因为 TT 单射   ⟺  null⁡T={0}  ⟺  null⁡T∗T={0}  ⟺  0\iff\operatorname{null}T=\{0\}\iff\operatorname{null}T^*T=\{0\}\iff 0 不是 T∗TT^*T 的特征值   ⟺  0\iff 0 不是奇异值。中间的跳步全靠引理 (b)。

判据二:正奇异值的个数 =dim⁡range⁡T=\dim\operatorname{range}T。 由谱定理,dim⁡range⁡T∗T\dim\operatorname{range}T^*T 等于 T∗TT^*T 正特征值的个数(带重数);再由引理 (d),dim⁡range⁡T∗T=dim⁡range⁡T\dim\operatorname{range}T^*T=\dim\operatorname{range}T。

于是「满射   ⟺  \iff 正奇异值个数 =dim⁡W=\dim W」也顺手得到。

判据三:等距映射   ⟺  \iff 所有奇异值都等于 11。 因为

S 等距  ⟺  S∗S=I  ⟺  S∗S 的特征值全是 1  ⟺  S 的奇异值全是 1S\ \text{等距}\iff S^*S=I\iff S^*S\ \text{的特征值全是}\ 1\iff S\ \text{的奇异值全是}\ 1

(第一处:等距的定义 S∗S=IS^*S=I;第二处:谱定理把 S∗SS^*S 正交对角化。)

判据三的意义

「等距」是一个几何条件(保持所有长度),「奇异值全为 11」是一个谱条件(一组数的值)。
把几何条件翻译成谱条件,正是这一讲从头到尾在做的事。
顺着这条线再走一步就是 28 讲的结论:SS 等距   ⟺  \iff 矩阵的列(或行)规范正交。


四、几何直观 / 记忆钩子

单位圆上的每一点都被 T 送过去,像是一个椭圆;椭圆的两条半轴长度正好等于 T 的两个奇异值
单位圆上的每一点都被 T 送过去,像是一个椭圆;椭圆的两条半轴长度正好等于 T 的两个奇异值

看图,从左到右只有一次动作:TT 把左边的单位圆整体搬到右边,得到一个椭圆。

右边的椭圆告诉你三件事:

  1. 长半轴 = 最大奇异值 s1s_1,它是「TT 能把长度放大到多少」的天花板;
  2. 短半轴 = 最小奇异值 s2s_2,它是「TT 至少会把长度压到多少」的地板;
  3. 两条半轴互相垂直,而且它们的方向是 f1f_1、f2f_2——对应到左边,那两条互相垂直的「原像方向」就是 e1e_1、e2e_2。

第 3 条是本讲的灵魂:椭圆永远有两条互相垂直的对称轴(任何椭球都是),这条中学就学过的事实,翻译回来就是「存在规范正交组 f1,f2f_1,f_2」。而椭圆的两条轴在圆上对应的原像也必然互相垂直——这就是 A∗AA^*A 是正算子(从而有规范正交特征向量基)在几何上的化身。

记忆钩子:三句话

一圆进,一椭出;轴是 ff,长是 ss;回来找 ee,ee 正交。

  • 「一圆进,一椭出」:定义域取单位球,值域得椭球。
  • 「轴是 ff,长是 ss」:椭球的半轴方向是 fkf_k,半轴长度是 sks_k。
  • 「回来找 ee,ee 正交」:eke_k 是「被拉到最长的那条原像方向」,它们也互相垂直。

另一个钩子:三个因子就是三段路

A=BDC∗⟺V → C∗  坐标 → D  伸缩 → B  WA=BDC^*\quad\Longleftrightarrow\quad V\ \xrightarrow{\ C^*\ }\ \text{坐标}\ \xrightarrow{\ D\ }\ \text{伸缩}\ \xrightarrow{\ B\ }\ W

C∗C^* 的作用是「把 vv 换到 ee 这组坐标下」——因为 ee 是规范正交基,换坐标就是做内积,不用解方程组。DD 只是逐坐标乘一个数。BB 把坐标贴回 WW 的方向上去。

任何矩阵的 SVD,都是「换个坐标系 → 各轴独立缩放 → 换回去」这一件事。 这也是它在数值计算里被偏爱的原因:三段都是数值稳定的操作(正交变换不放大误差)。

一个量化角度:体积

若 AA 是 n×nn\times n 可逆矩阵,∣det⁡A∣=s1s2⋯sn|\det A|=s_1s_2\cdots s_n。理由:A=BDC∗A=BDC^* 且 B,CB,C 列规范正交(可补成方阵正交阵,行列式绝对值为 11),于是

∣det⁡A∣=∣det⁡B∣⋅∣det⁡D∣⋅∣det⁡C∗∣=1⋅(s1⋯sn)⋅1|\det A|=|\det B|\cdot|\det D|\cdot|\det C^*|=1\cdot(s_1\cdots s_n)\cdot 1

几何含义:单位立方体被 AA 拉成一个各边长为 sks_k 的长方体(在 ff 基下看),体积自然是乘积。(行列式的完整讲法在 37 讲。)


五、常见误区

误区 1:以为奇异值就是特征值取绝对值

这对自伴(实对称)或正规算子成立,对一般算子完全不成立。

反例就在第二节:A=(0100)A=\begin{pmatrix}0&1\\0&0\end{pmatrix} 的特征值全是 00,奇异值是 1,01,0。
再如第三节的 A=(3045)A=\begin{pmatrix}3&0\\4&5\end{pmatrix}:特征值 3,53,5,奇异值 353\sqrt5 与 5\sqrt5。
注意这里 s1=6.71s_1=6.71 大于最大的特征值绝对值 55——一般地 s1≥∣λ∣s_1\ge|\lambda| 恒成立,
所以奇异值只可能「更大」,不会更小。

正确的关系只有一条:∣λ∣≤s1|\lambda|\le s_1(最大奇异值),并且 ∣λ∣≥sn|\lambda|\ge s_n(最小奇异值)。
也就是说,所有特征值的模都夹在最小与最大奇异值之间。

误区 2:以为两组基可以是同一组

定义里 ek∈Ve_k\in V、fk∈Wf_k\in W,本来就住在上空间(除非 V=WV=W)。
就算 V=WV=W,两组也不一定相同。

反例:T(x,y)=(−y,x)T(x,y)=(-y,x)(转 90∘90^\circ)。T∗T=IT^*T=I,所以奇异值是 1,11,1,
e1,e2e_1,e_2 可以取标准基。但

f1=Te11=(0,1)=e2,f2=Te21=(−1,0)=−e1f_1=\frac{Te_1}{1}=(0,1)=e_2,\qquad f_2=\frac{Te_2}{1}=(-1,0)=-e_1

ff 组和 ee 组错开了 90∘90^\circ。
这恰恰说明 SVD 比谱定理更灵活:谱定理要求「进去的基 = 出来的基」,SVD 允许它们不同,
换来的是对任意映射都成立。

误区 3:把 sk2s_k^2 当奇异值,或者忘了按降序排

奇异值是 T∗TT^*T 的特征值的平方根,不是特征值本身。
A∗A=diag⁡(25,20,… )A^*A=\operatorname{diag}(25,20,\dots) 时奇异值是 5,…5,\dots 而不是 25,…25,\dots。
另一个高频错误是不排序:1.51.5 节的例子算出 λ=45,5\lambda=45,5 后有人直接写 s1=5s_1=\sqrt5,
于是 f1=Te1/s1f_1=Te_1/s_1 里配错了向量,整个分解废掉。
先排序再开方,顺序不能颠倒。

误区 4:用 AA∗AA^* 求 eke_k

A∗AA^*A(n×nn\times n,作用在 VV 上)的特征向量才是 eke_k;
AA∗AA^*(p×pp\times p,作用在 WW 上)的特征向量是 fkf_k。
两者搞反,你会得到一组「在错误空间里正交」的向量,验算 BDC∗=ABDC^*=A 时必然失败。

一个实用技巧:A∗AA^*A 和 AA∗AA^* 的非零特征值完全相同(习题 9:TT 与 T∗T^* 的正奇异值相同),
所以当 p≫np\gg n 时用 A∗AA^*A(小的那个),当 n≫pn\gg p 时改用 AA∗AA^* 求 ff 再倒推 e=A∗f/se= A^*f/s,
计算量能差一个量级。

误区 5:以为零奇异值的个数不重要

正奇异值的个数 =dim⁡range⁡T=\dim\operatorname{range}T(判据二),所以零的个数 == dim⁡V−dim⁡range⁡T=dim⁡null⁡T\dim V-\dim\operatorname{range}T=\dim\operatorname{null}T。
数一数有几个零,就知道 TT 压掉了几维。
这也给出「秩 = 正奇异值个数」这条工程里最常用的判据:
数值上把「小于阈值的奇异值当零」,就是在做低秩逼近。


六、拓展(可跳过)

6.1 存储:为什么 SVD 能压缩数据

设 AA 是 p×np\times n、秩 mm。AA 本身要存 pnpn 个数;而 B,D,CB,D,C 三个因子总共只有

m(p+m+n)m(p+m+n)

个数。若 mm 远小于 p,np,n,后者会小得多。一个 1000×10001000\times1000 的矩阵若秩是 1010,存储量从 10610^6 掉到约 2×1042\times10^4——两个数量级。

这不是理论游戏:截断到前 kk 个奇异值(令 sk+1=⋯=0s_{k+1}=\cdots=0)得到的是秩 kk 的最佳逼近,这条结论(Eckart–Young)是图像压缩、推荐系统、降噪的共同底座,30 讲会展开。

6.2 为什么数值上不真的去算 T∗TT^*T

上面的手算流程在纸上是标准的,但在计算机上有个隐患:T∗TT^*T 的条件数是 TT 的两倍(奇异值被平方)。原本 smax⁡/smin⁡=106s_{\max}/s_{\min}=10^6 的矩阵,T∗TT^*T 里变成 101210^{12}——单精度下直接丢光信息。

实际算法(Golub–Kahan)不构造 T∗TT^*T,而是用一串正交变换把 AA 化成双对角形式,再在双对角矩阵上迭代。好处是全程只用正交变换,误差不被放大。知道这个差别的意义在于:手算流程和工程算法可以长得完全不一样,但都受同一条定理支配。

6.3 伪逆:SVD 最直接的副产品

若在 (3.1) 里把每个 sks_k 换成 1/sk1/s_k、把 ee 与 ff 的角色对调,得到

T†w=⟨w,f1⟩s1e1+⋯+⟨w,fm⟩smemT^\dagger w=\frac{\langle w,f_1\rangle}{s_1}e_1+\cdots+\frac{\langle w,f_m\rangle}{s_m}e_m

这就是伪逆。TT 可逆时它等于 T−1T^{-1};TT 不可逆(甚至不是方阵)时它照样有定义,并且是「最小二乘意义下最好的那个反解」。24 讲的最小化问题到这里有了统一的算法答案。

顺便:伴随也有同样的形式,只是不替换 sks_k:

T∗w=s1⟨w,f1⟩e1+⋯+sm⟨w,fm⟩emT^*w=s_1\langle w,f_1\rangle e_1+\cdots+s_m\langle w,f_m\rangle e_m

只要交换 ee 与 ff,TT 的公式就变成 T∗T^* 的公式。 这句话比矩阵的「共轭转置」操作更本质。

6.4 把特征值与奇异值摆在一起看

对比项 特征值 奇异值
背景 只需向量空间 需要内积空间
对谁有定义 只对 V→VV\to V 的算子 对 V→WV\to W(可以不同)的映射
取值 任意实数或复数 非负实数
组的长度 若 F=R\mathbb{F}=\mathbb{R} 可能为空 恒等于 dim⁡V\dim V
含 00 意味着 算子不可逆 映射不单射
顺序 无标准顺序 恒按降序
可否用规范正交基对角化 只有特殊算子行 任意映射都行(用两组基)

这张表解释了为什么数值线性代数几乎只用奇异值:它对任何矩阵都存在、都是实数、都有大小顺序、都能算稳定。


七、自测(先做,再看答案)

1. 求 A=(0−510)A=\begin{pmatrix}0&-5\\1&0\end{pmatrix} 的奇异值;再求它的特征值,并与奇异值对照。

2. 求 A=(1221)A=\begin{pmatrix}1&2\\2&1\end{pmatrix} 的奇异值。它与特征值有什么关系?为什么这次关系成立?

3. 设 T∈L(V,W)T\in\mathcal{L}(V,W) 的奇异值是 3,03,0(dim⁡V=2\dim V=2)。求 dim⁡range⁡T\dim\operatorname{range}T;TT 是单射吗?满射吗(设 dim⁡W=2\dim W=2)?

4. 设 TT 的最大奇异值是 s1s_1。证明对一切 v∈Vv\in V 都有 ∥Tv∥≤s1∥v∥\|Tv\|\le s_1\|v\|。

5. 设 AA 是 n×nn\times n 可逆矩阵,奇异值 s1≥⋯≥sn>0s_1\ge\cdots\ge s_n>0。证明 A−1A^{-1} 的奇异值是 1sn,…,1s1\dfrac{1}{s_n},\dots,\dfrac{1}{s_1}。

答案(点开)

1. A∗A=(01−50)(0−510)=(10025)A^*A=\begin{pmatrix}0&1\\-5&0\end{pmatrix}\begin{pmatrix}0&-5\\1&0\end{pmatrix}=\begin{pmatrix}1&0\\0&25\end{pmatrix},
特征值 25,125,1,所以奇异值是 5,15,1。
特征值:det⁡(A−λI)=λ2+5\det(A-\lambda I)=\lambda^2+5,得 λ=±i5\lambda=\pm\mathrm{i}\sqrt5——没有实特征值。
对照要点:特征值可以是纯虚数,奇异值只能是非负实数;
且 ∣λ∣=5≈2.24|\lambda|=\sqrt5\approx2.24 夹在 s2=1s_2=1 与 s1=5s_1=5 之间,正合第五节那条不等式。

2. AA 对称,A∗A=A2=(5445)A^*A=A^2=\begin{pmatrix}5&4\\4&5\end{pmatrix},特征值 9,19,1,奇异值 3,13,1。
特征值:det⁡(A−λI)=(1−λ)2−4\det(A-\lambda I)=(1-\lambda)^2-4,得 λ=3,−1\lambda=3,-1。
所以奇异值 3,13,1 恰好是 ∣λ∣=3,1|\lambda|=3,1。
为什么成立:AA 是正规的(对称必正规),此时存在由特征向量构成的规范正交基,
特征值 λk\lambda_k 就是 A∗AA^*A 的特征值 λk2\lambda_k^2 的平方根,取绝对值即可。
反过来说,只要 AA 不正规(如误区 1 的例子),这条关系立刻断掉。

3. 正奇异值是 33 一个,所以 dim⁡range⁡T=1\dim\operatorname{range}T=1。
有零奇异值,所以 0∈0\in 奇异值   ⟺  T\iff T 不单射,null⁡T≠{0}\operatorname{null}T\ne\{0\}。
又 dim⁡W=2>1=dim⁡range⁡T\dim W=2>1=\dim\operatorname{range}T,不满射。
几何图像:单位圆被压成一条线段(退化椭球),长度方向是 f1f_1,半轴长 33。
验算维数:dim⁡V=dim⁡null⁡T+dim⁡range⁡T\dim V=\dim\operatorname{null}T+\dim\operatorname{range}T,即 2=1+12=1+1 ✓。

4. 由 (3.5),∥Tv∥2=∑ksk2∣ck∣2≤s12∑k∣ck∣2=s12∥v∥2\|Tv\|^2=\sum_k s_k^2|c_k|^2\le s_1^2\sum_k|c_k|^2=s_1^2\|v\|^2
(因为 sk≤s1s_k\le s_1,且 ∑∣ck∣2=∥v∥2\sum|c_k|^2=\|v\|^2 来自 ee 是规范正交基)。
开方即得。等价说法:s1=max⁡∥v∥=1∥Tv∥s_1=\max_{\|v\|=1}\|Tv\| 就是算子范数。
注意这个不等式对任意 vv 成立,不只是单位向量——这正是能把它当「放大倍数的上界」用的原因。

5. AA 可逆,所以所有 sk>0s_k>0,且 A=BDC∗A=BDC^* 中 B,CB,C 都是可逆的(方阵且列正交)。
于是 A−1=CD−1B∗A^{-1}=C D^{-1}B^*。对照 SVD 的形状:这正是一个「右因子 CC、对角因子 D−1D^{-1}、左因子 BB」的分解,
而 C,BC,B 仍列规范正交,所以按唯一性(正奇异值及其对应的子空间由 A∗AA^*A 决定),
A−1A^{-1} 的奇异值就是对角的 1/sk1/s_k,按降序排即 1/sn,…,1/s11/s_n,\dots,1/s_1。
直观检验:把单位球拉成半轴 s1,sns_1,s_n 的椭圆,A−1A^{-1} 就是把它变回单位球,
半轴自然是 1/s1,1/sn1/s_1,1/s_n;最大放大倍数变成 1/sn1/s_n(因为最短的那个方向被放大得最厉害)。


八、复习卡

项 内容
奇异值定义 T∗TT^*T 特征值的非负平方根,降序排,重数 = 特征空间维数
个数 恰有 dim⁡V\dim V 个(含零)
等价的看法 奇异值 == 正算子 ∣T∣=T∗T\lvert T\rvert=\sqrt{T^*T} 的全部特征值
核心恒等式 ⟨T∗Tv,v⟩=∥Tv∥2\langle T^*Tv,v\rangle=\|Tv\|^2(几乎所有证明都靠它)
T∗TT^*T 的性质 正算子;null⁡T∗T=null⁡T\operatorname{null}T^*T=\operatorname{null}T;range⁡T∗T=range⁡T∗\operatorname{range}T^*T=\operatorname{range}T^*;三个维数相等
SVD 定理 Tv=∑k=1msk⟨v,ek⟩fkTv=\sum_{k=1}^{m}s_k\langle v,e_k\rangle f_k,ee 在 VV、ff 在 WW 中,都是规范正交组
矩阵版(薄) A=BDC∗A=BDC^*:B p×mB\ p\times m、D=diag⁡(sk)D=\operatorname{diag}(s_k)、C n×mC\ n\times m
矩阵版(方) A=UΣV∗A=U\Sigma V^*,Σ\Sigma 为广义对角(只有前 mm 个对角元非零)
证明的骨架 谱定理给 eke_k → 令 fk=Tek/skf_k=Te_k/s_k → 验正交 → 展开 TvTv
几何意义 单位球 ↦\mapsto 椭球,半轴长 =sk=s_k,半轴方向 =fk=f_k
放大倍数 s1=max⁡∥v∥=1∥Tv∥s_1=\max_{\|v\|=1}\|Tv\|,sn=min⁡∥v∥=1∥Tv∥s_n=\min_{\|v\|=1}\|Tv\|
零奇异值 存在   ⟺  T\iff T 不单射;个数 =dim⁡null⁡T=\dim\operatorname{null}T
秩 正奇异值个数 =dim⁡range⁡T=\dim\operatorname{range}T(数值上用于低秩逼近)
等距判据 SS 等距   ⟺  \iff 所有奇异值 =1=1
TT 与 T∗T^* 正奇异值相同(非零部分)
可逆时 A−1A^{-1} 的奇异值是 1/sn,…,1/s11/s_n,\dots,1/s_1
行列式 ∣det⁡A∣=s1s2⋯sn\lvert\det A\rvert=s_1s_2\cdots s_n(AA 可逆时)
与特征值的关系 一般只有 ∣λ∣≤s1\lvert\lambda\rvert\le s_1;正规时才有奇异值 =∣λ∣=\lvert\lambda\rvert
口诀 一圆进,一椭出;轴是 ff,长是 ss;回来找 ee,ee 正交

九、出处与延伸(可选,不影响阅读)

  • 主线出处:《线性代数应该这样学》(第 4 版,吴俊达、何阳 译)第 7 章 7E 节「奇异值分解」,印刷第 224–232 页(对应 PDF 第 238–246 页)。包含奇异值定义、T∗TT^*T 的四条性质、两个算例、正奇异值的刻画、SVD 定理与矩阵版,以及 17 道习题。
  • 本文与原文的对应:第二节的 2.3、2.4 与第三节的 3.1–3.2 直接取自原文的定理与证明结构;3.3 的手算例子是本文自选的(原文用的是 4→44\to 4 与 4→34\to 3 的算例,其 A∗AA^*A 为分块对角,更能体现「零奇异值」但手算偏长)。3.4「半轴长」是原文习题 4 的结论,本文补了完整推导;3.5 的三条判据对应原文的正奇异值刻画与等距刻画。
  • 术语别名:奇异值 == singular value;SVD == singular value decomposition,中文也作「奇异值分解」;fkf_k、eke_k 有时被分别叫「左奇异向量」「右奇异向量」(注意不同教材的左右约定可能相反);∣T∣=T∗T|T|=\sqrt{T^*T} 有时叫「极分解里的模」。
  • 历史注记:Erhard Schmidt 在 1907 年引入奇异值概念(他称其为「特征值」的一种推广);矩阵版的 SVD 在 1930 年代由 Beltrami、Jordan、Sylvester 等人的工作汇总而成;现代数值算法(Golub–Kahan 双对角化,1965)之后 SVD 才成为工程标准工具。
  • 配图说明:ch29/svd.png 是本课程自制的示意图(单位圆与它的像,半轴标注为奇异值),与本文 3.4 节的推导一一对应。另有一张三维椭球的教材插图(ch29/book-p253.png),本文未采用——它的立体画法与本文的二维叙述不好衔接,且「原书插图」这类字样会与去书本化规范冲突,故只在此说明其存在。
  • 想深挖时可查:Strang《线性代数及其应用》的 SVD 章(侧重应用与图像压缩);Trefethen & Bau《数值线性代数》讲义第 4–5 讲(侧重算法与稳定性);Eckart–Young 定理的原始论文(1936)关于最佳低秩逼近。
  • 与后续讲次的关系:30 讲会用 SVD 推出极分解、低秩逼近、主成分分析等一批结论;34 讲的迹与 SVD 有 tr⁡(A∗A)=∑sk2\operatorname{tr}(A^*A)=\sum s_k^2 这条桥;37 讲的行列式与 SVD 有 ∣det⁡A∣=∏sk|\det A|=\prod s_k 这条桥。
一句提醒

SVD 在各部教材里的入口差别很大:有的从「任意矩阵都能化成对角形」进(线性映射视角),有的从「协方差矩阵的特征分解」进(统计视角),有的从「低秩逼近」进(数值视角)。
三条路最后落到同一个分解上,只是强调的重点不同。读到不同版本时,抓住「两组正交基 + 非负对角」这四件事,就不会被叙述顺序带偏。