矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decomposition,简称SVD分解)得到。如果要问奇异值表示什么物理意义,那么就必须考虑在不同的实际工程应用中奇异值所对应的含义。下面先尽量避开严格的数学符号推导,直观的从一张图片出发,让我们来看看奇异值代表什么意义。
这是女神上野树里(Ueno Juri)的一张照片,像素为高度450*宽度333。暂停舔屏先(痴汉脸
我们都知道,图片实际上对应着一个矩阵,矩阵的大小就是像素大小,比如这张图对应的矩阵阶数就是450*333,矩阵上每个元素的数值对应着像素值。我们记这个像素矩阵为
现在我们对矩阵进行奇异值分解。直观上,奇异值分解将矩阵分解成若干个秩一矩阵之和,用公式表示就是:
其中等式右边每一项前的系数就是奇异值,和分别表示列向量,秩一矩阵的意思是矩阵秩为1。注意到每一项都是秩为1的矩阵。我们假定奇异值满足(奇异值大于0是个重要的性质,但这里先别在意),如果不满足的话重新排列顺序即可,这无非是编号顺序的问题。
既然奇异值有从大到小排列的顺序,我们自然要问,如果只保留大的奇异值,舍去较小的奇异值,这样(1)式里的等式自然不再成立,那会得到怎样的矩阵——也就是图像?
令,这只保留(1)中等式右边第一项,然后作图:
结果就是完全看不清是啥……我们试着多增加几项进来:,再作图
隐约可以辨别这是短发伽椰子的脸……但还是很模糊,毕竟我们只取了5个奇异值而已。下面我们取20个奇异值试试,也就是(1)式等式右边取前20项构成
虽然还有些马赛克般的模糊,但我们总算能辨别出这是Juri酱的脸。当我们取到(1)式等式右边前50项时:
我们得到和原图差别不大的图像。也就是说当从1不断增大时,不断的逼近。让我们回到公式
矩阵表示一个450*333的矩阵,需要保存个元素的值。等式右边和分别是450*1和333*1的向量,每一项有个元素。如果我们要存储很多高清的图片,而又受限于存储空间的限制,在尽可能保证图像可被识别的精度的前提下,我们可以保留奇异值较大的若干项,舍去奇异值较小的项即可。例如在上面的例子中,如果我们只保留奇异值分解的前50项,则需要存储的元素为,和存储原始矩阵相比,存储量仅为后者的26%。
下面可以回答题主的问题:奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵都可以表示为一系列秩为1的“小矩阵”之和,而奇异值则衡量了这些“小矩阵”对于的权重。
在图像处理领域,奇异值不仅可以应用在数据压缩上,还可以对图像去噪。如果一副图像包含噪声,我们有理由相信那些较小的奇异值就是由于噪声引起的。当我们强行令这些较小的奇异值为0时,就可以去除图片中的噪声。如下是一张25*15的图像(本例来源于[1])
但往往我们只能得到如下带有噪声的图像(和无噪声图像相比,下图的部分白格子中带有灰色):
通过奇异值分解,我们发现矩阵的奇异值从大到小分别为:14.15,4.67,3.00,0.21,……,0.05。除了前3个奇异值较大以外,其余奇异值相比之下都很小。强行令这些小奇异值为0,然后只用前3个奇异值构造新的矩阵,得到
可以明显看出噪声减少了(白格子上灰白相间的图案减少了)。
奇异值分解还广泛的用于主成分分析(Principle Component Analysis,简称PCA)和推荐系统(如Netflex的电影推荐系统)等。在这些应用领域,奇异值也有相应的意义。
考虑题主在问题描述中的叙述:“把m*n矩阵看作从m维空间到n维空间的一个线性映射,是否:各奇异向量就是坐标轴,奇异值就是对应坐标的系数?”我猜测,题主更想知道的是奇异值在数学上的几何含义,而非应用中的物理意义。下面简单介绍一下奇异值的几何含义,主要参考文献是美国数学协会网站上的文章[1]。
下面的讨论需要一点点线性代数的知识。线性代数中最让人印象深刻的一点是,要将矩阵和空间中的线性变换视为同样的事物。比如对角矩阵作用在任何一个向量上
其几何意义为在水平方向上拉伸3倍,方向保持不变的线性变换。换言之对角矩阵起到作用是将水平垂直网格作水平拉伸(或者反射后水平拉伸)的线性变换。
如果不是对角矩阵,而是一个对称矩阵
那么,我们也总可以找到一组网格线,使得矩阵作用在该网格上仅仅表现为(反射)拉伸变换,而没有旋转变换
考虑更一般的非对称矩阵
很遗憾,此时我们再也找不到一组网格,使得矩阵作用在该网格上之后只有拉伸变换(找不到背后的数学原因是对一般非对称矩阵无法保证在实数域上可对角化,不明白也不要在意)。我们退求其次,找一组网格,使得矩阵作用在该网格上之后允许有拉伸变换和旋转变换,但要保证变换后的网格依旧互相垂直。这是可以做到的
下面我们就可以自然过渡到奇异值分解的引入。奇异值分解的几何含义为:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交。下面我们要说明的是,奇异值的几何含义为:这组变换后的新的向量序列的长度。
当矩阵作用在正交单位向量和上之后,得到和也是正交的。令和分别是和方向上的单位向量,即,,写在一起就是,整理得:
这样就得到矩阵的奇异值分解。奇异值和分别是和的长度。很容易可以把结论推广到一般维情形。
下面给出一个更简洁更直观的奇异值的几何意义(参见[2])。先来一段线性代数的推导,不想看也可以略过,直接看黑体字几何意义部分:
假设矩阵的奇异值分解为
其中是二维平面的向量。根据奇异值分解的性质,线性无关,线性无关。那么对二维平面上任意的向量,都可以表示为:。
当作用在上时,
令,我们可以得出结论:如果是在单位圆上,那么正好在椭圆上。这表明:矩阵将二维平面中单位圆变换成椭圆,而两个奇异值正好是椭圆的两个半轴长,长轴所在的直线是,短轴所在的直线是.
推广到一般情形:一般矩阵将单位球变换为超椭球面,那么矩阵的每个奇异值恰好就是超椭球的每条半轴长度。
参考文献:
[1] We Recommend a Singular Value Decomposition(Feature Column from the AMS)
[2] 徐树方,《矩阵计算的理论与方法》,北京大学出版社。
让我们从小时候玩过的翻绳游戏开始这个问题的讲解。
1 翻绳
对于翻绳的这个花型而言,是由四只手完成的:
我们可以认为这个花型是由两个方向的力合成的:
容易想象,如果其中一个力(相比另外一个力而言)比较小的话,那么绳子的形状基本上由大的那个力来决定:
2 奇异值分解与奇异值
类比于翻绳,我们可以认为:
2.1 奇异值分解
下面通过一个具体的矩阵例子来解释下,比如:
根据之前的类比,矩阵是“力”,“力”怎么画出来呢?
翻绳游戏中的“力”要通过绳子的形状来观察。很显然要观察矩阵也需要一个载体。
我们通过单位圆来观察矩阵:
把这个单位圆的每一点都通过 进行变换,得到一个椭圆(我把单位圆保留下来了,作为一个比较):
对 进行奇异值分解:
实际上,将 分为了两个“分力”:
我们来看看第一个“分力” ,作用在单位圆这个“橡皮筋”上的效果:
可怜的“橡皮筋”被拉成了一根线段。
我们来看看第二个“分力” ,作用在单位圆这个“橡皮筋”上的效果:
可怜的“橡皮筋”被拉成了另外一根线段。
这两个“分力”一起作用的时候,可以想象(画面自行脑补),单位圆这个“橡皮筋”被拉成了椭圆:
2.2 奇异值的大小
刚才举的矩阵的两个“分力”大小,只相差一倍,如果相差很大会怎么样?
换一个矩阵 ,对它进行奇异值分解:
这两个“分力”的奇异值相差就很大,大概相差了40倍。
单位圆被 映射成了短轴和长轴相差太大的椭圆,看起来和直线差不多:
我们试试,把小的那个奇异值去掉会怎么样:
把单位圆变为了一根直线:
这个直线和之前的椭圆看上去差不多。
回到之前的比喻,两个相差很大的分力作用在“橡皮筋”上,“橡皮筋”的形状可以说完全取决于大的那个分力。
2.3 奇异值为什么这么神奇?
奇异值分解实际上把矩阵的变换分为了三部分:
拿刚才的:
举例子(方阵没有投影,不过不影响这里思考):
单位圆先被旋转,是没有形变的:
再进行拉伸,这里决定了单位圆的形状,奇异值分别是椭圆的长轴和短轴:
最后,被旋转到最终的位置,这一过程也没有发生形变:
所以,奇异值决定了形变,大小决定在形变中的重要性。
3 总结
根据奇异值分解、以及奇异值的特点,有很多应用。
比如,可以把图片转为矩阵,通过丢弃不重要的奇异值,进行压缩:
比如,可以把很多数据放在矩阵中,通过丢弃不重要的奇异值,来减小处理量。
还比如,可以从矩阵中,找到最大的奇异值,从而得到数据最重要的特征。
文章最新版本在(有可能会有后续更新):如何通俗地理解奇异值?
第二次提交 2019/8/15
第一次提交 2019/7/7
文章目录
读完本篇文章后,你应该可以知道:
奇异值分解到底是什么?
奇异值和奇异向量有什么代数意义?
奇异值和奇异向量有什么几何意义?
如何利用特征值分解求奇异值和奇异向量?
奇异值的个数如何确定?
奇异值分解是否唯一?
奇异值分解什么时候和特征值分解相等?
奇异值分解和特征值分解的区别?
这部分的内容是[1]中部分内容的翻译,这几张图片大家应该见过很多次。
来看一个二维平面坐标系的例子,在由(1,0)T和(0,1)T确定的二维平面坐标系中:
向量(x,y)T左乘M矩阵,将会得到一个新的向量(新的点)。为了更容易理解变换过程,我们主要关注向量(1,1)T和(1,0)T,(0,1)T,(0,0)T围城的矩形的形变过程。
左乘矩阵M的效果在坐标系中的表现如下:
直接从图上看不出什么,我们把原先的坐标系逆时针旋转30度,然后左乘M看看效果:
好像也没什么特殊的,把原先的坐标系逆时针旋转60度看看:
右边的网格几乎快要正交了,也就是说,原先的正交基逆时针旋转60度后,再经过M变换,几乎可以得到一组新的正交基。
实际上,如果我们把坐标轴逆时针旋转58.28度,就会得到如下效果:
从几何上看,旋转后的正交基(1,0)T和(0,1)T,在经过M变换后,得到了另外一组正交基。这其实就是SVD分解的一种解释,即M可以将一组正交基映射到另一组正交基。
记映射后的向量Mv1为u1,Mv2为u2,Mv1的模为σ1,Mv2的模为σ2。
接下来我们就可以推导了:
在v1和v2确定的二维平面中,任意一点x可以表示为:
在《利用SVD进行推荐(1)矩阵相乘的本质》中我们讲过,小括号里的点积就是x在v1和v1坐标轴上的投影值(坐标)。我们对这个平面中任意一点x左乘矩阵M进行变换,来看看结果:
向量点积表示为矩阵乘法就是:
所以变换结果可以进一步推演为:
我们得到了M有关u,v,σ的表达式。将表达式转为矩阵表达形式,即为:
其中U中的每一列向量ui为映射后的一个单位基向量,V中的每一个列向量vj为原先被映射的单位基向量。这里的推导过于简略,下面我们看看更为严格的推导。
奇异值分解在代数上表现就是A将一组正交基转化为另一组正交基。我们来看一下具体推导。
2.1内容主要来自[5],靖王你真帅!
假设找到了这样一组正交基:
而mxn的实矩阵A将其映射为:
我们要使他们两两正交,也就是:
根据假设,有:
在这种情况下,如果取正交基v为 的特征向量的话,由于那么就有:
这样我们就找到了正交基使其映射后还是正交基了。现在我们将映射后的正交基单位化。因为:
也就是:
所以取单位向量为:
由此可得:
从上述公式来看,左奇异向量ui是映射后正交基的单位化形式,奇异值σi就是映射后的正交基的模的大小,而右奇异向量vi就是被映射的正交基。此处也可以看出奇异值一定非负(当然本身的定义就是这样)。
当k < i < m时,对u1,u2,…,uk进行扩展u(k+1),…,um,使得u1,u2,…,um为m维空间中的一组正交基,即:
同样的,对v1,v2,…,vk进行扩展v(k+1),…,vn(这n-k个向量存在于A的零空间中,即Ax=0的解空间的基),使得v1,v2,…,vn为n维空间中的一组正交基,即:
然后我们就可以得到:
从而A的SVD分解为:
根据论文[3]的分析,任意mxn的实矩阵A=UΣVT,都可以看成一种线性转化, 从n维空间到m维空间的转化。n维空间和m维空间分别由V和U的列向量所形成的基向量确定。
对任意mxn实矩阵A的奇异值分解A= ,有:
这不就是特征值分解吗。也就是说 是 的特征向量,其对应的特征值是 ,同理 是 的特征向量,其对应的特征值也是 。可以从这个角度出发求解特征值和特征向量。
实际上,对于mxn维的实矩阵A, 和 都是半正定的实对称矩阵(特征值为非负数),且具有相同的非零特征值。且k=rank( )=rank( )=rank(A) [4]。显然实对称矩阵的秩就是非零特征值的个数。因此这两个实对称矩阵有k个相同的非零特征值。当i>rank(A)即使有特征值也全是0。
这里的分析还可以解释2.1中对角阵S上的i为什么最多取到k=rank(A),假设可以取到k+1,按照本节中的推导,奇异值 是找不到对应的非零特征值的,显然 =0。
或者说得专业些, 是实对称矩阵,存在n阶正交矩阵V,使得相似于对角矩阵(对角线上是的全部特征值)。相似的矩阵有相同的特征多项式,进而有相同的特征值,当然秩更要相同了。所以r(S)=r( )=r( )=r(A)。即对角阵S非零奇异值的个数= 非零特征值的个数=对称矩阵 的秩=A的秩。
好了我们可以总结下了,对于任意实矩阵A的奇异值分解,它的右奇异向量(V的列向量)是 的特征向量,它的左奇异向量(U的列向量)是 的特征向量,而奇异值是这两个对称矩阵相同的非零特征值的平方根(实际上它们两个非零特征值一模一样)。
SVD分解只告诉我们总是存在这样一个分解,并没有说这个分解是唯一的。很显然:特征值次序就可以不一样,显然SVD分解不唯一。但是我们常常把奇异值按照从大到小的顺序排列,这样S就可以由A唯一确定了。[7]和[8]告诉了我们SVD分解什么情况下是唯一的,感兴趣可以看看。
那什么时候SVD分解和特征值分解相等呢?
[10]里面给出了一种说法:
实矩阵A的奇异值分解 可以表示为:
其中k=rank(A),即矩阵A的秩。参照2.2我们知 ,这些奇异值和这两个对称矩阵的相同特征值是一一对应关系(平方根),显然k<=min(m,n)。
使用矩阵的分块乘法,得:
后面一项是0,所以可以化为:
如果我们令X为mxk的矩阵,Y为kxn的矩阵:
那么A可以表示为:
我们把它展开为向量的外积形式,这就是SVD的另一种表达形式:
那么向量x左乘矩阵A是什么呢?我们看看:
是个标量,所以有:
此时Ax已经表示成了 的线性组合,每一项线性系数是 和 的乘积,由矩阵乘法的本质可知,此时可以看成x在V坐标系下 轴上的坐标。结论呼之欲出:在A的作用下,x由n维空间转化到了m维空间中。下一章我们将从空间几何的角度对这个转化进行理解。
我直接复制[9]中的一个例子过来,作者是西电的张剑湖大佬:
矩阵乘法的本质一文中提到过,向量左乘正交矩阵可以达到将向量旋转的效果。我们还看了一个2阶非对称方阵的实例,它的奇异值变换就是对向量进行旋转-缩放-旋转的过程。当时并没有讲维度变化这个细节。
我们对更一般的形式进行分析:从奇异值分解的角度出发, , 就是x在V每个列向量所确定的轴进行投影,是先将x映射到V坐标系中(此时x维度和V确定的空间维度相同,也可以理解为旋转x),然后缩放的同时将维度映射到 坐标系表示的空间的维度,最后映射到 坐标系中(此时 和 坐标系维度相同,可以理解为旋转)。
第一个问题是,为什么不是在 中进行长度为 的伸缩,而在 坐标系中向量的模长却为 呢?
是这样的,拿v1举例吧,它太过特殊,在V坐标系中的投影坐标是(1,0,…,0)T。而Σ不仅把这个n维的进行了扩维,将n维的(1,0,…,0)T变为m维的(1,0,…,0),同时还进行了第一维度上长度为 的伸缩成为了( ,0,…,0)。
所以,在投影到 坐标系之前,v1已经转化成一个m空间的向量,它的模长就是 。而这个m维空间无论用哪组单位正交基来表示,只不过相当于对向量进行旋转换了方向,向量本身的模是不变的。
第二个问题是,如果如问题1所述,那为什么投影到 坐标系中,坐标值恰好与U中的基向量是对应的?
实际上在代数上就是这样没有为什么。从几何角度,我们还是在二维中进行分析吧。假设B点逆时针旋转θ度即为A点,顺时针θ度为C点。 , 坐标系和 , 坐标系就是U和 。现在对于B( ,0),我们要向 , 坐标系中投影,由其相对关系可知,其投影坐标值其实就相当于A点在x,y坐标系中的投影坐标值,也就是(cosθ,sinθ)T* 。
发现了吧,当v1乘以对角阵S维度扩展到m时,此时它的坐标是有一个默认的坐标系的,就如下图中的x,y坐标系。而U和 空间也如下图中关系所示,它们使用默认坐标系中的坐标来表示自己。在默认坐标系下x和y轴向的伸缩变换在 , 中的表示,就如同 , 坐标轴向的伸缩变换在x中的表示,当然使用 , 坐标轴的基向量的表示啊。
我们可以发现,对于x,y坐标系中的向量OB( ,0),无论是逆时针转到了坐标系 , 中变为(cosθ,sinθ)T* ,还是转到 , 坐标系中成为(cosθ,-sinθ)T* ,它的模是不变的。这与问题一是呼应的。
在[2]中,马同学从翻绳游戏开始,对奇异值进行了生动形象的分析,[6]中7.4节也有形变的分析,还有相关例题。感兴趣的可以看一看。
在知乎问题"奇异值的物理意义是什么?"下,看到一位大牛对奇异值的解读[12](发现就是本问题下的一个回答哈哈),个人认为是对奇异值的一种最好的解读。感谢知乎用户“老鸡蛋”。
在"利用SVD进行推荐(2)特征值与特征向量的直观理解"中我们讲过,对于样本A,PCA的计算过程就是计算协方差矩阵 ,然后求前k个最大特征值对应的特征向量得到投影矩阵,从而达到降维的目的。当样本非常多的时候,计算协方差矩阵,还要进行特征值分解,这个计算量挺大的。
我们发现SVD分解 中,左奇异向量 不就是 的特征向量吗?那我们就可以利用SVD分解来计算投影矩阵了。
[13]中Pinard大神说,有些SVD分解算法可以不用求 而直接得到A的右奇异矩阵V,也就是可以直接得到U( 的右奇异矩阵是U),那这就很nice了。
[1] http://www.ams.org/publicoutreach/feature-column/fcarc-svd
[2] https://www.matongxue.com/madocs/306.html
[3] http://www-users.math.umn.edu/~lerman/math5467/svd.pdf
[4] 张绍飞. 矩阵论教程.第2版[M]. 2012.
[5]https://blog.csdn.net/zhongkejingwang/article/details/43053513
[6] Lay D , Lay. 线性代数及其应用[M]. 机械工业出版社, 2017.
[7] http://rakaposhi.eas.asu.edu/s10-cse494-mailarchive/msg00030.html
[8] https://math.stackexchange.com/questions/644327/how-unique-are-u-and-v-in-the-singular-value-decomposition
[9] https://wenku.baidu.com/view/389fabcebceb19e8b8f6ba97.html
[10] https://www.zhihu.com/question/49959130
[11] 申亚男, 张晓丹, 李为东. 线性代数.第2版[M]. 机械工业出版社, 2015.
[12] https://www.zhihu.com/question/22237507
[13] https://www.cnblogs.com/pinard/p/6251584.html
更多精彩内容请移步公众号:推荐算法工程师