svd分解的深入理解


svd指的是奇異值分解,也就是對奇異矩陣的分解,對於可逆矩陣,可以進行特征值分解。

 

要想理解svd,需要先理解四個基本子空間,即行空間,列空間,零空間,左零空間。對於矩陣A,其行空間是由行向量線性組合而成的空間,也即由行向量張成的空間,同樣的,列空間是由矩陣的列向量線性組合生成的空間。而零空間是Ax=0的解空間,Ax可以看成是矩陣A的所有的行向量分別和x做內積,而生成的向量是零向量,所以每一個行向量都和x是正交的,所以x所在的空間與行空間是正交的,也就是零空間與行空間正交。當零空間不為空時,也就是Ax=0中的x可以取到不為0的解時,表明A的各個列向量之間線性相關。

 

svd就是在矩陣A的行空間中尋找相互正交的行向量,然后經過矩陣A變換到列空間之后,生成的列向量同樣是相互正交的。

 

對於$A=U \Sigma V^T$,當矩陣A的秩小於列數時,V中的各個列向量不僅有來自於A的行空間的,也有來自於A的零空間中的,此時來自於行空間的向量一定和來自於零空間中的向量正交,因為行空間本身就和零空間正交,當A對零空間中的向量做變換后,生成的只有零向量,所以來自於零空間的向量並沒有起到作用,當列滿秩,行不滿秩時,此時列向量線性無關,在零空間中只有零向量,所以V中的列向量都來自於行空間,而且經過矩陣A變換之后生成的向量必然在A的列空間中,因為相當於是將A的列向量做了線性組合,所以生成的向量必然在A的列空間中。

 

好了,假設在矩陣A(m*n)的秩是k,那么在行空間中可以找到k個相互正交的向量,在零空間中可以找到 n-k 個相互正交的向量,即:

$$V=[v_1 v_2 ... v_k | v_{k+1} ... v_n]$$

對於行空間中的k個向量,經過A變換之后,生成了k個列向量,而且這k個列向量必然在A的列空間中,對於后面 n-k 個零空間中的向量,經過A變換之后都變成了零向量,消失不見了,所以只需要關心行空間中前k個向量即可。對於其中第i個向量$v_i$,有$Av_i=\sigma_i u_i$,$Av_j=\sigma_j u_j$,其中$u_i$,$u_j$是變換之后的向量,都在A的列空間中,且相互正交,即:

$$\begin{align*}(Av_i)^TAv_j=0 \\ {v_i}^TA^TAv_j=0 \end{align*}$$

其中,$A^TA$是對稱矩陣,其特征向量相互正交,所以只需要取$A^TAv_j=\lambda_j v_j, A^TAv_i=\lambda_i v_i$,則${v_i}^TA^TAv_j={v_i}^T\lambda_j v_j=0$

利用這個條件,可以求出$v_i$,$v_j$都是$A^TA$的特征向量,$\lambda_i, \lambda_j$是其特征值,同樣的,可以得到$u_i$,$u_j$是$AA^T$的特征向量。

 

svd可以用來求解廣義逆矩陣,要解廣義逆矩陣,要知道什么是左逆矩陣和右逆矩陣。若矩陣A是列滿秩的,那么列向量都是線性無關的,列向量線性組合成零向量的組合系數必須全部為0,也即零空間中只有零向量,此時若矩陣A行不滿秩,則$AA^T$是一個奇異矩陣,而$A^TA$是可逆矩陣,其逆矩陣為$(A^TA)^{-1}$,所以$(A^TA)^{-1}A^TA=I$,$(A^TA)^{-1}A^T$就是A的左逆矩陣,因為在A左邊。同樣的,當矩陣A是行滿秩的時候,$AA^T$是可逆矩陣,所以$AA^T(AA^T)^{-1}=I$,$A^T(AA^T)^{-1}$就是A的右逆矩陣。那么當矩陣A既不是列滿秩又不是行滿秩時,顯然此時不管是$A^TA$還是$AA^T$都是奇異矩陣,所以不存在左逆或者右逆,但是此時將行空間中的向量x做Ax變換后成為列空間中的向量b=Ax,將行空間中另一向量y做Ay變換后成為列空間中的向量c=Ay,若$x \ne y$,則$Ax \ne Ay$(可以用反證法證明),說明x與Ax是一一對應的,也就是說存在某種可逆變換,可以將b再變回成x,將c再變回成y。但是若x在零空間中,那么做Ax變換之后得到Ax=0,就像扔進黑洞一樣了,是無法將零向量再還原成x的。所以當行列都不滿秩時,只能將行空間中的向量還原,而對於零空間中的向量無能為力,若行不滿秩列滿秩時,零空間中一無所有,矩陣的秩等於列數n,所有的n維向量都在行空間中,所以存在左逆矩陣可將Ax還原回去,同樣右逆矩陣也可如是理解。

 

當行列都不滿秩時,既然可以將行空間中的向量經過Ax變換之后再還原回來,那么就存在一個可逆變換$A^+$,使得$A^+Ax=x$,之所以用加號,是因為只有當x在A的行空間中時才成立,若x在A的零空間中時則無能為力了,因為此時Ax=0。好了,如何來求$A^+$呢?此時便可利用svd了,將矩陣A寫成$A=U \Sigma V^T$,其中V的各個列向量不僅來自A的行空間,還可能來自A的零空間,若行空間的秩為r,矩陣A是m行n列的,那么每個行向量的維度是n維,V中有r個列向量來自A的行空間,有n-r個列向量來自A的零空間,U中有r個列向量來自A的列空間,有m-r個列向量來自A的左零空間,而$\Sigma$中只有對角線上前r個奇異值是非零的,其余部分都是0,$U \Sigma$將U中來自A的左零空間的m-r個列向量變成了0,之后再乘以$V^T$,又將V中來自A的零空間中的n-r個列向量變成了0,最后生成的矩陣是由秩為r的滿秩矩陣和m-r行0與n-r列0補足的矩陣,因此A可由此分解為一個滿秩矩陣。那么$A^+=(U \Sigma V^T)^+=V \Sigma^+ U^T$,其中$\Sigma \Sigma^+=I$

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM