奇异值分解(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}
\]