MIT线性代数 30 奇异值分解

奇异值分解

全称Singular Value Decomposition,简称分解
任意矩阵都可以进行的一种分解

其中为正交矩阵为对角矩阵 为正交矩阵

我们知道正定矩阵的奇异值分解是
,也就是说对于正定矩阵不需要两个矩阵和,这只需要一个就可以放在特征值左右两边

而奇异值分解要研究的如下图,寻找矩阵的行空间的正交向量如,通过的变换之后会转换到A的列空间的正交向量

image.png

为啥教授说
这个等式在矩阵的行空间,在矩阵的列空间

这里笔者做一个证明
对等式稍作整理可得
根据我们之前的求解的解方程的经验,可以很明显的知道是的列空间的线性组合时候有解,同样类比即,可以被这样分解的前提在于向量的每一列都是向量列空间的线性组合,因此在矩阵的列空间
对向量的分析同理
对取转置
有取转置
即,类比上面的分析,可见在的列空间,即在的行空间

上面我们没有提到零空间,如果把零空间补全等式大概是这样的
A\begin{bmatrix} v_1&v_2&...&v_r&v_{r+1}&...&v_n \end{bmatrix}= \begin{bmatrix} u_1&u_2&...&u_r&u_{r+1}&...&u_m \end{bmatrix} \begin{bmatrix} \sigma_1 \\&\sigma_2 \\&&\ddots \\&&&u_r \\&&&&u_{r+1} \\&&&&&\ddots \\&&&&&&u_m&0&0 \end{bmatrix}

其中
是矩阵的行空间标准正交基
是矩阵的的零空间,我们知道矩阵的行空间和零空间是互为正交补的,他们共同补全了空间
再看
是矩阵的列空间标准正交基
是矩阵的左零空间,它和矩阵的列空间互为的正交补共同构成空间
这里再多做一点说明
右边矩阵的0列数占几列取决于的正值是多少,若为负或,则不需要额外补

接下来的问题是应该如何求矩阵的分解的和矩阵
基本的思路很简单
虽然可能是长方形的,即不一定是对称矩阵,这会导致
的左右两边的正交矩阵不是同一个
,但我们发现
是一个性质很好的对称矩阵

我们发现这个很像对称矩阵的,其实不能说像,因为它本来就是对称矩阵,而且我们发现它还是一个正定矩阵,因为特征值全为正的,这样只需要对进行特征值分解就可以把特征向量矩阵和特征值矩阵求出来

而对于另一个矩阵,同理
也是一个性质很好的对称矩阵

这同样是一个对称正定矩阵,对进行特征值分解即可得到特征向量矩阵和特征值矩阵

接下来来个实际的例子
对进行SVD分解

特征值的乘积等于行列式
特征值的和等于迹

于是
代入


则的特征向量即是零空间基向量(注意归一化)



则的特征向量即是零空间基向量

于是

其实特征值和特征向量一眼就看出来了,不过我们还是算一算
特征值的乘积等于行列式
特征值的和等于迹

于是
代入


则的特征向量即是零空间基向量(注意归一化)



则的特征向量即是零空间基向量

于是

最后
把上面算的和代入发现


我们发现结果并不一致,出现问题的原因是因为选择的特征基向量组V和特征向量组U没有形成关联,即前面我们提到的,给定,通过AV的方式得到正交的,即,应该是由关联而来,应该由关联而来,而像上面这种分开计算的方法虽然特征向量没问题,但是特征向量的方向性就无法确定了

u_1\sigma_1=Av_1\Longrightarrow \sqrt{32}u_1=\begin{bmatrix} 4&4 \\-3&3 \end{bmatrix}\begin{bmatrix} 1/\sqrt{2} \\1/\sqrt{2} \end{bmatrix}=1/\sqrt{2}\begin{bmatrix} 8 \\0 \end{bmatrix}\Longrightarrow u_1=\begin{bmatrix} 1 \\0 \end{bmatrix}
u_2\sigma_2=Av_2\Longrightarrow \sqrt{18}u_2=\begin{bmatrix} 4&4 \\-3&3 \end{bmatrix}\begin{bmatrix} 1/\sqrt{2} \\-1/\sqrt{2} \end{bmatrix}=1/\sqrt{2}\begin{bmatrix} 0 \\-6 \end{bmatrix}\Longrightarrow u_2=\begin{bmatrix} 0 \\-1 \end{bmatrix}
所以正确的


接下里看第二个例子,秩矩阵的分解

在开始之前我们先分析一下这个矩阵,因为秩为,所以矩阵的行空间和列空间都是一维的
我们选择行空间基,列空间基
矩阵的另一列怎么找呢,没错它在矩阵的零空间,零空间和行空间垂直,我们利用正交性直接写出
同理矩阵的第二列怎么找,和上面一样,它在的左零空间,即的零空间,于是也可以直接根据正交性写出

于是


那么怎么求,
我们来计算

考虑到是秩1矩阵,并不会改变矩阵A的秩,因此其中一个特征值肯定是,因为特征值之和等于迹,所以另一个特征值肯定是
因此
一般而言可以这么做,当然实际情况下,要自己稍微验算以下,以防符号出错
以上的等式也充分说明了四个基本子空间之间的关系

题外话:笔者最近看slam关于求的解的问题

在slam话题中,矩阵是由一系列匹配点生成的矩阵,问题在于如何求解对的问题,实际上因为误差关系,的解一般是不存在的,即不存在一个精确解使得等式成立,
但是我们会想,既然不存在这样的精确解,但可以肯定是存在一个使得,即,我们希望这里的的模长尽量足够小,
不过这里也需要做一些限定,毕竟如果直接为向量,其实就是最优解了,因此需要限定是非零向量,我们限定
于是问题就转换为求
于是


根据奇异值分解的知识

于是




假设
那么


因为
所以
上面这段什么意思呢,
其实就是说,
当对矩阵执行的分解的所有其实就是原来矩阵的SVD分解的所有的奇异值,即


...

都是单位向量,如果分别取

可见最小的那个奇异值对应的,,即就是我们需要找的最小的目标向量,反之,最大的那个奇异值对应的则是误差最大的目标向量,一般在SVD的分解中会按从大到小排序,因此最优解一般是矩阵的最后一列,也就是的最后一行
这其实表明了一个事实,任意一个矩阵对单位圆上的向量执行左乘,比如这里的,假设,那么目标向量的模长是和的奇异值相关的,即的模长不会小于的最小的奇异值,也不会大于的最大的奇异值

下面找了一张图方便理解,椭圆长轴向量模长表示大的奇异值,椭圆的短轴向量模长表示小的奇异值,而其他方向向量的模长都在二者之间

image.png

你可能感兴趣的:(MIT线性代数 30 奇异值分解)