本文主要是记录个人的理解,关于数学定理部分可能不太严谨。如果问题,欢迎指正!
其它更多关于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:设AAA为nnn阶实对称矩阵,则必有正交矩阵PPP,使P?1AP=PTAP=ΛP^{-1}AP=P^TAP=\LambdaP?1AP=PTAP=Λ,其中Λ\LambdaΛ是以AAA的nnn个特征值为对角元的对角矩阵。(同济第六版线性代数,第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)
其中UUU是m×mm \times mm×m阶的正交矩阵,VVV是n×nn \times nn×n阶的正交矩阵,Λ\LambdaΛ是特征值组成的对角矩阵。
Step3:特征值开平方根得奇异值
实数 和 矩阵 的类比:
实数 矩阵 aaa ?\Longleftrightarrow? AAA b=a2b = a^2b=a2 ?\Longleftrightarrow? B=AAT或ATAB = AA^T 或 A^TAB=AAT或ATA 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,CB,C的特征值,而B,CB,CB,C类似于是AAA的“平方”,那我想要得到AAA的特征值,就相当于要对Λ\LambdaΛ“开平方”,即要找到Σ\SigmaΣ,使得:
Λ=ΣTΣ\Lambda = \Sigma^T\Sigma Λ=ΣTΣ
这其实就是矩阵的Cholesky分解法,又叫平方根分解法:
定理:若A∈Rn×nA \in R^{n \times n}A∈Rn×n对称正定,则存在一个对角元为正数的下三角矩阵L∈Rn×nL \in R^{n \times n}L∈Rn×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:插入正交矩阵凑形式?
UUU和VVV是正交矩阵,满足UTU=IU^TU=IUTU=I,VTV=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)就是四个步骤的变化过程。
——完——