特征值分解与奇异值分解

在上一节从线性代数说起中,我们从矩阵是一种线性变换的描述,到缩放作为线性变换的其中一种形式,发现如果一个矩阵所代表的线性变换仅呈现出缩放的形式时,引申出了有趣的性质:特征向量(奇异向量)和特征值(奇异值)。那么它们除了某种程度上表现出“本质特征”外,还有什么作用呢?这一次,我们就来介绍一下其中一种:特征值分解和奇异值分解。至于这两种分解有什么用途,那就比较多了:比如节省存储(分解成三个小矩阵)、降维(以用到特征值分解的PCA为代表)、去噪(小奇异值很有大概率上是噪声,是某些非重要和非本质特征,因此可以去掉)、求Moore-Penrose伪逆、推荐(分解后还原的矩阵元素值作为原本缺失值的一种近似)等。

特征值分解

给定矩阵 A_{n*n}n 个线性无关的特征向量,按列组成方阵,即:

S: [x_1, x_2, \dots, x_n]\\

那么有

\begin{aligned} AS &= A[x_1,x_2,\dots,x_n]\\ &= [\lambda_1x_1, \lambda_2x_2,\dots,\lambda_nx_n]\\ &=[x_1,x_2,\dots,x_n]\Lambda\\ &= S\Lambda \end{aligned}\\

其中 \Lambda 为特征值组成的对角矩阵,因为假设组成特征向量矩阵 Sn 个特征向量线性无关,所以 S 可逆,从上式中就可以推导出对角化以及特征值分解的公式:

S^{-1}AS = \Lambda\\

A = S^{-1}\Lambda S\\

特征值分解的方法比较简单,有趣的是探究什么样的矩阵可以进行特征值分解以及矩阵进行特征值分解之后展现出的矩阵有意思的性质。

我们来看下什么样的矩阵可以进行特征值分解呢,首先得是方阵,这个毫无疑问,不然就不存在特征值,更不要说进行特征值分解了;回顾我们的假设:n 个线性无关的特征向量,这一点尤为关键,因为我们在后续的过程中引入了特征向量矩阵的逆,不是线性无关的话就没有严格意义上的逆矩阵。泛泛地说呢,大部分维度为n 的方阵都有n 个线性无关的特征向量,具体说,当这个方阵有n 个不同的特征值,那么不同特征值对应的特征向量肯定是线性无关的,如果有重复的特征值呢,特征值重复的个数叫做代数重数,这时候就要进一步细致地看了,如果重复的特征值对应的线性无关的特征向量数量(几何重数)和代数重数一致,那么整体来看,也是有n 个线性无关的特征向量的,如果不是呢,那么就不满足条件,无法进行特征值分解了。特殊的,考虑到复数特征值的存在(即矩阵反对称或接近反对称时),当矩阵是实对称矩阵时,总是有n 个线性无关的特征向量,而且特征向量相互正交,即特征向量矩阵 S 是一个正交矩阵,一般写作 Q ,也就是实对称矩阵的特征值分解可以写作:

A = Q\Lambda Q^T\\

最后,以一个需要注意而且容易混淆的地方时,我们的约束是 An 线性无关的特征向量,而不是矩阵 A 本身是否满秩,矩阵 A 无论是否满秩都有可能有 n 个线性无关的特征向量。

许多数学对象都可以通过分解成多个组成部分的形式来帮助我们分析对象的性质,特征值分解也是如此。当我们额外地把对角矩阵 \Lambda 按照特征值的大小来排列时,如果所有特征值都是整数,成为正定矩阵,都是负数则为负定矩阵,都为非负数则称半正定矩阵;当含有零特征值时,矩阵是奇异的,也就是它可以把某些非零向量变换为零向量;我们可以由最大特征值和最小特征值计算出条件数等。

奇异值分解

在刚才特征值分解时我们还讨论只有满足条件的矩阵才可以进行特征值分解,但是对于奇异值分解来说,所有实数矩阵都可以进行,为什么说所有实数矩阵都可以呢,因为奇异值分解由矩阵的本质而来:

我们知道矩阵 A_{m*n} 表示线性变换的一种描述,具体地,我们把它看做从行空间 R^n 到列空间 R^m 的一种线性变换,换一个角度讲,对向量做线性变换时,是把它从行空间 R^n的一组正交基 [v_1, v_2, \dots, v_r, v_{r+1}, \dots, v_n] 的描述,通过矩阵 A_{m*n}变换到列空间 R^m的一组正交基 [u_1, u_2, \dots, u_r, u_{r+1}, \dots, u_n] 的描述上去,其中 r 为矩阵的秩,向量还是同一个,描述变了,其中矩阵A_{m*n}就是那个基(坐标)变换的媒介。进一步来看,为方便,我们使用标准正交基(任意一组基总能通过施密特正交化转换为标准正交基):

A[v_1, v_2, \dots, v_r, v_{r+1}, \dots, v_n] = [u_1, u_2, \dots, u_r, u_{r+1}, \dots, u_n]\Sigma\\

AV = U\Sigma\\

我们知道,V是正交矩阵,故有

A = U\Sigma V^{-1} = U\Sigma V^T\\

至此,我们将矩阵A_{m*n}分解成了一个 m*m 的正交矩阵 U ,一个 m*n 对角矩阵 \Sigma 和一个 n*n 的正交矩阵 V 的乘积的形式,注意的是,给定的矩阵,奇异值是固定的,但是左右奇异向量则是不定的,因此上式中的正交矩阵 UV 可以有多种形式。这里我们取的是 mn 维标准正交基来构成矩阵 UV ,此外根据取值数量的不同,还有紧奇异值分解与截断奇异值分解,分别表示只取 r 组(矩阵的秩)以及前 k 大的奇异值。

再谈特征值与奇异值的关系

上面我们一起看了特征值分解和奇异值分解的适用条件和形式化表示,以及在上一节中我们说矩阵A_{m*n}的非零奇异值是A^TAAA^T非零特征值的正平方根,现在有了奇异值分解,我们可以更清晰地表达这一点:

AA^T = U\Sigma V^T (U\Sigma V^T)^T = U\Sigma V^TV\Sigma^TU^T = U \Sigma\Sigma^TU^T \\ A^TA = (U\Sigma V^T)^TU\Sigma V^T = V\Sigma^TU^TU\Sigma V^T = V\Sigma\Sigma^TV^T

这里 \Sigma 作为奇异值为元素的对角矩阵, \Sigma\Sigma^T则是以奇异值平方为元素的对角矩阵,所以这么看来,A^TAAA^T作为对称矩阵,上面的形式是不是和对称矩阵的特征值分解一样?是的,因此不仅有矩阵A_{m*n}的非零奇异值是A^TAAA^T非零特征值的正平方根,而且奇异值分解形式中的正交矩阵 U 可以是 AA^T 的特征向量,同时正交矩阵 VA^TA 的特征向量。

这里我们仅谈了特征值分解和奇异值分解的形式化问题,后续我们会继续探究他们在机器学习中的应用。


微软中国正在持续招聘,尤其是2021年更是进行的很多的业务扩张和新业务尝试,涉及必应搜索广告、信息流推荐、NLP、Azure cloud and big data service,以及Office,teams,Edge浏览器等应用开发,北京/苏州/上海,junior, senior, principal 各个级别都有,算法、工程、PM和支持等各个岗位也是。

具体岗位可以参考两个来源,一个是微信公众号:微软招聘(joinmicrosoft),里面的文章会有HR们的编辑渲染和耐心介绍,但是岗位并不全,另一个是如下的公司招聘网址,大家可以通过筛选地址、岗位等来查看全面的岗位信息,我们在内推时同样是通过这个网址来去检索信息。

对微软感兴趣的朋友在有了心仪的岗位之后欢迎联系我内推,可以帮助进行面试前的岗位详情和匹配度咨询(找对应组的leader)、注意事项和流程沟通,面试过程中及后的实时进度跟踪。这里的内推主要针对社招同学(公司政策),当然实习和校招的同学们也可以联系我,我也会尽我所能。

邮箱:tax@microsoft.com

这里仅对公共问题做一些简要介绍:

  1. 很多人对英语水平的要求心有疑虑,其实大可不必,就我近四年来的观察了解,除了高级别Principal(~P9)以及PM岗位,他们需要和老外紧密沟通所以对听力和口语要求比较高,其余岗位只要过了六级大可不必担心,正常的邮件沟通就可以,少部分情况下如果你的工作内容跟老外有交集,开会时候打开语音识别字幕,简单会说两句不是问题。
  2. 工作时间相比较国内互联网要良心很多,具体看组,但是据我观察,大家基本六点吃晚饭,吃过之后走的人就很多了,大家看到也觉得很正常。
  3. 更多问题可以联系我,非常乐意解答。
编辑于 2021-04-20 15:15