矩阵的奇异值分解

《线性代数》,杨刚、吴惠彬著

https://www.bilibili.com/video/BV1ExWxesEVf

https://blog.csdn.net/qq_41951923/article/details/103540506

前置知识

什么是特征值与特征向量?设 A=[aij]Cn×n,若存在数 λC 以及非零列向量 x=(x1,x2,,xn)TCn,使得:

Ax=λx

或:

(λIA)x=0

则称 λ 为矩阵 A特征值x 为矩阵 A 的属于(或对应于)特征值 λ特征向量

什么叫相似对角化?若矩阵 A 可相似于一个对角阵,则称 A 可以相似对角化

关于可相似对角化的定理:

  • n 阶方阵可相似对角化的充要条件是:有 n 个线性无关的特征向量
  • n 阶方阵属于不同特征值的特征向量是线性无关
  • n 阶方阵可相似对角化的充要条件是:每个特征值的几何重数代数重数相等(由前两个推导而来)

什么是正交矩阵?设 An 阶方阵,如果 ATA=IAAT=I,就称 A 为正交矩阵。

关于实对称矩阵特征值与特征向量的定理:

  • 实对称矩阵的特征值都是实数
  • 实对称矩阵属于不同特征值的特征向量一定是正交的

关于实对称矩阵可相似对角化的定理:

  • 实对称矩阵的特征值满足:几何重数代数重数相等
  • 实对称矩阵一定可以相似对角化
  • 对于 n 阶实对称矩阵,存在 n 阶正交矩阵 Q,使得 Q1AQ=diag(λ1,λ2,,λn),其中 λi 是特征值。也就是说实对称矩阵能够找到正交的相似变换矩阵

实对称矩阵相似对角化的几何意义

正交矩阵对应旋转变换

实对称矩阵的相似对角化可以写为:

A=Qdiag(λ1,λ2,,λn)QT

对于一个向量 x,有:

Ax=Qdiag(λ1,λ2,,λn)QTx

x 左乘一个 A,相当于:

  1. 进行一次旋转变换(Q1QT
  2. 进行一次伸缩变换,即对于第 i 维,乘上一个 λidiag(λ1,λ2,,λn)
  3. 旋转回去(Q

所以,我们知道了:实对称矩阵对应缩放变换

奇异值分解

将相似对角化的式子反过来写,就是奇异值分解的形式,例如:

A=Qdiag(λ1,λ2,,λn)QT

在奇异值分解中,最左和最右侧不一定非得是 QQT,它们可以是不同的矩阵,而且不要求方阵,所以奇异值分解的式子是:

Am×n=Qm×mSm×nPn×nT

矩阵将会被分解成有三项:左正交矩阵 Q、对角矩阵 S、右正交矩阵的转置 PT

对角矩阵 S 的对角线元素叫做奇异值(Singular Value),它有如下特点:

  • 奇异值必须是非负数(变换时只能伸缩不能反转),因为负数是没有意义的,两侧的奇异向量不同,改变奇异值的符号后,只需要反转其中一个向量的方向,就能得到相同的变换
  • 奇异值在对角矩阵主对角线从大到小排列,方便执行近似操作

如何对任一矩阵 Am×n 进行奇异值分解?

下面将从方阵到一般的矩阵进行讨论

方阵的奇异值分解

对于 n 阶方阵 A,构建方阵 AATAAT,我们发现它们都是实对称矩阵,它们一定可以进行相似对角化。

A=PSQT,我们发现:

AAT=PSQT(PSQT)T=PSQTQSTPT=PSSTPT=PS2PT

同理:

ATA=QS2QT

给它们写到一起:

A=PSQT{AAT=PS2PTATA=QS2QT

我们求出 AATAAT 的特征向量与特征值,特征向量取算术平方根,然后按照相同的顺序排布,就能得到 S

在得到 S 之后,我们需要对 PQ 进行校正

A=PSQT 变形,得到:

AQ=PS

将列向量展开得到:

A(q1,q2,,qn)=(p1,p2,,pn)diag(s1,s2,,sn)

即:

(Aq1,Aq2,,Aqn)=(s1p1,s2p2,,snpn)

我们得到:

pi=Aqisi

于是,我们就能根据 QP 中的每一列的符号进行校正,得到正确的结果

非方阵的奇异值分解

对于矩阵 Am×n,根据 mn 的数量关系,可以分成 m<nm>n 两种情况:

Am×n={P[J0]QTm<nP[J0]QTm>nAAT=PSSTPT={PJ2PTm<nP[J000]PTm>nATA=QSTSQT={Q[J000]QTm<nQJ2QTm>n

如何校正?

AQ={P[J0]m<nP[J0]m>n

只需要校正公共特征值对应的特征向量即可

使用奇异值分解求方阵的逆

如果 S 满秩,那么:

A1=(PSQT)1=QS1PT

即:

A1=Qdiag(1/s1,1/s2,,1/sn)PT