#!/usr/bin/env python # coding: utf-8 # # 第三十讲:奇异值分解 # # 本讲我们介绍将一个矩阵写为$A=U\varSigma V^T$,分解的因子分别为正交矩阵、对角矩阵、正交矩阵,与前面几讲的分解不同的是,这两个正交矩阵通常是不同的,而且这个式子可以对任意矩阵使用,不仅限于方阵、可对角化的方阵等。 # # * 在正定一讲中(第二十八讲)我们知道一个正定矩阵可以分解为$A=Q\Lambda Q^T$的形式,由于$A$对称性其特征向量是正交的,且其$\Lambda$矩阵中的元素皆为正,这就是正定矩阵的奇异值分解。在这种特殊的分解中,我们只需要一个正交矩阵$Q$就可以使等式成立。 # # * 在对角化一讲中(第二十二讲),我们知道可对角化的矩阵能够分解为$A=S\Lambda S^T$的形式,其中$S$的列向量由$A$的特征向量组成,但$S$并不是正交矩阵,所以这不是我们希望得到的奇异值分解。 # # 我们现在要做的是,在$A$的**列空间**中找到一组特殊的正交基$v_1,v_2,\cdots,v_r$,这组基在$A$的作用下可以转换为$A$的**行空间**中的一组正交基$u_1,u_2,\cdots,u_r$。 # # 用矩阵语言描述为$A\Bigg[v_1\ v_2\ \cdots\ v_r\Bigg]=\Bigg[\sigma_1u_1\ \sigma_2u_2\ \cdots\ \sigma_ru_r\Bigg]=\Bigg[u_1\ u_2\ \cdots\ u_r\Bigg]\begin{bmatrix}\sigma_1&&&\\&\sigma_2&&\\&&\ddots&\\&&&\sigma_n\end{bmatrix}$,即$Av_1=\sigma_1u_1,\ Av_2=\sigma_2u_2,\cdots,Av_r=\sigma_ru_r$,这些$\sigma$是缩放因子,表示在转换过程中有拉伸或压缩。而$A$的左零空间和零空间将体现在$\sigma$的零值中。 # # 另外,如果算上左零、零空间,我们同样可以对左零、零空间取标准正交基,然后写为$A\Bigg[v_1\ v_2\ \cdots\ v_r\ v_{r+1}\ \cdots\ v_m\Bigg]=\Bigg[u_1\ u_2\ \cdots\ u_r\ u_{r+1}\ \cdots \ u_n\Bigg]\left[\begin{array}{c c c|c}\sigma_1&&&\\&\ddots&&\\&&\sigma_r&\\\hline&&&\begin{bmatrix}0\end{bmatrix}\end{array}\right]$,此时$U$是$m\times m$正交矩阵,$\varSigma$是$m\times n$对角矩阵,$V^T$是$n\times n$正交矩阵。 # # 最终可以写为$AV=U\varSigma$,可以看出这十分类似对角化的公式,矩阵$A$被转化为对角矩阵$\varSigma$,我们也注意到$U,\ V$是两组不同的正交基。(在正定的情况下,$U,\ V$都变成了$Q$。)。进一步可以写作$A=U\varSigma V^{-1}$,因为$V$是标准正交矩阵所以可以写为$A=U\varSigma V^T$ # # 计算一个例子,$A=\begin{bmatrix}4&4\\-3&3\end{bmatrix}$,我们需要找到: # # * 行空间$\mathbb{R}^2$的标准正交基$v_1,v_2$; # * 列空间$\mathbb{R}^2$的标准正交基$u_1,u_2$; # * $\sigma_1>0, \sigma_2>0$。 # # 在$A=U\varSigma V^T$中有两个标准正交矩阵需要求解,我们希望一次只解一个,如何先将$U$消去来求$V$? # # 这个技巧会经常出现在长方形矩阵中:求$A^TA$,这是一个对称正定矩阵(至少是半正定矩阵),于是有$A^TA=V\varSigma^TU^TU\varSigma V^T$,由于$U$是标准正交矩阵,所以$U^TU=I$,而$\varSigma^T\varSigma$是对角线元素为$\sigma^2$的对角矩阵。 # # 现在有$A^TA=V\begin{bmatrix}\sigma_1&&&\\&\sigma_2&&\\&&\ddots&\\&&&\sigma_n\end{bmatrix}V^T$,这个式子中$V$即是$A^TA$的特征向量矩阵而$\varSigma^2$是其特征值矩阵。 # # 同理,我们只想求$U$时,用$AA^T$消掉$V$即可。 # # 我们来计算$A^TA=\begin{bmatrix}4&-3\\4&3\end{bmatrix}\begin{bmatrix}4&4\\-3&3\end{bmatrix}=\begin{bmatrix}25&7\\7&25\end{bmatrix}$,对于简单的矩阵可以直接观察得到特征向量$A^TA\begin{bmatrix}1\\1\end{bmatrix}=32\begin{bmatrix}1\\1\end{bmatrix},\ A^TA\begin{bmatrix}1\\-1\end{bmatrix}=18\begin{bmatrix}1\\-1\end{bmatrix}$,化为单位向量有$\sigma_1=32,\ v_1=\begin{bmatrix}\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}\end{bmatrix},\ \sigma_2=18,\ v_2=\begin{bmatrix}\frac{1}{\sqrt{2}}\\-\frac{1}{\sqrt{2}}\end{bmatrix}$。 # # 到目前为止,我们得到$\begin{bmatrix}4&4\\-3&3\end{bmatrix}=\begin{bmatrix}u_?&u_?\\u_?&u_?\end{bmatrix}\begin{bmatrix}\sqrt{32}&0\\0&\sqrt{18}\end{bmatrix}\begin{bmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{bmatrix}$,接下来继续求解$U$。 # # $AA^T=U\varSigma V^TV\varSigma^TU^T=U\varSigma^2U^T$,求出$AA^T$的特征向量即可得到$U$,$\begin{bmatrix}4&4\\-3&3\end{bmatrix}\begin{bmatrix}4&-3\\4&3\end{bmatrix}=\begin{bmatrix}32&0\\0&18\end{bmatrix}$,观察得$AA^T\begin{bmatrix}1\\0\end{bmatrix}=32\begin{bmatrix}1\\0\end{bmatrix},\ AA^T\begin{bmatrix}0\\1\end{bmatrix}=18\begin{bmatrix}0\\1\end{bmatrix}$。但是我们不能直接使用这一组特征向量,因为式子$AV=U\varSigma$明确告诉我们,一旦$V$确定下来,$U$也必须取能够满足该式的向量,所以此处$Av_2=\begin{bmatrix}0\\-\sqrt{18}\end{bmatrix}=u_2\sigma_2=\begin{bmatrix}0\\-1\end{bmatrix}\sqrt{18}$,则$u_1=\begin{bmatrix}1\\0\end{bmatrix},\ u_2=\begin{bmatrix}0\\-1\end{bmatrix}$。(这个问题在[本讲的官方笔记](http://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/positive-definite-matrices-and-applications/singular-value-decomposition/MIT18_06SCF11_Ses3.5sum.pdf)中有详细说明。) # # * 补充:$AB$的特征值与$BA$的特征值相同,证明来自[Are the eigenvalues of AB equal to the eigenvalues of BA? (Citation needed!)](http://math.stackexchange.com/questions/124888/are-the-eigenvalues-of-ab-equal-to-the-eigenvalues-of-ba-citation-needed): # # 取$\lambda\neq 0$,$v$是$AB$在特征值取$\lambda$时的的特征向量,则有$Bv\neq 0$,并有$\lambda Bv=B(\lambda v)=B(ABv)=(BA)Bv$,所以$Bv$是$BA$在特征值取同一个$\lambda$时的特征向量。 # # 再取$AB$的特征值$\lambda=0$,则$0=\det{AB}=\det{A}\det{B}=\det{BA}$,所以$\lambda=0$也是$BA$的特征值,得证。 # # 最终,我们得到$\begin{bmatrix}4&4\\-3&3\end{bmatrix}=\begin{bmatrix}1&0\\0&-1\end{bmatrix}\begin{bmatrix}\sqrt{32}&0\\0&\sqrt{18}\end{bmatrix}\begin{bmatrix}\frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\\\frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\end{bmatrix}$。 # # 再做一个例子,$A=\begin{bmatrix}4&3\\8&6\end{bmatrix}$,这是个秩一矩阵,有零空间。$A$的行空间为$\begin{bmatrix}4\\3\end{bmatrix}$的倍数,$A$的列空间为$\begin{bmatrix}4\\8\end{bmatrix}$的倍数。 # # * 标准化向量得$v_1=\begin{bmatrix}0.8\\0.6\end{bmatrix},\ u_1=\frac{1}{\sqrt{5}}\begin{bmatrix}1\\2\end{bmatrix}$。 # * $A^TA=\begin{bmatrix}4&8\\3&6\end{bmatrix}\begin{bmatrix}4&3\\8&6\end{bmatrix}=\begin{bmatrix}80&60\\60&45\end{bmatrix}$,由于$A$是秩一矩阵,则$A^TA$也不满秩,所以必有特征值$0$,则另特征值一个由迹可知为$125$。 # * 继续求零空间的特征向量,有$v_2=\begin{bmatrix}0.6\\-0,8\end{bmatrix},\ u_1=\frac{1}{\sqrt{5}}\begin{bmatrix}2\\-1\end{bmatrix}$ # # 最终得到$\begin{bmatrix}4&3\\8&6\end{bmatrix}=\begin{bmatrix}1&\underline {2}\\2&\underline{-1}\end{bmatrix}\begin{bmatrix}\sqrt{125}&0\\0&\underline{0}\end{bmatrix}\begin{bmatrix}0.8&0.6\\\underline{0.6}&\underline{-0.8}\end{bmatrix}$,其中下划线部分都是与零空间相关的部分。 # # * $v_1,\ \cdots,\ v_r$是行空间的标准正交基; # * $u_1,\ \cdots,\ u_r$是列空间的标准正交基; # * $v_{r+1},\ \cdots,\ v_n$是零空间的标准正交基; # * $u_{r+1},\ \cdots,\ u_m$是左零空间的标准正交基。 # # 通过将矩阵写为$Av_i=\sigma_iu_i$形式,将矩阵对角化,向量$u,\ v$之间没有耦合,$A$乘以每个$v$都能得到一个相应的$u$。