目录
- 30.奇异值分解
- 打赏
30.奇异值分解
奇异值分解(简称 S V D SVD SVD分解)可以将一个比较复杂的矩阵用更小更简单的几个子矩阵相乘来表示,这些小矩阵描述的都是矩阵的重要的特性。奇异值分解在图形降噪、推荐系统中都有很重要的应用。
对于任意矩阵 A A A都有 A = U Σ V T A = U \Sigma V^T A=UΣVT,其中 U , V U , V U,V为正交矩阵,当 A A A为方阵时, Σ \Sigma Σ为对角阵且其主对角线元素即为 A A A的奇异值
由主轴定理可知对称矩阵的奇异值分解为 Q Λ Q T Q \Lambda Q^T QΛQT,此时 U = V = Q U = V = Q U=V=Q
设 A A A是一个 m m m行 n n n列的矩阵且秩为 r r r,可以将 A A A视为一个线性变换且能把行空间中的向量 v ⃗ \vec{v} v变为列空间中的 u ⃗ \vec{u} u,即 u ⃗ = A v ⃗ \vec{u} = A \vec{v} u=Av
考虑 A A A行空间的一组标准正交基,经过 A A A的变换后不一定能得到列空间的一组正交基,因此那组满足条件的标准正交基尤为重要,再考虑将变换后的每个向量都视为一个单位向量的倍数,即 A v ⃗ = σ u ⃗ A \vec{v} = \sigma \vec{u} Av=σu(其中 v ⃗ , u ⃗ \vec{v} , \vec{u} v,u均为单位向量),最后将上述过程用矩阵表示得 A [ v ⃗ 1 v ⃗ 2 ⋯ v ⃗ r ] = [ u ⃗ 1 u ⃗ 2 ⋯ u ⃗ r ] [ σ 1 0 ⋯ 0 0 σ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ σ r ] A \begin{bmatrix} \vec{v}_1 & \vec{v}_2 & \cdots & \vec{v}_r \end{bmatrix} = \begin{bmatrix} \vec{u}_1 & \vec{u}_2 & \cdots & \vec{u}_r \end{bmatrix} \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_r \end{bmatrix} A[v1v2⋯vr]=[u1u2⋯ur] σ10⋮00σ2⋮0⋯⋯⋱⋯00⋮σr ,即 A V = U Σ A V = U \Sigma AV=UΣ
-
当 A A A是可逆矩阵时, U , V U , V U,V为正交矩阵,所以 A = U Σ V − 1 = U Σ V T A = U \Sigma V^{-1} = U \Sigma V^T A=UΣV−1=UΣVT
接下来求解 U , V U , V U,V,先考虑消去 U U U,由上一讲可知 A T A A^T A ATA至少是半正定的,这说明它具有很好的性质,接下来表示出 A T A A^T A ATA,有 A T A = V Σ T U T U Σ V T = V Σ 2 V T = V [ σ 1 2 0 ⋯ 0 0 σ 2 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ σ r 2 ] V T A^T A = V \Sigma^T U^T U \Sigma V^T = V \Sigma^2 V^T = V \begin{bmatrix} \sigma_1^2 & 0 & \cdots & 0 \\ 0 & \sigma_2^2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_r^2 \end{bmatrix} V^T ATA=VΣTUTUΣVT=VΣ2VT=V σ120⋮00σ22⋮0⋯⋯⋱⋯00⋮σr2 VT
因为 A T A A^T A ATA是对称矩阵,又 A T A A^T A ATA的特征值非负且 Σ 2 \Sigma^2 Σ2的主对角线元素为平方也非负,所以 V Σ 2 V T V \Sigma^2 V^T VΣ2VT可以被视为 Q Λ Q T Q \Lambda Q^T QΛQT,这样就求出了 V , Σ V , \Sigma V,Σ,即 v ⃗ 1 , v ⃗ 2 , ⋯ , v ⃗ r \vec{v}_1 , \vec{v}_2 , \cdots , \vec{v}_r v1,v2,⋯,vr分别为 A T A A^T A ATA的标准正交特征向量, σ 1 , σ 2 , ⋯ , σ r \sigma_1 , \sigma_2 , \cdots , \sigma_r σ1,σ2,⋯,σr分别为 A T A A^T A ATA特征值的平方根
同理可以由 A A T A A^T AAT得到 U U U,即 u ⃗ 1 , u ⃗ 2 , ⋯ , u ⃗ r \vec{u}_1 , \vec{u}_2 , \cdots , \vec{u}_r u1,u2,⋯,ur分别为 A A T A A^T AAT的标准正交特征向量
例: 求 A = [ 4 4 − 3 3 ] A = \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} A=[4−343]的 S V D SVD SVD分解
有 A T A = [ 4 − 3 4 3 ] [ 4 4 − 3 3 ] = [ 25 7 7 25 ] A^T A = \begin{bmatrix} 4 & -3 \\ 4 & 3 \end{bmatrix} \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} = \begin{bmatrix} 25 & 7 \\ 7 & 25 \end{bmatrix} ATA=[44−33][4−343]=[257725],解得其特征值为 32 , 18 32 , 18 32,18,对应特征向量 [ 1 1 ] , [ 1 − 1 ] \begin{bmatrix} 1 \\ 1 \end{bmatrix} , \begin{bmatrix} 1 \\ -1 \end{bmatrix} [11],[1−1]
标准化后得到 [ 1 2 1 2 ] , [ 1 2 − 1 2 ] \begin{bmatrix} 1\over{\sqrt{2}} \\ 1\over{\sqrt{2}} \end{bmatrix} , \begin{bmatrix} 1\over{\sqrt{2}} \\ -1\over{\sqrt{2}} \end{bmatrix} [2121],[212−1],所以 Σ = [ 4 2 0 0 3 2 ] , V T = [ 1 2 1 2 1 2 − 1 2 ] \Sigma = \begin{bmatrix} 4\sqrt{2} & 0 \\ 0 & 3\sqrt{2} \end{bmatrix} , V^T = \begin{bmatrix} 1\over{\sqrt{2}} & 1\over{\sqrt{2}} \\ 1\over{\sqrt{2}} & -1\over{\sqrt{2}} \end{bmatrix} Σ=[420032],VT=[2121212−1]
再用和求 V V V类似的方法求得 U = [ 1 0 0 1 ] U = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} U=[1001],但是此时 U Σ V T = [ 4 4 3 − 3 ] ≠ A U \Sigma V^T = \begin{bmatrix} 4 & 4 \\ 3 & -3 \end{bmatrix} \ne A UΣVT=[434−3]=A
这是因为在求 u ⃗ \vec{u} u时没有考虑已经求得的对应 v ⃗ \vec{v} v,而 u ⃗ \vec{u} u本应该由对应 v ⃗ \vec{v} v得到,所以应该用已经求得的 V V V和 Σ \Sigma Σ求出 U U U
比如把该例子中 U U U的第二个列向量换为 [ 0 − 1 ] \begin{bmatrix} 0 \\ -1 \end{bmatrix} [0−1],仍然可以对应特征值且保持标准正交,还满足 U Σ V T = A U \Sigma V^T = A UΣVT=A
-
当 A A A是奇异矩阵时,应该考虑矩阵的零空间和左零空间,它们分别和行空间、列空间正交,因此分别把它们的一组标准正交基加入 V , U V , U V,U,这样 U , V U , V U,V又成为了正交矩阵,并且零空间和左零空间基中的元素对应的 σ = 0 \sigma = 0 σ=0
即 A [ v ⃗ 1 ⋯ v ⃗ r v ⃗ r + 1 ⋯ v ⃗ n ] = [ u ⃗ 1 ⋯ u ⃗ r u ⃗ r + 1 ⋯ u ⃗ n ] [ σ 1 ⋯ 0 0 ⋯ 0 ⋮ ⋱ ⋮ ⋮ ⋯ ⋮ 0 ⋯ σ r 0 ⋯ 0 0 ⋯ 0 0 ⋯ 0 ⋮ ⋯ ⋮ ⋮ ⋱ ⋮ 0 ⋯ 0 0 ⋯ 0 ] A \begin{bmatrix} \vec{v}_1 & \cdots & \vec{v}_r & \vec{v}_{r + 1} & \cdots & \vec{v}_n \end{bmatrix} = \begin{bmatrix} \vec{u}_1 & \cdots & \vec{u}_r & \vec{u}_{r + 1} & \cdots & \vec{u}_n \end{bmatrix} \begin{bmatrix} \sigma_1 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \ddots & \vdots & \vdots & \cdots & \vdots \\ 0 & \cdots & \sigma_r & 0 & \cdots & 0 \\ 0 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \cdots & \vdots & \vdots & \ddots & \vdots \\ 0 & \cdots & 0 & 0 & \cdots & 0 \end{bmatrix} A[v1⋯vrvr+1⋯vn]=[u1⋯urur+1⋯un] σ1⋮00⋮0⋯⋱⋯⋯⋯⋯0⋮σr0⋮00⋮00⋮0⋯⋯⋯⋯⋱⋯0⋮00⋮0
这样也有 A = U Σ V T A = U \Sigma V^T A=UΣVT,求 U , V U , V U,V的方法和 A A A为可逆矩阵时一致
-
当 A A A不是方阵时,考虑了零空间和左零空间后, U , V U , V U,V的维数分别为 m , n m , n m,n,不再相等,所以 Σ \Sigma Σ会是一个 m m m行 n n n列的矩阵
但是仍然有 A = U Σ V T A = U \Sigma V^T A=UΣVT,并且求 U , V U , V U,V的方法还是一样的
打赏
制作不易,若有帮助,欢迎打赏!