跳到正文
格致开物MATHWIKI

奇异值分解

奇异值分解(singular value decomposition,SVD)把任意实矩阵的作用拆成正交方向之间的伸缩。矩阵可以不是方阵,也可以没有逆。设 A 为 m×n 实矩阵,秩为 r。它可写成 A=∑i=1rσiuivi𝖳=UrΣrVr𝖳. 非零奇异值按 σ1≥⋯≥σr>0 排序。 这里 vi 是输入空间中两两正交的单位向量,ui 是输出空间中两两正交的单位向量;σi 是非零奇异值。式子 Avi=σiui 说得很具体:沿第 i 个输入方向走一个单位,输出沿对应方向走 σi 个单位。对没有输出的方向,A 把它送到零。

单位圆怎样变成椭圆

看一个不是对称矩阵的例子: A=(0−120),A(x,y)=(−y,2x). 输入单位方向 v1=(1,0) 被送到 (0,2)=2u1,其中 u1=(0,1);v2=(0,1) 被送到 (−1,0)=u2,其中 u2=(−1,0)。因而 U=(0−110),Σ=(2001). 取 V=I2,便有 A=UΣV𝖳。 左右两组方向各自正交,但承担不同角色:V 指明输入方向,U 指明对应的输出方向。这里先伸长,再把方向转过直角。直接相乘可以复核 UΣ=A。

把单位圆参数化为 (x,y)=(cos⁡t,sin⁡t),其像为 (X,Y)=(−sin⁡t,2cos⁡t)。消去 t 得 X2+Y2/4=1:水平半轴长一,竖直半轴长二。图左的两条输入单位方向,对应图右标出的两条输出半轴;半轴长度就是奇异值。

左侧单位圆有水平和竖直两个单位方向,矩阵将其映到右侧竖直半轴二水平半轴一的椭圆;水平输入方向映到竖直二,竖直输入方向映到向左一
单位圆的两个正交方向经矩阵作用后仍对应正交方向,伸缩倍数为二和一。

本例 A𝖳A=(4001)。它的特征值四和一开平方,正是奇异值二和一。这不是巧合,也是一般构造的入口。

从对称矩阵得到任意矩阵的分解

对任意 A,矩阵 A𝖳A 对称,且对所有 x 有 x𝖳A𝖳Ax=‖Ax‖2≥0。由实对称矩阵谱定理,它有一组正交规范特征向量 v1,…,vn,特征值非负。把正特征值写为 σi2,并定义 ui=Avi/σi。

还需核对这些 ui 确实正交。由特征向量的正交性, ui𝖳uj=vi𝖳A𝖳Avjσiσj=σj2vi𝖳vjσiσj={1,i=j,0,i≠j. 零特征值的方向满足 ‖Avi‖2=0,因而 Avi=0。任意输入 x 都能沿这组 vi 分解;作用 A 后,零方向消失,剩下 Ax=∑i=1rσiui(vi𝖳x). 这就是开篇的公式,也说明正奇异值的个数恰为矩阵的秩。若把两组单位向量各补足为完整正交基,还能写成 A=UΣV𝖳;完整 Σ 可为长方形,未使用的位置填零。零奇异值并非“没有分解”,它们记录的是核中的输入方向。

伸缩范围与条件数

沿正交输入方向分解后,输出长度可逐项计算: ‖Ax‖2=∑i=1rσi2(vi𝖳x)2. 对单位输入,最大可能输出长度是 σ1,在 x=v1 取得;因此矩阵的二范数 ‖A‖2=σ1。若 A 是可逆方阵,最小伸缩倍数为 σn,于是二范数条件数为 κ2(A)=σ1/σn。这一公式在奇异方阵上不能把零奇异值放到分母里当成有限条件数。

例如对角矩阵 D=diag⁡(1,0.001),沿第二坐标的输入被压缩一千倍。若输出第二坐标因测量误差增加 0.001,恢复输入时第二坐标会增加一。这里的放大来自问题本身;计算方法再精确,也不能从受噪声污染的数据中无条件恢复被强烈压缩的方向。

只保留较大的伸缩方向

令 Ak=∑i=1kσiuivi𝖳,其中 k<r。它的秩至多为 k,丢掉的部分在二范数下满足 ‖A−Ak‖2=σk+1。这个截断不仅方便计算,在所有秩不超过 k 的矩阵里,它还达到最小的二范数误差。

可以直接看出下界。任取秩不超过 k 的矩阵 B;在 span⁡(v1,…,vk+1) 这个 k+1 维空间内,B 必有一个单位零向量 x。由于 Bx=0,而 x 只由前 k+1 个 vi 组成, ‖(A−B)x‖=‖Ax‖≥σk+1‖x‖=σk+1. 所以没有秩 k 的 B 能让最大方向误差小于 σk+1;Ak 刚好达到它。对前面的二阶矩阵,只留 σ1=2 得 A1=(0020),丢失的竖直输入方向造成的最大误差为一。截断是改变原变换以换取低秩表示,不能把被丢弃的方向一概判作“噪声”。

练习取 B=(1100)。计算 B𝖳B=(1111),其特征值为二和零,所以奇异值为 2,0。向量 (1,−1) 落入核;这说明即使矩阵有两个输入坐标,也可能只保留一个可辨别方向。

参考资料与知识联系