本文主要是记录个人的理解,关于数学定理部分可能不太严谨。如果问题,欢迎指正!
其它更多关于SVD的知识,可参考:
特征值分解
首先,从特征值分解说起。对于 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ΛQ−1
这里的: 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=AAT⇒是m×m阶方阵C=ATA⇒是n×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 P−1AP=PTAP=Λ,其中 Λ \Lambda Λ是以 A A A的 n n n个特征值为对角元的对角矩阵。(同济第六版线性代数,第5章第4节,P128页定理5)
即,实对称矩阵一定可以对角化,一定可以写成 A = P Λ P − 1 A=P\Lambda P^{-1} A=PΛP−1的形式,而且 P P P还可以单位化成正交矩阵的形式。假设 P P P单位化后的正交矩阵为 Q Q Q,正交矩阵满足 Q T = Q − 1 Q^T=Q^{-1} QT=Q−1,所以有: A = Q Λ Q − 1 = Q Λ Q T A=Q\Lambda Q^{-1} = Q\Lambda Q^{T} A=QΛQ−1=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ΛU−1=Um×mΛm×mUm×mTCn×n=ATA=VΛV−1=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=AAT或ATA 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 B,C的特征值,而 B , C B,C B,C类似于是 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} A∈Rn×n对称正定,则存在一个对角元为正数的下三角矩阵 L ∈ R n × n L \in R^{n \times n} L∈Rn×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Λ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)
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Λ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)
最后得到上面两个式子,由此可以看出:第一个式子左边括号即为 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)就是四个步骤的变化过程。
——完——