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


特征值分解

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

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

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

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

奇异值分解

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

假设有矩阵 A m × n A_{m \times n} Am×n

Step1: 转置相乘凑方阵

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

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

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

Step2: 对称矩阵对角化

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

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

所以有:
B m × m = A A T = U Λ U − 1 = U m × m Λ m × m U m × m T C n × n = A T A = V Λ V − 1 = V n × n Λ n × n V n × n T (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ΛU1=Um×mΛm×mUm×mTCn×n=ATA=VΛV1=Vn×nΛn×nVn×nT(2)
其中 U U U m × m m \times m m×m阶的正交矩阵, V V V n × n n \times n n×n阶的正交矩阵, Λ \Lambda Λ是特征值组成的对角矩阵。

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

实数 和 矩阵 的类比:

实数 矩阵
a a a ⟺ \Longleftrightarrow A A A
b = a 2 b = a^2 b=a2 ⟺ \Longleftrightarrow B = A A T 或 A T A B = AA^T 或 A^TA B=AATATA
a = ± b a = \pm \sqrt{b} a=±b ⟺ \Longleftrightarrow A = 对 B 进 行 平 方 根 分 解 A=对B进行平方根分解 A=B
b = u 2 λ b=u^2\lambda b=u2λ ⟺ \Longleftrightarrow B = U Λ U T B = U \Lambda U^{T} B=UΛUT
a = ± u 2 λ = ± 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 , C B,C BC的特征值,而 B , C B,C BC类似于是 A A A的“平方”,那我想要得到 A A A的特征值,就相当于要对 Λ \Lambda Λ“开平方”,即要找到 Σ \Sigma Σ,使得:
Λ = Σ T Σ \Lambda = \Sigma^T\Sigma Λ=ΣTΣ
这其实就是矩阵的Cholesky分解法,又叫平方根分解法

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

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

对角矩阵 Λ \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

所以我们得到了:
B m × m = A A T = U Λ U − 1 = U Λ U T = U m × m Σ m × n T Σ n × m U m × m T C n × n = A T A = V Λ V − 1 = V Λ V T = V n × n Σ n × m Σ m × n T V n × n T (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ΛU1=UΛUT=Um×mΣm×nTΣn×mUm×mTCn×n=ATA=VΛV1=VΛVT=Vn×nΣn×mΣm×nTVn×nT(3)

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

U U U V V V是正交矩阵,满足 U T U = I U^TU=I UTU=I V T V = I V^TV = I VTV=I,所以有:
B m × m = A A T = U Λ U − 1 = U Λ U T = U Σ T Σ U T = ( U m × m Σ m × n T V n × n T ) ( V n × n Σ n × m U m × m T ) C n × n = A T A = V Λ V − 1 = V Λ V T = V Σ Σ T V T = ( V n × n Σ n × m U m × m T ) ( U m × m Σ m × n T V n × n T ) (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ΛU1=UΛUT=UΣTΣUT=(Um×mΣm×nTVn×nT)(Vn×nΣn×mUm×mT)Cn×n=ATA=VΛV1=VΛVT=VΣΣTVT=(Vn×nΣn×mUm×mT)(Um×mΣm×nTVn×nT)(4)
最后得到上面两个式子,由此可以看出:第一个式子左边括号即为 A A A,右边括号即为 A T A^T AT;第二个式子左边括号 A T A^T AT,右边括号为 A A A。所以我们得到的SVD分解为:
A m × n = U m × m Σ m × n T V n × n T A_{m \times n} = U_{m\times m} \Sigma_{m\times n}^T V_{n\times n}^T Am×n=Um×mΣm×nTVn×nT
我们称 U U U 为左奇异矩阵, V V V 为右奇异矩阵。

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

——完——

猜你喜欢

转载自blog.csdn.net/qq_37851620/article/details/103570765
SVD
今日推荐