Skip to content

奇异值分解(SVD)

Singular Value Decomposition

定义

对于一个矩阵Am×n,存在正交矩阵URm×mVRn×n与对角矩阵ΣRm×n,使得

A=UΣVT

UV分别为左/右奇异向量矩阵,Σ的对角元素为奇异值,记为 σ1σ2σp0,其中p=min(m,n),其余位置为0

原理

矩阵代表线性变换,会把单位球映射为椭球。SVD 将这个变换分解为:

  1. 先用VT对输入空间做旋转或反射;
  2. 再用Σ沿正交轴做缩放;
  3. 最后用U对输出空间做旋转或反射。

从单位球开始,依次施加 VT 旋转、Σ 缩放、U 旋转。下图用二维单位圆示意(悬浮显示进度条,可拖动):

内涵

右奇异向量viV的列)与左奇异向量uiU的列)构成两组标准正交基,使得

Avi=σiui(i=1,,p)

也就是说,A在这两组基之间只做沿各轴的缩放。

结论

ASVD=UΣVT

ATAAAT的非零特征值相同,均为σi2

ATAvi=σi2vi,AATui=σi2ui

VATA的特征向量组成,UAAT的特征向量组成。

Σ=[σ1000σ2000σp000],其中p=min(m,n)

A可逆(m=n且满秩),则A1=VΣ1UT;一般情形可用伪逆A+=VΣ+UT

应用

对于X=[1122],Y=[2345]

XA=Y,求 A

  1. 易看出X的秩rank(X)=1,不可逆,且列空间Col(X)=span{[1,2]T} 即该向量张成 X

  2. 取一组 SVD: u1=15[12],v1=12[11],σ1=10X=σ1u1v1T

  3. 伪逆 X+=v11σ1u1T=110[1212]

  4. 最小二乘解(使 XAYF 最小)为 A=X+Y=[11.311.3]

    对应 XA=[22.645.2]

  5. Y 的第一列 [2,4]TCol(X) 中,存在无穷多精确解 (例如 a1=[1,1]T+t[1,1]T);第二列 [3,5]T 不在 Col(X) 中,因此 XA=Y 无精确解,只能用伪逆给出最小二乘解。

因此:即使某些情况下,某个矩阵不存在逆矩阵,也可以通过SVD的方式实现求解

这对于一些机器学习的矩阵运算求解非常方便,可以快速迭代的同时,不必考虑矩阵是否可逆