奇异值分解(SVD)

奇异值分解(SVD)

特征值与特征向量

对于一个实对称矩阵\(A\in R^{n\times n}\),如果存在\(x\in R^n\)\(\lambda \in R\)满足:

\[\begin{align} Ax=\lambda x \end{align} \]

则我们说\(\lambda\)是矩阵\(A\)的一个特征值,而\(x\)是矩阵\(A\)的特征值\(\lambda\)所对应的特征向量。可以看出\(A\)的特征向量\(x\)乘以矩阵\(A\),即\(Ax\),不改变特征向量的方向。

特别的\(A^kx=\lambda^kx\),对于任意\(k=1,2,3,\dots\),同时\(A^{-1}x=\lambda^{-1}x\),假设\(\lambda\ne0\)

特征值和特征向量的四个属性

  • 矩阵\(A\)的迹等于其所有特征值的和,即\(A_{11}+A_{22}+\dots+A_{nn}=\lambda_1+\lambda_2+\dots+\lambda_n\)
  • 矩阵\(A\)的行列式等于所有特征值的乘积,即\(|A|=\lambda_1\lambda_2\dots\lambda_n\)
  • 对称矩阵的所有特征值都是实数
  • 若矩阵\(A\)的特征值都不相同,则其特征向量之间相互正交。

求解特征值与特征向量

由(1)式得:

\[\begin{align} \lambda x-Ax&=0\\ (\lambda E-A)x&=0 \end{align} \]

令其行列式为\(0\)。所以可得;

\[\begin{align} |\lambda E-A|=0 \end{align} \]

求解上式可得到矩阵\(A\)所有得特征值。将求得的特征值\(\lambda_i\)一个一个的带入到(3)式,求解得到其对应的一个解\(x_i\),即\(\lambda_i\)对应的特征向量\(x_i\)

相似矩阵

对于任意的可逆矩阵\(B\),\(BAB^{-1}\)的特征值总是与\(A\)矩阵相同。且\(BAB^{-1}\)的特征向量为\(Bx\)

\[\begin{align} (BAB^{-1})(Bx)=BAx=B\lambda x=\lambda(Bx) \end{align} \]

所以我们说矩阵\(BAB^{-1}\)与矩阵\(A\)相似,即有相同的特征值。

特征分解

假设矩阵\(A\)\(n\)的独立的特征向量\(\boldsymbol{x_i}\)。则有:

\[\begin{align} A\left[\begin{matrix} \\ \boldsymbol{x_1}\dots \boldsymbol{x_n}\\ \\ \end{matrix}\right]=\left[\begin{matrix} \\ A\boldsymbol{x_1}\dots A\boldsymbol{x_n}\\ \\ \end{matrix}\right]=\left[\begin{matrix} \\ \lambda_1\boldsymbol{x_1}\dots \lambda_n\boldsymbol{x_n}\\ \\ \end{matrix}\right]=\left[\begin{matrix} \\ \boldsymbol{x_1}\dots \boldsymbol{x_n}\\ \\ \end{matrix}\right]\left[\begin{matrix} \lambda_1\\ &\ddots\\ &&\lambda_n \end{matrix}\right] \end{align} \]

\(AX=X\Lambda\),也就是说:

\[\begin{align} A=X\Lambda X^{-1} \end{align} \]

当我们知道特征值和特征向量后,就可以简单的计算矩阵\(A\)\(k\)次幂。\(A^2=X\Lambda X^{-1}\cdot X\Lambda X^{-1}=X\Lambda^2X^{-1}\)

若矩阵\(A\)是实对称矩阵,一般我们会把\(A\)\(n\)个特征向量标准化,使其满足\(||x_i||_2=1\),此时\(A\)\(n\)个特征向量为标准正交基,满足\(X^TX=E\),即\(X^T=X^{-1}\),也就是说\(X\)为酉矩阵。此时:

\[\begin{align} A=X\Lambda X^T \end{align} \]

奇异值分解

上述特征值分解只有当\(A\)必须是方阵。如果\(A\)不是方阵则需要用奇异值分解的方法。

对于奇异值分解,我们需要两个奇异值向量的集合\(\boldsymbol{u}, \boldsymbol{v}\)。对于一个矩阵\(A\in R^{m\times n}\),有\(n\)个正交的右奇异值向量\(\boldsymbol{v_1},\dots,\boldsymbol{v_n}\in R^n\)。有\(m\)个正交的左奇异值向量\(\boldsymbol{u_1,\dots,u_m}\in R^m\)。对于奇异值向量其满足:

\[\begin{align} A\boldsymbol{v}=\sigma\boldsymbol{u} \end{align} \]

且:

\[\begin{align} A\boldsymbol{v_1}=\sigma_1\boldsymbol{u_1}&&\dots &&A\boldsymbol{v_r}=\sigma\boldsymbol{u_r}\\ A\boldsymbol{v_{r+1}}=0&&\dots &&A\boldsymbol{v_n}=0 \end{align} \]

其中\(r\)为矩阵\(A\)的质。也就是说矩阵\(A\)只有\(r\)个正奇异值。其矩阵表示形式如下:

\[\begin{align} AV=U\Sigma&&A\left[\begin{matrix} \\ \boldsymbol{v_1}\dots \boldsymbol{v_r}\dots \boldsymbol{v_n}\\ \\ \end{matrix}\right]=\left[\begin{matrix} \\ \boldsymbol{u_1}\dots \boldsymbol{u_r}\dots \boldsymbol{u_n}\\ \\ \end{matrix}\right]\left[\begin{matrix} \sigma_1&&&0\\ &\ddots&&\vdots\\ &&\sigma_r\\ 0&\dots&&0 \end{matrix}\right] \end{align} \]

因为\(V\)为酉矩阵,因此又可表示为:

\[\begin{align} A=U\Sigma V^T=\sigma_1\boldsymbol{u_1}\boldsymbol{v_1^T}+\dots+\sigma_r\boldsymbol{u_r}\boldsymbol{v_r^T} \end{align} \]

上述式子将矩阵\(A\)分解为\(r\)个质为\(1\)的矩阵的和。

奇异值分解的重要性

对于其他矩阵分解法:\(A=LU,A=QR,S=Q\Lambda Q^T\),它们都将矩阵\(A\)分解为质为\(1\)的矩阵的和,但为什么奇异值分解重要?

对于所有分解方法,奇异值分解所得到的前\(k\)个质为\(1\)的矩阵的和最能够表达原矩阵\(A\)。即:

\[\begin{align} \text{If B has rank k than}\; ||A-A_k||\le||A-B||. \end{align} \]

 对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的\(k\)个的奇异值和对应的左右奇异向量来近似描述矩阵。

奇异值分解直接求解

我们的目标是\(A=U\Sigma V^T\)。我们需要找到两个奇异值向量集合\(\boldsymbol{u},\boldsymbol{v}\)。一种方式是去形成两个对称矩阵\(AA^T,A^TA\)

\[\begin{align} AA^T=(U\Sigma V^T)(U\Sigma V^T)^T=U\Sigma V^T V\Sigma U^T=U\Sigma^2U^T\\ A^TA=(U\Sigma V^T)^T(U\Sigma V^T)= V\Sigma U^TU\Sigma V^T=V\Sigma^2V^T\\ \end{align} \]

可以发现:

  • \(V\)\(A^TA\)的正交特征向量
  • \(U\)\(AA^T\)的正交特征向量
  • \(\sigma_1^2,\dots,\sigma^2_r\)\(AA^T\)\(A^TA\)的特征值

因为\(A\boldsymbol{v_i}=\sigma_i\boldsymbol{u_i}\)还需要确定特征值\(\sigma_i\)的符号,若假设\(\sigma_i=+\sqrt{\lambda_i}\),也就说需要确定\(\boldsymbol{u_i}\)的符号:

在求得\(A^TA\)的正交特征向量和特征值后,可知:

\[\begin{align} A^TA\boldsymbol{v_k}&=\sigma_k^2\boldsymbol{v_k}\\ \end{align} \]

而由\(A\boldsymbol{v_i}=\sigma_i\boldsymbol{u_i}\)可得:

\[\begin{align} \boldsymbol{u_k}=\frac{A\boldsymbol{v_k}}{\sigma_k}\; \text{for}\;k=1,\dots,r \end{align} \]

证明\(\boldsymbol{u_k}\)\(AA^T\)的特征向量:

\[\begin{align} AA^T\boldsymbol{u_k}=AA^T\frac{A\boldsymbol{v_k}}{\sigma_k}=A\frac{A^TAv_k}{\sigma_k}=A\frac{\sigma_k^2\boldsymbol{v_k}}{\sigma_k}= \sigma_kA\boldsymbol{v_k}=\sigma_k\sigma_k\boldsymbol{u_k}=\sigma^2_k\boldsymbol{u_k} \end{align} \]

证明\(\boldsymbol{u}\)也是正交矩阵:

\[\begin{align} \boldsymbol{u_j^T}\boldsymbol{u_k}=(\frac{A\boldsymbol{v_j}}{\sigma_j})^T\frac{A\boldsymbol{v_k}}{\sigma_k}= \frac{\boldsymbol{v_j^T}A^TA\boldsymbol{v_k}}{\sigma_j\sigma_k}=\frac{\boldsymbol{v_j^T}\sigma_k^2\boldsymbol{v_k}}{\sigma_j\sigma_k}= \frac{\sigma_k}{\sigma_j}\boldsymbol{v_j^T}\boldsymbol{v_k}= \left\{\begin{matrix} 1&\text{if}\; j=k\\ 0&\text{if}\; j\ne k \end{matrix} \right. \end{align} \]

因此可以求解\(AA^T\)\(A^TA\)的特征值特征向量的方式求解奇异值与奇异值向量。

注:矩阵\(BA\)和矩阵\(AB\)总是由相同的非零特征值。

注:如果矩阵\(A\)是对称矩阵,则\(A=Q\Lambda Q^T=U\Sigma V^T\)。且若\(A\)的某个特征值\(\lambda_i<0\),则\(\sigma_i=-\lambda_i\),对应的特征向量\(-x_i\)

注:如果矩阵\(A\)为对称的正交矩阵,则\(\Sigma=E\)

注:如果矩阵\(A=xy^T\),则其奇异值向量为\(\boldsymbol{u_1}=\frac{x}{||x||},\boldsymbol{v_1}=\frac{y}{||y||}\)。惟一非零奇异值为\(\sigma_1=||x||\;||y||\)。且特征值\(|\lambda_1|\le \sigma_1\)。因为\(|y^Tx|\le ||y||\;||x||\)

\[\begin{align} xy^T=\frac{x}{||x||}(||x||\;||y||)\frac{y^T}{||y||}=\boldsymbol{u_1}\sigma_1\boldsymbol{v_1^T} \end{align} \]

原文地址:https://www.cnblogs.com/Hi-Simon/p/15522823.html