奇异值分解 #
这讲讲什么:对任意线性映射(不管方不方、自伴不自伴、能不能对角化),都造出两组规范正交基,使它关于这两组基的矩阵变成对角阵——对角线上的数叫奇异值
前置:22 讲(内积与范数)、23 讲(规范正交基)、25 讲(伴随)、26 讲(谱定理)、27 讲(正算子)
一句话:正交方向进,正交方向出。 T 挑几个互相垂直的方向拉长,T 再把它们送成另一组互相垂直的方向,缩放倍数就是奇异值。
一、为什么需要它 #
1.1 特征值只解决了一小半问题 #
20 讲说过:算子可对角化 ⟺ 存在由特征向量构成的基。26 讲又把它升级成:自伴(实)或正规(复)算子,存在由特征向量构成的规范正交基。
这两条都很强,但它们的适用范围被三道墙死死框住:
| 墙 |
撞墙的例子 |
| 必须是方阵 |
T:R3→R2 压掉一维,哪来的「特征方向」? |
| 必须有足够多特征向量 |
(1011) 只有一个特征值,特征空间一维,凑不出基 |
| 实情形下必须有实特征值 |
平面旋转 90∘,λ2+1=0,一个实特征值都没有 |
而工程里最常出现的恰恰是这三堵墙后面的东西:一个 1000×3000 的数据矩阵、一个从高维测量空间回到低维状态空间的回归算子、一张被压缩过的图像。它们全都不是可以正交对角化的对象。
所以真正的问题不是「怎样对角化一个算子」,而是:
任意一个线性映射 T:V→W,能不能也用某种「对角化」的语言说清楚?
SVD 的回答是:能。代价是要用两组基,一组在出发空间 V,一组在目标空间 W。这个代价小得惊人——因为「两组基」正好对应「输入一组坐标、输出另一组坐标」这个现实场景。
1.2 它把「特征值」这个词的两个毛病治好了 #
毛病一:特征值可以有负数和复数,不便于当「大小」用。 你要衡量「这个映射把东西放大了几倍」,特征值给不了答案:−λ 的绝对值一样,2i 更是没法比大小。
毛病二:特征值对非方阵根本不存在。 但「放大倍数」这个概念对非方阵完全说得通。
奇异值把这两件事一起解决:它总是非负实数,而且对任何线性映射都有定义。 这是它比特征值「好用」的全部理由,也是它在数值线性代数里成为主力工具的原因。
1.3 读完这一讲你应该能回答 #
- 为什么奇异值要定义成「T∗T 特征值的非负平方根」,而不是别的什么?
- 一个矩阵的特征值和奇异值能差多远?极端情况长什么样?
- 给一个 2×2 矩阵,能不能在十分钟内手算出它的完整 SVD?
- 为什么说「奇异值 = 像椭圆的半轴长」,这句话在 T 不可逆时还成立吗?
二、定义与最小例子 #
2.1 先把那个「半步」补上 #
要让定义成立,得先确认 T∗T 是个好对象。这条结论是整讲的发动机。
引理(T∗T 的性质) 设 T∈L(V,W),则
(a) T∗T 是 V 上的正算子;
(b) nullT∗T=nullT;
(c) rangeT∗T=rangeT∗;
(d) dimrangeT=dimrangeT∗=dimrangeT∗T。
为什么 (a) 成立。 先看自伴:
(T∗T)∗=(T∗)(T∗)∗=T∗T
再看非负性——关键是把 ⟨T∗Tv,v⟩ 认成「长度的平方」:
⟨(T∗T)v,v⟩=⟨Tv,Tv⟩=∥Tv∥2≥0
两步都在用同一件事。设 x=Tv、y=v,则伴随的定义 ⟨T∗x,y⟩=⟨x,Ty⟩ 给出
⟨(T∗T)v,v⟩=⟨T∗x,y⟩=⟨x,Ty⟩=⟨Tv,Tv⟩
最容易犯的错是把它拆成 ⟨T∗v,v⟩ 之类的形式——那已经不是内积的定义域了
(T∗ 吃的是 W 里的向量,v 在 V 里)。
正确做法只有一个:用伴随的定义把 T∗ 从左边推到右边,让它变成 T。
推完之后,T 在两侧各出现一次,于是自然合成 ⟨Tv,Tv⟩。
为什么 (b) 成立。 这是同一个技巧的第二次使用。若 T∗Tv=0,则
∥Tv∥2=⟨Tv,Tv⟩=⟨T∗Tv,v⟩=⟨0,v⟩=0
于是 Tv=0。反过来若 Tv=0,显然 T∗Tv=T∗(0)=0。两个方向合起来就是 (b)。
⟨T∗Tv,v⟩=∥Tv∥2
它把「算子的复合」翻译成「长度的平方」。 本讲的每个证明几乎都要用它一次:
正交性用它、(b) 用它、(d) 用它、最后「半轴长」还是用它。
看到 T∗T 就条件反射地换成 ∥Tv∥2,这一讲就通了七成。
为什么 (d) 成立。 由 (b) 与 (c):
dimrangeT∗T=dimrangeT∗=dimW−dimnullT∗
(第一处:自伴算子的值域等于零空间的正交补——26 讲正交对角化的直接推论。第二处:08 讲的线性映射基本定理用在 T∗ 上。)
又因为 nullT∗=(rangeT)⊥(24 讲的正交补),所以 dimnullT∗=dimW−dimrangeT,代回即得 dimrangeT∗=dimrangeT。
2.2 定义:奇异值 #
定义。 设 T∈L(V,W)。T 的奇异值是 T∗T 的特征值的非负平方根,按降序排列;每个奇异值的出现次数等于 T∗T 对应特征空间的维数。
用式子写就是:若 T∗T 的特征值(带重数)是 λ1≥λ2≥⋯≥λn≥0,则
sk=λk,s1≥s2≥⋯≥sn≥0
这里 n=dimV,所以奇异值永远有 n 个(允许并列、允许等于 0)——这一点很重要,它保证了后面 e1,…,en 能凑满一组基。
换个说法:奇异值 = ∣T∣ 的特征值 27 讲证明了正算子有唯一的非负平方根。记 ∣T∣=T∗T(读作「T 的绝对值」),
那么 T 的奇异值就是 ∣T∣ 的全部特征值,按降序排。
记号 ∣T∣ 不是装饰:对矩阵 A,A∗A 确实扮演了「绝对值」的角色——
对实数有 ∣a∣=a2,对算子有 ∣T∣=T∗T。标量的绝对值非负、可比较大小,
奇异值也非负、可比较大小。这个类比是本讲最省记忆的一条线。
2.3 最小例子:对角矩阵 #
取 A=diag(3,2)(2×2)。则
A∗A=(3002)(3002)=(9004)
特征值 9,4,奇异值 3,2。这里奇异值恰好等于特征值的绝对值——因为 A 本身就是正算子。对齐这个特例:一旦 A 不是自伴的,「奇异值 = 特征值的绝对值」立刻失效,见第五节的误区 1。
2.4 第二个例子:奇异值能看见特征值看不见的东西 #
取
A=(0010)
它的特征多项式是 λ2,所以唯一的特征值是 0(二重)。按特征值判断,这个矩阵「什么也没干」。但
A∗A=(0001)⋅(0010)=(0001)
特征值 1,0,于是奇异值是 1,0。
这说明:A 把 e2 整个搬到了 e1 上,长度没有损失。 特征值看不见这件事,是因为 A 把一个方向搬走之后又把原方向清零了,两件事在「Av=λv」这个等式里互相抵消。而 A∗A 只看「长度有没有被改变」:
∥Ae2∥=∥e1∥=1,∥Ae1∥=∥0∥=0
所以 ∥A∥ 意义下的「最大放大倍数」是 1,正是最大的奇异值。
同一个矩阵,特征值全是 0,奇异值却有 1。
奇异值衡量的是「长度怎么变」,特征值衡量的是「方向怎么变」。
一个映射可以完全不保留任何方向(A 就是),却照样把某个方向拉得很长。
三、几个必须自己算一遍的结论 #
3.1 SVD 定理:证明的每一步都能在草稿纸上复现 #
定理(奇异值分解) 设 T∈L(V,W),T 的正奇异值是 s1,…,sm。那么存在 V 中的规范正交组 e1,…,em 和 W 中的规范正交组 f1,…,fm,使得对任一 v∈V 都有
Tv=s1⟨v,e1⟩f1+⋯+sm⟨v,em⟩fm(3.1)
证明分四步,一步都不能省。
第 1 步:用谱定理造 e1,…,en。 把奇异值补齐成 s1,…,sn(n=dimV,允许后面若干个是 0)。由引理 (a),T∗T 是正算子,于是 26 讲的谱定理给出 V 的一组规范正交基 e1,…,en,使
T∗Tek=sk2ek,k=1,…,n(3.2)
注意这一步为什么能成:谱定理要求「自伴」,正算子满足;谱定理同时保证特征值全为实——这正好对应 sk2≥0,所以 x 取得出来。定义里那个「平方根」就是从这里来的。
第 2 步:把 fk 定义出来。 对 k=1,…,m(只对正奇异值),令
fk=skTek(3.3)
这个定义合法,因为 sk>0;而且 fk 非零。
第 3 步:验证 f1,…,fm 是规范正交组。 对 j,k∈{1,…,m}:
⟨fj,fk⟩=sjsk1⟨Tej,Tek⟩=sjsk1⟨ej,T∗Tek⟩=sjsksk2⟨ej,ek⟩=sjskδjk
(第二处用伴随的定义,第三处用式 (3.2)。)当 j=k 时得 1,当 j=k 时得 0。✓
第 4 步:展开 Tv。 先处理下标 k>m 的那些位置。若 k>m,则 sk=0,由 (3.2) 有 T∗Tek=0;再由引理 (b),Tek=0。于是对任意 v=∑k=1n⟨v,ek⟩ek,
Tv=k=1∑n⟨v,ek⟩Tek=k=1∑m⟨v,ek⟩skfk
(第一个等号:T 线性;第二个等号:k>m 的项全为 0,k≤m 的项用 (3.3) 把 Tek 换成 skfk。)这正是 (3.1)。■
它是一句话:「T 只沿 m 个方向干活,其余方向直接拍死。」
- ⟨v,ek⟩ = v 在 ek 上的坐标(因为 e 是规范正交的,投影就是内积);
- 乘上 sk = 沿这个方向伸缩;
- 再贴上 fk = 把这个方向搬到 W 里去。
所以 T = 「拆坐标 → 伸缩 → 换方向」三步。这三步对应的就是矩阵分解 A=BDC∗ 的三个因子。
3.2 把它写成矩阵:A=BDC∗ #
把 (3.1) 翻译成矩阵语言。设 A 是 T(关于标准基)的 p×n 矩阵,秩为 m≥1。令
B=[f1 ⋯ fm] (p×m),D=diag(s1,…,sm) (m×m),C=[e1 ⋯ em] (n×m)
则
A=BDC∗(3.4)
为什么。 直接验证两边的「作用」相同就够:对每个 ek,
BDC∗ek=BDuk=B(skuk)=skfk=Tek
(uk 是 Fm 的标准基向量;C∗ek=uk 来自 C 的列是规范正交的。)两边在 e1,…,em 上一致,而 T 在其余 ek 上作用为 0、BDC∗ 在其余方向同样为 0,所以两边作为映射一致。
B 是 p×m(列规范正交,是 W 里的一组基的前 m 个);
D 是 m×m 对角,对角线上全是正数;
C 是 n×m(列规范正交,是 V 里的一组基的前 m 个)。
这叫薄 SVD。如果想写成方阵版本,把 e1,…,em 扩充成 V 的规范正交基、f1,…,fm 扩充成 W 的规范正交基,就得到
A=UΣV∗,U (p×p), Σ (p×n), V (n×n)
其中 Σ 只有前 m 个对角元非零,其余位置全为 0——这正是广义对角矩阵(允许非方阵,只要求除 Ak,k 外全为 0)。
扩充出来的那些列是任意的,它们不影响 A,只影响你用什么基去描述「被拍死的方向」。
3.3 手算一个 2×2 的完整 SVD #
这是本讲最该亲手做一遍的地方。取
A=(3405)
它不对称,所以既不保证可正交对角化,特征值也未必反映大小。按流程走。
第 1 步:算 A∗A。(实情形 A∗=AT。)
A∗A=(3045)(3405)=(9+16202025)=(25202025)
第 2 步:求 A∗A 的特征值。 这个矩阵长得对称且两个对角元相等,几乎可以直接看出答案,但还是按标准流程算:
det(A∗A−λI)=(25−λ)2−400=λ2−50λ+225=(λ−45)(λ−5)
所以 λ1=45,λ2=5。
第 3 步:取非负平方根,得奇异值。
s1=45=35≈6.71,s2=5≈2.24
(降序排好。注意 s1s2=45⋅5=225=15=∣detA∣——这不是巧合,见第六节。)
第 4 步:求 A∗A 的单位特征向量。
λ=45:A∗A−45I=(−202020−20),解得 x=y,取 e1=21(1,1)T。
λ=5:A∗A−5I=(20202020),解得 x=−y,取 e2=21(1,−1)T。
自检:⟨e1,e2⟩=21(1−1)=0 ✓,∥e1∥=∥e2∥=1 ✓。(这一步不用做 Gram–Schmidt,因为谱定理已经保证了不同特征值的特征向量自动正交。)
第 5 步:用 fk=Tek/sk 算右边那组基。
先算 Ae1 和 Ae2:
Ae1=21(3405)(11)=21(39),Ae2=21(3405)(1−1)=21(3−1)
再除以 s1=35、s2=5:
f1=3101(39)=101(13),f2=101(3−1)
第 6 步:全部自检。 三个都要查。
∥f1∥2=101+9=1 ✓∥f2∥2=109+1=1 ✓⟨f1,f2⟩=103−3=0 ✓
第 7 步:组装。
A=BDC∗,B=101(133−1),D=(35005),C=21(111−1)
第 8 步:回代验算。 这一步千万别省——它是唯一能证明你没白算的步骤。
BD=101(133−1)(35005)=105(393−1)=21(393−1)
再右乘 C∗(注意 C 对称,C∗=C):
BDC∗=21(393−1)(111−1)=21(68010)=(3405) ✓
拿到了。 顺便对照一下这个例子里两组数的差别:
|
特征值 |
奇异值 |
| 数值 |
3, 5(det(A−λI)=(3−λ)(5−λ)) |
35≈6.71, 5≈2.24 |
| 有没有反映「把 e2 拉长了」 |
没有 |
有(s1≈6.71) |
不是求特征值,而是忘记 sk 要开方。45 是 s2,s=35。
第二容易错的是下标配错:e1 必须配 λ=45、配 s1=35;把 e1,e2 写反,f 序列就全乱。
检验办法:s1 对应的是最大的那个特征值,而 f1 应当是 A 把单位向量拉得最长的那个像方向。
3.4 奇异值就是像椭圆的半轴长 #
这一条把上面所有代数都变成一张图。取 T∈L(V,W),奇异值 s1≥⋯≥sn,谱定理给的规范正交基是 e1,…,en。
任取单位向量 v=∑k=1nckek,其中 ∑∣ck∣2=∥v∥2=1。由 (3.1),
∥Tv∥2=k∑ckskfk2=k=1∑nsk2∣ck∣2(3.5)
(第二个等号:fk 是规范正交组,交叉项全为 0——这就是「正交」在计算上的全部价值。)
式 (3.5) 是一个加权平均:∥Tv∥2 落在 sn2 与 s12 之间,权重 ∣ck∣2 加起来正好是 1。于是立刻得到两条界:
- 最大值:取 v=e1(即 c1=1,其余 0),得 ∥Te1∥=s1。所以 s1 是 T 在单位球上的最大放大倍数。
- 最小值:取 v=en,得 ∥Ten∥=sn。所以 sn 是最小放大倍数。
而且这两个极值只在这两个方向取到(除非奇异值重根)。这就给出:
∥v∥=1max∥Tv∥=s1,∥v∥=1min∥Tv∥=sn
几何说法。 把单位球面 {v:∥v∥=1} 整个送过去,像集是
{Tv:∥v∥=1}={k∑skckfk:k∑∣ck∣2=1}
把 y=Tv 写成 f 基下的坐标 y=∑dkfk,则 dk=skck,于是条件变成 ∑k(dk/sk)2=1——这是一个以 f1,…,fn 为轴、以 s1,…,sn 为半轴长的椭球面。
二维情形就是:单位圆被 T 送成一个椭圆,两条半轴的长度正是 s1,s2。下一节配图说明。
若某个 sk=0,上面那个「椭球」在对应方向上被压成 0——退化成低一维的东西。
二维时圆被压成一条线段,三维时椭球被压成一个椭圆盘。
这时「最小放大倍数 =0」:存在非零向量被 T 打成 0,正是 nullT={0}。
公式 (3.5) 在退化情形照样成立,只是权重要用 sn=0 代入。
3.5 三条立刻能用的判据 #
判据一:单射 ⟺ 0 不是奇异值。 因为 T 单射 ⟺nullT={0}⟺nullT∗T={0}⟺0 不是 T∗T 的特征值 ⟺0 不是奇异值。中间的跳步全靠引理 (b)。
判据二:正奇异值的个数 =dimrangeT。 由谱定理,dimrangeT∗T 等于 T∗T 正特征值的个数(带重数);再由引理 (d),dimrangeT∗T=dimrangeT。
于是「满射 ⟺ 正奇异值个数 =dimW」也顺手得到。
判据三:等距映射 ⟺ 所有奇异值都等于 1。 因为
S 等距⟺S∗S=I⟺S∗S 的特征值全是 1⟺S 的奇异值全是 1
(第一处:等距的定义 S∗S=I;第二处:谱定理把 S∗S 正交对角化。)
「等距」是一个几何条件(保持所有长度),「奇异值全为 1」是一个谱条件(一组数的值)。
把几何条件翻译成谱条件,正是这一讲从头到尾在做的事。
顺着这条线再走一步就是 28 讲的结论:S 等距 ⟺ 矩阵的列(或行)规范正交。
四、几何直观 / 记忆钩子 #
单位圆上的每一点都被 T 送过去,像是一个椭圆;椭圆的两条半轴长度正好等于 T 的两个奇异值
看图,从左到右只有一次动作:T 把左边的单位圆整体搬到右边,得到一个椭圆。
右边的椭圆告诉你三件事:
- 长半轴 = 最大奇异值 s1,它是「T 能把长度放大到多少」的天花板;
- 短半轴 = 最小奇异值 s2,它是「T 至少会把长度压到多少」的地板;
- 两条半轴互相垂直,而且它们的方向是 f1、f2——对应到左边,那两条互相垂直的「原像方向」就是 e1、e2。
第 3 条是本讲的灵魂:椭圆永远有两条互相垂直的对称轴(任何椭球都是),这条中学就学过的事实,翻译回来就是「存在规范正交组 f1,f2」。而椭圆的两条轴在圆上对应的原像也必然互相垂直——这就是 A∗A 是正算子(从而有规范正交特征向量基)在几何上的化身。
记忆钩子:三句话 #
一圆进,一椭出;轴是 f,长是 s;回来找 e,e 正交。
- 「一圆进,一椭出」:定义域取单位球,值域得椭球。
- 「轴是 f,长是 s」:椭球的半轴方向是 fk,半轴长度是 sk。
- 「回来找 e,e 正交」:ek 是「被拉到最长的那条原像方向」,它们也互相垂直。
另一个钩子:三个因子就是三段路 #
A=BDC∗⟺V C∗ 坐标 D 伸缩 B W
C∗ 的作用是「把 v 换到 e 这组坐标下」——因为 e 是规范正交基,换坐标就是做内积,不用解方程组。D 只是逐坐标乘一个数。B 把坐标贴回 W 的方向上去。
任何矩阵的 SVD,都是「换个坐标系 → 各轴独立缩放 → 换回去」这一件事。 这也是它在数值计算里被偏爱的原因:三段都是数值稳定的操作(正交变换不放大误差)。
一个量化角度:体积 #
若 A 是 n×n 可逆矩阵,∣detA∣=s1s2⋯sn。理由:A=BDC∗ 且 B,C 列规范正交(可补成方阵正交阵,行列式绝对值为 1),于是
∣detA∣=∣detB∣⋅∣detD∣⋅∣detC∗∣=1⋅(s1⋯sn)⋅1
几何含义:单位立方体被 A 拉成一个各边长为 sk 的长方体(在 f 基下看),体积自然是乘积。(行列式的完整讲法在 37 讲。)
五、常见误区 #
这对自伴(实对称)或正规算子成立,对一般算子完全不成立。
反例就在第二节:A=(0010) 的特征值全是 0,奇异值是 1,0。
再如第三节的 A=(3405):特征值 3,5,奇异值 35 与 5。
注意这里 s1=6.71 大于最大的特征值绝对值 5——一般地 s1≥∣λ∣ 恒成立,
所以奇异值只可能「更大」,不会更小。
正确的关系只有一条:∣λ∣≤s1(最大奇异值),并且 ∣λ∣≥sn(最小奇异值)。
也就是说,所有特征值的模都夹在最小与最大奇异值之间。
定义里 ek∈V、fk∈W,本来就住在上空间(除非 V=W)。
就算 V=W,两组也不一定相同。
反例:T(x,y)=(−y,x)(转 90∘)。T∗T=I,所以奇异值是 1,1,
e1,e2 可以取标准基。但
f1=1Te1=(0,1)=e2,f2=1Te2=(−1,0)=−e1
f 组和 e 组错开了 90∘。
这恰恰说明 SVD 比谱定理更灵活:谱定理要求「进去的基 = 出来的基」,SVD 允许它们不同,
换来的是对任意映射都成立。
误区 3:把 sk2 当奇异值,或者忘了按降序排 奇异值是 T∗T 的特征值的平方根,不是特征值本身。
A∗A=diag(25,20,…) 时奇异值是 5,… 而不是 25,…。
另一个高频错误是不排序:1.5 节的例子算出 λ=45,5 后有人直接写 s1=5,
于是 f1=Te1/s1 里配错了向量,整个分解废掉。
先排序再开方,顺序不能颠倒。
误区 4:用 AA∗ 求 ek A∗A(n×n,作用在 V 上)的特征向量才是 ek;
AA∗(p×p,作用在 W 上)的特征向量是 fk。
两者搞反,你会得到一组「在错误空间里正交」的向量,验算 BDC∗=A 时必然失败。
一个实用技巧:A∗A 和 AA∗ 的非零特征值完全相同(习题 9:T 与 T∗ 的正奇异值相同),
所以当 p≫n 时用 A∗A(小的那个),当 n≫p 时改用 AA∗ 求 f 再倒推 e=A∗f/s,
计算量能差一个量级。
正奇异值的个数 =dimrangeT(判据二),所以零的个数 = dimV−dimrangeT=dimnullT。
数一数有几个零,就知道 T 压掉了几维。
这也给出「秩 = 正奇异值个数」这条工程里最常用的判据:
数值上把「小于阈值的奇异值当零」,就是在做低秩逼近。
六、拓展(可跳过) #
6.1 存储:为什么 SVD 能压缩数据 #
设 A 是 p×n、秩 m。A 本身要存 pn 个数;而 B,D,C 三个因子总共只有
m(p+m+n)
个数。若 m 远小于 p,n,后者会小得多。一个 1000×1000 的矩阵若秩是 10,存储量从 106 掉到约 2×104——两个数量级。
这不是理论游戏:截断到前 k 个奇异值(令 sk+1=⋯=0)得到的是秩 k 的最佳逼近,这条结论(Eckart–Young)是图像压缩、推荐系统、降噪的共同底座,30 讲会展开。
6.2 为什么数值上不真的去算 T∗T #
上面的手算流程在纸上是标准的,但在计算机上有个隐患:T∗T 的条件数是 T 的两倍(奇异值被平方)。原本 smax/smin=106 的矩阵,T∗T 里变成 1012——单精度下直接丢光信息。
实际算法(Golub–Kahan)不构造 T∗T,而是用一串正交变换把 A 化成双对角形式,再在双对角矩阵上迭代。好处是全程只用正交变换,误差不被放大。知道这个差别的意义在于:手算流程和工程算法可以长得完全不一样,但都受同一条定理支配。
6.3 伪逆:SVD 最直接的副产品 #
若在 (3.1) 里把每个 sk 换成 1/sk、把 e 与 f 的角色对调,得到
T†w=s1⟨w,f1⟩e1+⋯+sm⟨w,fm⟩em
这就是伪逆。T 可逆时它等于 T−1;T 不可逆(甚至不是方阵)时它照样有定义,并且是「最小二乘意义下最好的那个反解」。24 讲的最小化问题到这里有了统一的算法答案。
顺便:伴随也有同样的形式,只是不替换 sk:
T∗w=s1⟨w,f1⟩e1+⋯+sm⟨w,fm⟩em
只要交换 e 与 f,T 的公式就变成 T∗ 的公式。 这句话比矩阵的「共轭转置」操作更本质。
6.4 把特征值与奇异值摆在一起看 #
| 对比项 |
特征值 |
奇异值 |
| 背景 |
只需向量空间 |
需要内积空间 |
| 对谁有定义 |
只对 V→V 的算子 |
对 V→W(可以不同)的映射 |
| 取值 |
任意实数或复数 |
非负实数 |
| 组的长度 |
若 F=R 可能为空 |
恒等于 dimV |
| 含 0 意味着 |
算子不可逆 |
映射不单射 |
| 顺序 |
无标准顺序 |
恒按降序 |
| 可否用规范正交基对角化 |
只有特殊算子行 |
任意映射都行(用两组基) |
这张表解释了为什么数值线性代数几乎只用奇异值:它对任何矩阵都存在、都是实数、都有大小顺序、都能算稳定。
七、自测(先做,再看答案) #
1. 求 A=(01−50) 的奇异值;再求它的特征值,并与奇异值对照。
2. 求 A=(1221) 的奇异值。它与特征值有什么关系?为什么这次关系成立?
3. 设 T∈L(V,W) 的奇异值是 3,0(dimV=2)。求 dimrangeT;T 是单射吗?满射吗(设 dimW=2)?
4. 设 T 的最大奇异值是 s1。证明对一切 v∈V 都有 ∥Tv∥≤s1∥v∥。
5. 设 A 是 n×n 可逆矩阵,奇异值 s1≥⋯≥sn>0。证明 A−1 的奇异值是 sn1,…,s11。
答案(点开)
1. A∗A=(0−510)(01−50)=(10025),
特征值 25,1,所以奇异值是 5,1。
特征值:det(A−λI)=λ2+5,得 λ=±i5——没有实特征值。
对照要点:特征值可以是纯虚数,奇异值只能是非负实数;
且 ∣λ∣=5≈2.24 夹在 s2=1 与 s1=5 之间,正合第五节那条不等式。
2. A 对称,A∗A=A2=(5445),特征值 9,1,奇异值 3,1。
特征值:det(A−λI)=(1−λ)2−4,得 λ=3,−1。
所以奇异值 3,1 恰好是 ∣λ∣=3,1。
为什么成立:A 是正规的(对称必正规),此时存在由特征向量构成的规范正交基,
特征值 λk 就是 A∗A 的特征值 λk2 的平方根,取绝对值即可。
反过来说,只要 A 不正规(如误区 1 的例子),这条关系立刻断掉。
3. 正奇异值是 3 一个,所以 dimrangeT=1。
有零奇异值,所以 0∈ 奇异值 ⟺T 不单射,nullT={0}。
又 dimW=2>1=dimrangeT,不满射。
几何图像:单位圆被压成一条线段(退化椭球),长度方向是 f1,半轴长 3。
验算维数:dimV=dimnullT+dimrangeT,即 2=1+1 ✓。
4. 由 (3.5),∥Tv∥2=∑ksk2∣ck∣2≤s12∑k∣ck∣2=s12∥v∥2
(因为 sk≤s1,且 ∑∣ck∣2=∥v∥2 来自 e 是规范正交基)。
开方即得。等价说法:s1=max∥v∥=1∥Tv∥ 就是算子范数。
注意这个不等式对任意 v 成立,不只是单位向量——这正是能把它当「放大倍数的上界」用的原因。
5. A 可逆,所以所有 sk>0,且 A=BDC∗ 中 B,C 都是可逆的(方阵且列正交)。
于是 A−1=CD−1B∗。对照 SVD 的形状:这正是一个「右因子 C、对角因子 D−1、左因子 B」的分解,
而 C,B 仍列规范正交,所以按唯一性(正奇异值及其对应的子空间由 A∗A 决定),
A−1 的奇异值就是对角的 1/sk,按降序排即 1/sn,…,1/s1。
直观检验:把单位球拉成半轴 s1,sn 的椭圆,A−1 就是把它变回单位球,
半轴自然是 1/s1,1/sn;最大放大倍数变成 1/sn(因为最短的那个方向被放大得最厉害)。
八、复习卡 #
| 项 |
内容 |
| 奇异值定义 |
T∗T 特征值的非负平方根,降序排,重数 = 特征空间维数 |
| 个数 |
恰有 dimV 个(含零) |
| 等价的看法 |
奇异值 = 正算子 ∣T∣=T∗T 的全部特征值 |
| 核心恒等式 |
⟨T∗Tv,v⟩=∥Tv∥2(几乎所有证明都靠它) |
| T∗T 的性质 |
正算子;nullT∗T=nullT;rangeT∗T=rangeT∗;三个维数相等 |
| SVD 定理 |
Tv=∑k=1msk⟨v,ek⟩fk,e 在 V、f 在 W 中,都是规范正交组 |
| 矩阵版(薄) |
A=BDC∗:B p×m、D=diag(sk)、C n×m |
| 矩阵版(方) |
A=UΣV∗,Σ 为广义对角(只有前 m 个对角元非零) |
| 证明的骨架 |
谱定理给 ek → 令 fk=Tek/sk → 验正交 → 展开 Tv |
| 几何意义 |
单位球 ↦ 椭球,半轴长 =sk,半轴方向 =fk |
| 放大倍数 |
s1=max∥v∥=1∥Tv∥,sn=min∥v∥=1∥Tv∥ |
| 零奇异值 |
存在 ⟺T 不单射;个数 =dimnullT |
| 秩 |
正奇异值个数 =dimrangeT(数值上用于低秩逼近) |
| 等距判据 |
S 等距 ⟺ 所有奇异值 =1 |
| T 与 T∗ |
正奇异值相同(非零部分) |
| 可逆时 |
A−1 的奇异值是 1/sn,…,1/s1 |
| 行列式 |
∣detA∣=s1s2⋯sn(A 可逆时) |
| 与特征值的关系 |
一般只有 ∣λ∣≤s1;正规时才有奇异值 =∣λ∣ |
| 口诀 |
一圆进,一椭出;轴是 f,长是 s;回来找 e,e 正交 |
九、出处与延伸(可选,不影响阅读) #
- 主线出处:《线性代数应该这样学》(第 4 版,吴俊达、何阳 译)第 7 章 7E 节「奇异值分解」,印刷第 224–232 页(对应 PDF 第 238–246 页)。包含奇异值定义、T∗T 的四条性质、两个算例、正奇异值的刻画、SVD 定理与矩阵版,以及 17 道习题。
- 本文与原文的对应:第二节的 2.3、2.4 与第三节的 3.1–3.2 直接取自原文的定理与证明结构;3.3 的手算例子是本文自选的(原文用的是 4→4 与 4→3 的算例,其 A∗A 为分块对角,更能体现「零奇异值」但手算偏长)。3.4「半轴长」是原文习题 4 的结论,本文补了完整推导;3.5 的三条判据对应原文的正奇异值刻画与等距刻画。
- 术语别名:奇异值 = singular value;SVD = singular value decomposition,中文也作「奇异值分解」;fk、ek 有时被分别叫「左奇异向量」「右奇异向量」(注意不同教材的左右约定可能相反);∣T∣=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 这条桥;37 讲的行列式与 SVD 有 ∣detA∣=∏sk 这条桥。
SVD 在各部教材里的入口差别很大:有的从「任意矩阵都能化成对角形」进(线性映射视角),有的从「协方差矩阵的特征分解」进(统计视角),有的从「低秩逼近」进(数值视角)。
三条路最后落到同一个分解上,只是强调的重点不同。读到不同版本时,抓住「两组正交基 + 非负对角」这四件事,就不会被叙述顺序带偏。