当前位置: 代码迷 >> 综合 >> SVD(Singular Value Decomposition)到底怎么“凑“出来的?
  详细解决方案

SVD(Singular Value Decomposition)到底怎么“凑“出来的?

热度:91   发布时间:2023-11-27 03:58:36.0
  • 本文主要是记录个人的理解,关于数学定理部分可能不太严谨。如果问题,欢迎指正!

  • 其它更多关于SVD的知识,可参考:

  • AMS :: Feature Column from the AMS

  • 视频:矩阵分析之奇异值分解(SVD)

  • 博客园:SVD(奇异值分解)小结

  • CSDN:矩阵论笔记:奇异值分解SVD(Singular Value Decomposition)以及应用总结!


文章目录

      • 特征值分解
      • 奇异值分解
          • Step1: 转置相乘凑方阵
          • Step2: 对称矩阵对角化
          • Step3:特征值开平方根得奇异值
          • Step4:插入正交矩阵凑形式?

特征值分解

首先,从特征值分解说起。对于NNN阶矩阵AAA,有:
Av=λvA v=\lambda v Av=λv
其中 vvv 是矩阵AAA 的特征向量,λ\lambdaλ 是矩阵AAA 的特征值。

这个式子的一个重要含义:?特征向量被施以线性变换AAA只会使向量伸长或缩短,而其方向不会改变

NNN阶矩阵AAA 可分解成如下形式:——称为 对角化
A=QΛQ?1A = Q \Lambda Q^{-1} A=QΛQ?1
这里的:QQQ是由特征向量构成的矩阵;Λ\LambdaΛ是由特征值构成对角矩阵,与QQQ的特征向量一一对应。

好了,现在只有方阵才能做特征值分解,那不是方阵怎么办?也能分解成这种形式吗?是的。

奇异值分解

接下来就是奇异值分解(Singular Value Decomposition)

假设有矩阵 Am×nA_{m \times n}Am×n?

Step1: 转置相乘凑方阵

定理1:矩阵转置相乘一定得到对称矩阵

(很容易证明:假设B=ATAB=A^{T}AB=ATA,则BT=(ATA)T=ATA=BB^T = (A^T A)^T = A^T A = BBT=(ATA)T=ATA=B,得证)

所以有:
B=AAT?是m×m阶方阵C=ATA?是n×n阶方阵(1)B = AA^T \Rightarrow \text{是} m \times m \text{阶方阵} \\ C = A^TA \Rightarrow \text{是} n \times n \text{阶方阵} \tag{1} B=AAT?m×m阶方阵C=ATA?n×n阶方阵(1)

Step2: 对称矩阵对角化

定理2:设AAAnnn阶实对称矩阵,则必有正交矩阵PPP,使P?1AP=PTAP=ΛP^{-1}AP=P^TAP=\LambdaP?1AP=PTAP=Λ,其中Λ\LambdaΛ是以AAAnnn个特征值为对角元的对角矩阵。(同济第六版线性代数,第5章第4节,P128页定理5)

即,实对称矩阵一定可以对角化,一定可以写成A=PΛP?1A=P\Lambda P^{-1}A=PΛP?1的形式,而且PPP还可以单位化成正交矩阵的形式。假设PPP单位化后的正交矩阵为QQQ,正交矩阵满足QT=Q?1Q^T=Q^{-1}QT=Q?1,所以有:A=QΛQ?1=QΛQTA=Q\Lambda Q^{-1} = Q\Lambda Q^{T}A=QΛQ?1=QΛQT

所以有:
Bm×m=AAT=UΛU?1=Um×mΛm×mUm×mTCn×n=ATA=VΛV?1=Vn×nΛn×nVn×nT(2)B_{m\times m} = AA^T = U \Lambda U^{-1} = U_{m\times m} \Lambda_{m\times m} U_{m\times m}^{T} \\ C_{n\times n} = A^TA = V \Lambda V^{-1} = V_{n\times n} \Lambda_{n\times n} V_{n\times n}^T \tag{2} Bm×m?=AAT=UΛU?1=Um×m?Λm×m?Um×mT?Cn×n?=ATA=VΛV?1=Vn×n?Λn×n?Vn×nT?(2)
其中UUUm×mm \times mm×m阶的正交矩阵,VVVn×nn \times nn×n阶的正交矩阵,Λ\LambdaΛ是特征值组成的对角矩阵。

Step3:特征值开平方根得奇异值

实数 和 矩阵 的类比:

实数 矩阵
aaa ?\Longleftrightarrow? AAA
b=a2b = a^2b=a2 ?\Longleftrightarrow? B=AAT或ATAB = AA^T 或 A^TAB=AATATA
a=±ba = \pm \sqrt{b}a=±b ? ?\Longleftrightarrow? A=对B进行平方根分解A=对B进行平方根分解A=B
b=u2λb=u^2\lambdab=u2λ ?\Longleftrightarrow? B=UΛUTB = U \Lambda U^{T}B=UΛUT
a=±u2λ=±uλa=\pm \sqrt{u^2\lambda}=\pm u \sqrt{\lambda}a=±u2λ ?=±uλ ? ?\Longleftrightarrow? A=U?对Λ进行平方根分解A=U\cdot 对\Lambda进行平方根分解A=U?Λ

Λ\LambdaΛ 里的特征值是B,CB,CBC的特征值,而B,CB,CBC类似于是AAA的“平方”,那我想要得到AAA的特征值,就相当于要对Λ\LambdaΛ“开平方”,即要找到Σ\SigmaΣ,使得:
Λ=ΣTΣ\Lambda = \Sigma^T\Sigma Λ=ΣTΣ
这其实就是矩阵的Cholesky分解法,又叫平方根分解法

定理:若A∈Rn×nA \in R^{n \times n}ARn×n对称正定,则存在一个对角元为正数的下三角矩阵L∈Rn×nL \in R^{n \times n}LRn×n,使得A=LLTA=LL^TA=LLT成立。

(如果AAA是半正定的(semi-definite),也可以分解,不过这时候LLL就不唯一了。)

对角矩阵Λ\LambdaΛ显然是可以分解的,并且分解还不唯一,但是奇异值我们只取正的:

[λ1λ2λ3?]=[λ1λ2λ3?][λ1λ2λ3?]\left[ \begin{matrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \lambda_3 & \\ & & & \ddots \end{matrix} \right] = \left[ \begin{matrix} \sqrt{\lambda_1} & & & \\ & \sqrt{\lambda_2} & & \\ & & \sqrt{\lambda_3} & \\ & & & \ddots \end{matrix} \right] \left[ \begin{matrix} \sqrt{\lambda_1} & & & \\ & \sqrt{\lambda_2} & & \\ & & \sqrt{\lambda_3} & \\ & & & \ddots \end{matrix} \right] ?????λ1??λ2??λ3?????????=?????λ1? ??λ2? ??λ3? ??????????????λ1? ??λ2? ??λ3? ?????????

所以我们得到了:
Bm×m=AAT=UΛU?1=UΛUT=Um×mΣm×nTΣn×mUm×mTCn×n=ATA=VΛV?1=VΛVT=Vn×nΣn×mΣm×nTVn×nT(3)B_{m\times m} = AA^T = U \Lambda U^{-1} = U \Lambda U^{T} = U_{m\times m} \Sigma_{m\times n}^T \Sigma_{n\times m} U_{m\times m}^{T}\\ C_{n\times n} = A^TA = V \Lambda V^{-1} = V \Lambda V^T = V_{n\times n} \Sigma_{n\times m} \Sigma_{m\times n}^T V_{n\times n}^T \tag{3} Bm×m?=AAT=UΛU?1=UΛUT=Um×m?Σm×nT?Σn×m?Um×mT?Cn×n?=ATA=VΛV?1=VΛVT=Vn×n?Σn×m?Σm×nT?Vn×nT?(3)

Step4:插入正交矩阵凑形式?

UUUVVV是正交矩阵,满足UTU=IU^TU=IUTU=IVTV=IV^TV = IVTV=I,所以有:
Bm×m=AAT=UΛU?1=UΛUT=UΣTΣUT=(Um×mΣm×nTVn×nT)(Vn×nΣn×mUm×mT)Cn×n=ATA=VΛV?1=VΛVT=VΣΣTVT=(Vn×nΣn×mUm×mT)(Um×mΣm×nTVn×nT)(4)B_{m\times m} = AA^T = U \Lambda U^{-1} = U \Lambda U^{T} = U \Sigma^T \Sigma U^{T} = (U_{m\times m} \Sigma_{m\times n}^T V_{n\times n}^T) (V_{n\times n} \Sigma_{n\times m} U_{m\times m}^{T}) \\ C_{n\times n} = A^TA = V \Lambda V^{-1} = V \Lambda V^T = V \Sigma \Sigma^T V^T = (V_{n\times n} \Sigma_{n\times m} U_{m\times m}^T) (U_{m\times m} \Sigma_{m\times n}^T V_{n\times n}^T) \tag{4} Bm×m?=AAT=UΛU?1=UΛUT=UΣTΣUT=(Um×m?Σm×nT?Vn×nT?)(Vn×n?Σn×m?Um×mT?)Cn×n?=ATA=VΛV?1=VΛVT=VΣΣTVT=(Vn×n?Σn×m?Um×mT?)(Um×m?Σm×nT?Vn×nT?)(4)
最后得到上面两个式子,由此可以看出:第一个式子左边括号即为AAA,右边括号即为ATA^TAT;第二个式子左边括号ATA^TAT,右边括号为AAA。所以我们得到的SVD分解为:
Am×n=Um×mΣm×nTVn×nTA_{m \times n} = U_{m\times m} \Sigma_{m\times n}^T V_{n\times n}^T Am×n?=Um×m?Σm×nT?Vn×nT?
我们称 UUU 为左奇异矩阵,VVV 为右奇异矩阵。

(1)~(4)就是四个步骤的变化过程。

——完——