奇异值分解
概述
奇异值分解(Singular Value Decomposition,SVD)是线性代数中一种重要的矩阵分解方法,区别于只适用于实对称矩阵的特征分解方法,奇异值分解可对任意实矩阵进行分解。
特征分解
特征分解(eigendecomposition)又叫谱分解(Spectral decomposition),是把一个矩阵根据其特征值和特征向量分解的过程,只有可以正交化的矩阵才可以进行特征分解。
\(A\)为\(n\)阶方阵,若存在\(n\)维非零向量\(x\)使得:
\[Ax = \lambda x \]则称\(\lambda\)为矩阵\(A\)的特征值,\(x\)为\(A\)属于\(\lambda\)的特征向量(eigenvector)。
有了上述定义,接下来讨论如何计算一个矩阵的特征值和特征向量。由定义可知:
其中\(I\)为单位矩阵,显然上式的推导结果是一个\(n\)元\(n\)次的齐次线性方程组,\(x\)为该方程组的一个非零解,则有$r(A-\lambda I)=r < n \Leftrightarrow |A-\lambda I|=0 \(,其中\)|A-\lambda I|=0\(称为\)A\(的特征方程,\)|A-\lambda I|\(称为\)A$的特征多项式。基于此,可得到求解方阵A特征值和特征向量的步骤如下:
1、计算方阵A的特征多项式\(|A-\lambda I|\);
2、求出特征方程\(|A-\lambda I|=0\)的所有根(包括复根和重根),这些根\(\lambda_1,\lambda_2,\cdots,\lambda_n\)即为\(A\)的所有特征值;
3、对于\(A\)的每一个特征值\(\lambda_i(1\leq i\leq n)\),求解齐次线性方程组\((A-\lambda_i I)x=0\),该方程组的每一个非零解都是\(A\)属于特征值\(\lambda_i\)的特征向量;
求出矩阵\(A\)的特征值和特征向量后,若矩阵\(A\)有\(n\)个线性独立的特征向量,那么 \(A\)是可以正交化的,此时 \(A\) 的特征分解为:
其中\(W\)时\(n\)个特征向量所组成的\(n \times n\)维矩阵,\(D\)为以这\(n\)个特征值为主对角线元素的对角阵。
奇异值分解
-
定义
若\(M\)为一个\(m \times n\)阶的矩阵,则存在一个分解,使得:
\[M = UDV^T \]其中\(U\)为\(m\)阶酉矩阵、\(V\)为\(n\)阶酉矩阵、\(D\)为\(m\times n\)的非负实对角矩阵。称此分解为奇异值分解,一般我们将\(V\)中的每一个特征向量叫做\(M\)的右奇异向量,将\(U\)中的每个特征向量叫做左奇异向量,\(D\)对角线上的元素称为\(M\)的奇异值,当规定奇异值降序排列时,可唯一确定一个\(D\)。
有了定义,接下来需要确定奇异值分解的三个矩阵\(U、D、V\)。比较直观的想法是通过\(M\)来构造一个方阵来进行特征分解,间接计算\(U、D、V\),由于\(MM^T,M^TM\)分别为\(m\times m\)和\(n\times n\)的方阵,则有:
\[\begin{equation} \begin{split} MM^T=UDV^T(UDV^T)^T=UDV^TVD^TU^T = UDD^TU^T=U\sum_1 U^T \\ M^TM = (UDV^T)^TUDV^T=VD^TU^TUDV^T=VDD^TV^T=V\sum_2 V^T \end{split} \end{equation} \]注意到:
\[M = UDV^T \Rightarrow MV = UDV^TV \Rightarrow MV= UD \Rightarrow Mv_i = \delta_iu_i \Rightarrow \delta_i = \frac{Mv_i}{u_i} \]其中,\(v_i,u_i\)分别为\(V,U\)中第\(i\)个特征向量。这个式子提供了一种计算奇异值的方法,另一种思路是结合式(5):
\[\sum = DD^T=D^2 \Rightarrow \delta_i = \sqrt{\lambda_i} \]即,特征值矩阵为奇异值矩阵的平方,故可以通过计算\(M^TM\)的特征值取平方根来计算奇异值。
-
SVD的计算步骤
1.计算\(MM^T\)和\(M^TM\);
2.分别计算\(MM^T\)和\(M^TM\)的特征向量和特征值;
3.\(MM^T\)的特征向量组成\(U\),而\(M^TM\)的特征向量组成\(V\);
4.对\(MM^T\)和\(M^TM\)的非零特征值求平方根,对应上述特征向量的位置,填入对角阵\(D\)的位置;
-
计算示例
接下来以计算矩阵\(A=\begin{pmatrix}0&1 \\ 1& 1 \\1&0\end{pmatrix}\)的奇异值分解为例,来进一步熟悉:
第一步,先计算\(A\)的两个转置积:
\[\begin{equation} \begin{split} &A^TA=\begin{pmatrix} 0 & 1 & 1 \\ 1 & 1 & 0 \end{pmatrix}\begin{pmatrix} 0 & 1 \\ 1 & 1 \\ 1 & 0\end{pmatrix} = \begin{pmatrix}2 & 1 \\ 1& 2\end{pmatrix} \\ &AA^T = \begin{pmatrix}0 & 1 \\ 1 & 1 \\ 1 & 0\end{pmatrix}\begin{pmatrix}0 & 1 &1 \\ 1 & 1 & 0\end{pmatrix}=\begin{pmatrix}1 & 1 & 0 \\ 1 & 2 & 1 \\ 0 & 1 & 1\end{pmatrix} \end{split} \end{equation} \]第二步,分别计算两个转置积的特征值和特征向量:
\[\begin{equation} \begin{split} &\color{#F00}{(A^TA-\lambda I)x = 0} \Rightarrow |A^TA-\lambda I|=0 \\ &\Rightarrow \begin{vmatrix} 2-\lambda & 1 \\ 1 & 2-\lambda \end{vmatrix} = 0 \Rightarrow \lambda^2-4\lambda+3=0 \end{split} \end{equation} \]容易得到式(9)中一元二次方程的根为\(\lambda_1 = 3,\lambda_2=1\),当\(\lambda=3\)时,将特征根分别带入式(1)中,得到:
\[\begin{equation} \begin{split} &&(A^TA-3I)x = 0 \Rightarrow\begin{pmatrix}-1 & 1 \\ 1 & -1\end{pmatrix}x= 0 \Rightarrow\begin{pmatrix}-1 & 1 \\ 1 & -1\end{pmatrix}\begin{pmatrix}x_1 \\ x_2\end{pmatrix}= 0 \\ \end{split} \end{equation} \]此时的单位特征向量为:
\[x_{\lambda=3} = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}\end{pmatrix} \]同理得到:
\[x_{\lambda=1} = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}}\end{pmatrix} \]同理计算\(AA^T\)的特征根和特征向量:
\[\begin{equation} \begin{split} &\lambda_1=3,u_1= \begin{pmatrix} \frac{1}{\sqrt{6}} \\ \frac{2}{\sqrt{6}} \\ \frac{1}{\sqrt{6}} \end{pmatrix}; &\lambda_2 = 1,u_2 = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ 0 \\ -\frac{1}{\sqrt{2}} \end{pmatrix}; &\lambda_3 = 0,u_3 = \begin{pmatrix} \frac{1}{\sqrt{3}} \\ -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{3}} \end{pmatrix} \end{split} \end{equation} \]第三步,使用两个转置积的单位特征向量构造\(U,V\)矩阵:
\[\begin{equation} \begin{split} &U =(u_1,u_2,u_3)= \begin{pmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \\ \frac{2}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \end{pmatrix} \\ &V^T = (v_1,v_2)^T= \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} \end{split} \end{equation} \]第四步,计算奇异值,直接使用\(\delta_i = \sqrt{\lambda_i}\)计算奇异值并组成对角阵\(D\):
\[D = \begin{pmatrix} \sqrt{3} & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix} \]最终得到矩阵\(A\)的奇异值分解:
\[A= UDV^T =\begin{pmatrix} \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \\ \frac{2}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{3}} \\ \frac{1}{\sqrt{6}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{3}} \end{pmatrix}\begin{pmatrix} \sqrt{3} & 0\\ 0 & 1\\ 0 & 0 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} \]
应用
对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵:
这样处理的好处是,我们可以用三个较小的矩阵\(U_{m \times k},D_{k \times k},V_{k \times n}^T\)来表示一个大矩阵\(A\),如下图所示,使用三个灰色部分的小矩阵来表示大矩阵。
由于这个重要的性质,SVD可以用于PCA降维,来做图片数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。
Note:
需要注意的是,奇异值分解中特征值的求解是比较核心的地方,在工程应用中,往往需要进行奇异值分解都是大矩阵,对这类大矩阵,如果采用上面的方法求解特征值需要花费较多的时间和资源。对此,可以采用乘幂法和反幂法或者QR方法来近似求解矩阵的特征根,在此不做进一步展开,有兴趣的读者可以进一步了解一下。
基本概念说明
-
矩阵的子式
设有\(m \times n\)矩阵A,在\(A\)中任意取定\(k\)个行和\(k\)个列(\(k \leq \min\{m,n\}\)),位于这些行与列交叉处的元素按原来的相对顺序排成一个\(k\)阶行列式,称它为矩阵\(A\)的一个\(k\)阶子式,特别地,\(A\)中每一个元素就是\(A\)的一阶子式。
对于确定的\(k\),在\(m \times n\)矩阵\(A\)中,总共有\(C_m^k \times C_n^k\)个\(k\)阶子式,这些子式的值有的可能是零,也可能不为零,把值不为零的子式称为非零子式。 -
矩阵的秩
在\(m\times n\)矩阵\(A\)中,非零子式的最高阶数称为矩阵\(A\)的秩,记为\(r(A)\)或秩规定零矩\((A)\),规定零矩阵的秩为零。
推论1:
\(r(A)=r \Leftrightarrow A\)中所有\(r+1\)阶子式(如果有的话)全为零,而\(A\)中至少有一个\(r\)阶子式非零。
-
矩阵的谱半径
\(A\)为\(n\)阶方阵,\(\lambda_i(1\leq i\leq n)\)为其特征值,则\(A\)的谱半径定义如下:
\[\rho(r) = max\{|\lambda_1|,|\lambda_2|,\dots,|\lambda_n|\} \]即方阵\(A\)的谱半径为\(A\)特征值中绝对值最大的那个值。
-
正定矩阵
如果对于所有的非零实系数向量 \(z\),都有 \(z^TAz>0\),则称矩阵 \(A\) 是正定的。正定矩阵的行列式必然大于0, 所有特征值也必然大于0。相对应的,半正定矩阵的行列式必然 ≥ 0。
-
正交矩阵
若一个方阵其行与列皆为正交的单位向量(即二者的内积为0),则该方阵为正交矩阵。
-
酉矩阵
酉矩阵(unitary matrix)是一种特殊的方阵,它满足\(UU^H=U^HU=I_n\)(\(U^H\)为\(U\)的共轭转置,其在转置的基础上,增加了复数的共轭)。酉矩阵实际上是推广的正交矩阵(orthogonal matrix);当酉矩阵中的元素均为实数时,酉矩阵实际就是正交矩阵。另一方面,由于\(U^{-1}U=UU^{-1}=I_n\),所以酉矩阵 \(U\)满足$ U{−1}=UH$;事实上,这是一个矩阵是酉矩阵的充分必要条件。
-
正规矩阵
同酉矩阵一样,正规矩阵(normal matrix)也是一种特殊的方阵,它要求在矩阵乘法的意义下与它的共轭转置矩阵满足交换律,即\(MM^H=M^HM\)。显然,复系数的酉矩阵和实系数的正交矩阵都是正规矩阵。
-
谱定理和谱矩阵
矩阵的对角化是线性代数中的一个重要命题。谱定理(spectral theorem)给出了方阵对角化的一个结论:若矩阵\(M\)是一个正规矩阵,则存在酉矩阵 \(U\),以及对角矩阵 \(\sum\),使得\(M=U\sum U^H\)。也就是说,正规矩阵,可经由酉变换,分解为对角矩阵;这种矩阵分解的方式,称为谱分解(spectral decomposition)。
参考文章