矩阵的奇异值分解

作者: Keybeawesome | 来源:发表于2020-04-06 21:08 被阅读0次

线性代数中,我们所说的矩阵的特征分解,即为:

A=Vdiag(\lambda)V^{-1}

然而,要满足特征分解,矩阵必须为方阵,否则无法直接求解特征值。

对于一般矩阵,我们如果也要对其进行分解成3个矩阵乘积A= UDV^T,其中Am*n的矩阵,U
m*m的方阵,Dm*n的矩阵,Vn*n的矩阵。

矩阵如何分解呢?首先,它应该满足一个条件,它是方的!那么如何把矩阵变成方针呢?

一个矩阵乘以它的转置即为方阵。

那么接下来的分解就是对与构造方阵的分解。还是特征分解的老步骤。这里,先提一下,A^TA是半正定矩阵:x^T(A^TA)x=(Ax)^TAx=|Ax|^2\geq0

(A^T A)_{n*n}=U^TD_1U \\
(A A^T)_{m*m}=V^TD_2V

由于A^T A, AA^T满足矩阵交换乘积,有tr(A^T A)=tr(A A^T),且r(A^T A)=r(A A^T)

我们可以设D_1的特征值为\lambda_1, \lambda_2,...,\lambda_n,设D_2的特征值为u_1, u_2,...,u_m,且不为0的特征值个数相等。因此,有

\Rightarrow A_{m*n}=V^T_{m*m} \left[\begin{matrix} \lambda_1^{\frac{1}{2}} & \\ & \lambda_2^{\frac{1}{2}} \\ & & \ddots \end{matrix}\right]_{m*n} U_{n*n}

矩阵半正定,特征值非负,可以开根号。特征值从右上角开始写,直到写到最后一个非零特征值。其余元素均为0。


刚才提及的是矩阵的奇异值分解的方法,现在我们初步看一下这个方法在降维中的应用。

V^T = (v_1,v_2,...,v_m),U^T = (u_1,u_2,...,u_n)\lambda _i为矩阵对角线元素。

奇异值分解后的矩阵可以表示为:

A_{m*n}=\lambda_1^{\frac{1}{2}}v_1u_1^T+\lambda_2^{\frac{1}{2}}v_2u_2^T+\lambda_3^{\frac{1}{2}}v_3u_3^T+...

令特征值从大到小排列,意味着前面的较大的特征值保留了矩阵较为重要的特征,后面的较小的特征值保留了矩阵比较细节的特征。以图像的压缩为例子:

压缩钱图像矩阵为m*n,意味着参数有m*n个,只取前K个特征值,参数有(m+n+1)*K。误差为:error=1-\frac{\sum_{i=1}^{k} \lambda_i}{\sum_{i=1}^{min(m,n)}\lambda_i}

也可以用作在神经网络的加速运算,之后提及。

下面是图片压缩的例子(转自知乎@DeepWeaver)

保留了前10个特征值(压缩率122) 保留前30个特征值(压缩率31) 保留前50个特征值(压缩率17) 保留97个特征值,几乎为原图的一半

相关文章

网友评论

    本文标题:矩阵的奇异值分解

    本文链接:https://www.haomeiwen.com/subject/awliphtx.html