通过学习SVD(奇异值分解)的知识来明白矩阵计算的知识,这是一种很好的办法。
SVD分解(奇异值分解)提供了将一个矩阵拆分成简单且有意义的几块的一种方法。SVD分解可以用于图像压缩、去噪,也是PCA(主成分分析,见4.3.1节)的数学基础。
在几何上,可以将PCA看作是把一个空间进行旋转、尺度拉伸、再旋转的三步过程。
首先来看一个对角矩阵:
几何上,可将一个矩阵理解为对于点(x,y)从一个平面到另一个平面的映射:
图2-7显示了这个映射的效果:平面被横向拉伸了3倍,纵向没有变化。
对于另一个矩阵
它的效果如图2-8所示。
虽然这样一个变化并不是很好描述,然而当我们将坐标系旋转45°(即等于找到一个正交向量vi)后,我们可以看出图2-9所示的效果。
这时,我们发现这个新的网格上发生的变化和网格在对角阵下发生变化的效果相似。
这是一个对称矩阵的例子,可以看出,对称矩阵经过旋转后,其作用就和对角阵类似了。数学上,对于一个对称矩阵M,我们可以找到一组正交向量vi,从而Mvi相当于vi上的标量乘积,也就是
λi是标量,也就是对应对角阵中对角线上的元素。由于这个性质,我们称vi是M的特征向量,λi为特征值。一个对称矩阵的不同特征值对应的特征向量是正交的。
对于更广泛的情况,我们看看能否从一个正交网格转换到另一个正交网格。考虑一个非对称矩阵(见图2-10):
这个矩阵将网格在水平方向拉伸了,而垂直方向没有变化。如果我们将网格旋转大约58°,这两个网格就又会都变为正交的。如图2-11所示。
SVD分解的过程和用途如下。
1.奇异值分解
考虑一个2×2矩阵,我们可以找到两组网格的对应关系。用向量表示,那就是当我们选择合适的单位正交向量v1和v2,Mv1和Mv2也是正交的。如图2-12所示。
我们使用u1和u2代表Mv1和Mv2的方向。Mv1和Mv2的长度表示为σ1和σ2,也就是网格在每个方向的拉伸。这两个拉伸值叫作M的奇异值(sigular value)。如图2-13所示。
和前面类似,我们可以有
Mv1=σ1u1
Mv2=σ2u2
由于v1和v2是一对正交向量,显然,类似用X、Y坐标轴来表示的向量可以写作:K1x+K2y。对于一般的向量x,我们可以有如下投影关系:
也就是说
即
这个关系可以写成矩阵形式
U的列是u1和u2,Σ表示σ1和σ2构成的对角阵,V的列是v1和v2。即V描述了域中的一组正交基,U描述了相关域的另一组正交基,Σ表述了U中的向量与V中向量的拉伸关系。
2.奇异值分解用于压缩
在奇异值为0的情况下,这个矩阵就有了降维的效果。这对于计算机科学中的数据压缩极其有用。例如,我们想压缩15×25像素的黑白图像。把图像表示成一个15×25的矩阵,M总共有375个元素。
然而,当我们做了奇异值分解,可能会发现非零奇异值仅有3个,
σ1=19.72, σ2=15.22, σ3=1.11
因此,这个矩阵就可以被表示为:
也就是说我们用三个长度为15的向量vi,三个长度为25的向量ui,以及三个奇异值,总共123个数字表示了这个375个元素组成的矩阵。奇异值分解通过找到矩阵中的冗余信息而实现降维,从而捕获图像中的主要信息。
3.奇异值分解用于去噪
对于前面的例子,假设其中存在噪声,当我们用同样的方法做奇异值分解时可以得到如下非零奇异值:
σ1=19.72, σ2=15.22, σ3=1.11, σ4=0.21, σ5=0.19,…, σ15=0.05
显然,前三个奇异值比其他的大很多,说明其中包括了绝大部分信息。如果我们只要前三个,得到的矩阵为
可以看出,这种方法同压缩方法类似,便于实现图像的降噪。