关注“SIGAI”,选择“星标”或“置顶”
原创技术文章,第一时间获取
转载请在文首注明:本文转自微信公众号SIGAI
文章PDF见:
http://www.tensorinfinity.com/paper_163.html
小编推荐:
六期飞跃计划还剩4个名额,联系小编,获取你的专属算法工程师学习计划(联系小编SIGAI_NO1)
SIGAI特约作者
张凌寒
中国科学院研究生院
研究方向:机器学习, 推荐系统
摘要
SVD(Singular Value Decomposition, 奇异值分解)是线性代数中既优雅又强大的工具, 它揭示了矩阵最本质的变换. 使用SVD对矩阵进行分解, 能得到代表矩阵最本质变化的矩阵元素. 这就好比一个合数能表示为若干质数之积, 分解合数能得到表示该合数的质因数; 复杂周期信号可以表示为若干简单的正弦波和余弦波之和, 使用傅里叶变换能得到表示该信号的简单波; 复杂矩阵所代表的线性变换可由若干个简单矩阵所代表的线性变换组合起来, 使用SVD能找到这些简单矩阵. 本文由以下章节, 对SVD进行阐述:
阐述SVD的数学涵义;
阐述SVD的几何涵义;
阐述SVD的求解过程;
阐述SVD的具体应用;
总结.
关键词: 矩阵论, 数据压缩, 数据降维, 机器学习
SVD的数学涵义
矩阵在线性代数系统中是一个核心的概念, 其从不同的角度出发都能拥丰富的内涵. 对于矩阵Am×n, 当其参与运算
![31366ec53799535155093aea363ffe8f.png](https://i-blog.csdnimg.cn/blog_migrate/d6e0f4aad0c15f91992a29e73399464e.png)
时, 我们可以从以下三个角度看待其角色:
1.矩阵A是线性方程组(1)的系数组成的矩阵, 其每一行是(1)中每一个方程式的系数部分, 通过分析矩阵的秩rank(A)和其极大线性无关组的情况, 我们可以了解(1)的解的情况, 同时, 对于使用高斯消元法等进行求解也比较方便;
2.当m≥nΛrank(A)=n时, 矩阵A是Rn空间中的一个基, 在这个基上面, 有向量=[x1,...xn]T , 而此向量在标准正交基上表示为
=[b1,...bm]T, 此时(1)隐含着一个基变换的关系, 即Ax=Ib,I为标准正交基;
3.矩阵A本身表示一个线性变换, (1)表示其对向量进行线性变换得到向量
的过程.
上述的关于矩阵的各种角色与我们阐述SVD有什么关系呢? 当我们将矩阵视为一种线性变换时, SVD可以帮我们揭示组成该线性变换的最本质的变换, 具体地, SVD揭示了这样的一个事实: 对于任意的矩阵A, 我们总能找到一组单位正交基, 使得A对其进行变换之后, 得到的向量组仍然是正交的. 这样的表述还是相当地晦涩, 我们不妨在二维平面中举一个例子.
设有矩阵A, 其对单位正交基进行线性变换, 得到的向量仍然是彼此正交的, 即
仍然是正交的. 设
方向上的单位向量是
, 长度是σ1,σ2, 则我们可得
![c4bd2c0af5b351a35e73291eabf379ad.png](https://i-blog.csdnimg.cn/blog_migrate/1bad84c52beb7a0cf6d61a30e4495bb1.png)
现在利用矩阵A对向量进行线性变换. 我们先将向量
在单位正交基
上进行表示, 即
![d28526017d4e4d643773609c110d2f64.png](https://i-blog.csdnimg.cn/blog_migrate/c1248cf98703ca9ea4e9f0d019022073.png)
由(2), (3), (4), 我们有
![34c8e671435fc04302785152ccb248b8.png](https://i-blog.csdnimg.cn/blog_migrate/dd2c8f1dada3ff4095db18e59fea0572.png)
至此, 我们由"对于任意的矩阵A, 我们总能找到一组单位正交基, 使得A对其进行变换之后, 得到的向量组仍然是正交的", 即(2)(3)出发, 得到了矩阵A最终的分解形式(6). (6)表达了这样一个事实, 对于任意的矩阵A, 我们总可以将其分解为一个酉矩阵U, 一个对角矩阵∑和另一个酉矩阵的转置VT的乘积, 这便是SVD的核心内容.
SVD的几何涵义
现在我们知道, 对于任意的矩阵A, 我们总可以将其分解为一个酉矩阵U, 一个对角矩阵∑和另一个酉矩阵的转置VT的乘积, 即等式(6)所表述的内容.A=U∑VT表示矩阵A所代表的线性变换可以由更简单的旋转, 拉伸变换进行合成. 这些更简单的变换是怎么进行生效的呢? 我们还是在二维平面中举例说明.
当使用矩阵A对向量进行变化时, 我们可以先将向量
在单位正交基
上进行表示, 即(4)所表述. 我们不妨令
, 则ξ1ξ2是向量
在单位正交基
上的坐标, 即
![62823706bb0e2cef9147ef6aa2a68d59.png](https://i-blog.csdnimg.cn/blog_migrate/b56482989b183540a7530a1a2ea0d8e8.png)
由(6), (7)我们有
![fff7baf80e528022577bb0a7bb7e826c.png](https://i-blog.csdnimg.cn/blog_migrate/40c5a95f05825a21a362c1ab19adedc6.png)
现在我们仔细地来分析(8)中各矩阵的具体操作效果.
![392a28d46339bed1fa5e6a74b414dd94.png](https://i-blog.csdnimg.cn/blog_migrate/4ffa7d262d511e095543629583f8d5c7.png)
如(9)所示, 矩阵A对向量进行线性变换, 其先将向量
用单位正交基V进行表示. 然后使用酉矩阵VT进行旋转, 由酉矩阵的性质我们可知VVT=VTV=I, 所以旋转之后我们可得到标准正交基I. 然后使用矩阵∑对标准正交基I进行拉伸, 使得x-axis,y-axis分别拉伸σ1,σ2倍的长度. 最后再使用酉矩阵U对拉伸之后的正交基进行旋转, 得到最终的基, 从而得到最终的向量为
![7f2a060eedf152e48f712896ba10f08b.png](https://i-blog.csdnimg.cn/blog_migrate/6ff044c9fb9ead4608a81338408a99dc.png)
上述过程可表示为下图
SVD对矩阵A分解得到旋转拉伸操作示意图
通过SVD, 我们找到了能代表矩阵A作为线性变换时最本质的操作. 而σ1,σ2就是所谓的奇异值, 表示对标准正交基各个轴进行拉伸的程度.
SVD的求解过程
上述关于SVD在二维平面上的结论可以轻易地推广到多维情况. 那SVD具体如何求解呢? 由(6)我们知道SVD能使矩阵A进行分解, 现在由(6)出发我们来构造矩阵U∑V, 具体地, 我们有
![83ec393d90e2493bafb13617d52122ad.png](https://i-blog.csdnimg.cn/blog_migrate/368fabfbd5146a2aaf983db2229dc6a0.png)
由实对称矩阵必可正交对角化, 即
![d25b21e668685a81c95f8472e8bc87a6.png](https://i-blog.csdnimg.cn/blog_migrate/79d93e348bbb3248bd078f71148c6f05.png)
其中矩阵Q为酉矩阵, 即满足QT=Q-1. 矩阵Λ=diag(λ1,...λn)为矩阵A的特征值所组成的对角矩阵. 而矩阵AAT,ATA是实对称矩阵, 矩阵UV是酉矩阵, 矩阵∑2是对角矩阵, 所以由(11), (12), (13), 我们对矩阵AAT,ATA进行正交对角化, 即可得到矩阵UV. 再由
![7d08b7304872334fb5e41b7d25450963.png](https://i-blog.csdnimg.cn/blog_migrate/d2305a8833c1ea11e09eb76e63ef6d81.png)
由(14)我们便可得到矩阵∑. 由(11), (12), (13), (14)即可得完整的SVD分解.
SVD的具体应用
除了前文所述, SVD揭示了矩阵进行线性变换时最本质的变换, 使我们能了解矩阵的具体操作, 这是SVD最直接的应用. 除此之外, SVD还有许多其他方面的应用, 下面举例说明.
压缩
许多存储在计算机中的数据都是以矩阵的形式存在的, 进行合理的矩阵压缩能把存储矩阵所占的空间缩减下来. 例如图像, 事实上一个灰度图像就是一个矩阵, 矩阵中的每个元素就是灰度图像的像素值. 如果我们有灰度图Am×n, 由(6)我们有
![f7afdc42cd168df07287aabaaa1e2041.png](https://i-blog.csdnimg.cn/blog_migrate/5efe7e2e94bd5db2ee1c27031ede5230.png)
奇异值σI,i=1,...n有一定的大小关系, 我们不妨设σ1≥σ2≥...σn, 取前k个分量, 则由(15)可知, 若一个像素为1字节, 原始图像需m×n字节的存储空间, 而使用SVD分解后只需k×(1+m+n)字节的存储空间, 以此达到压缩图像(矩阵)的目的.
降维
数据降维在机器学习, 数据挖掘等领域是一个重要的技术, 通过数据降维可以挖掘数据的关键信息, 降低运算的成本. 使用SVD进行降维的核心思想是, 通过对feature向量(如机器学习中的数据向量)所组成的矩阵X进行分解, 可直接得到降维后的feature向量矩阵, 这其实就是PCA(主成分分析, Principal component analysis)的过程[5], 具体地, 令矩阵X是若干feature向量所组成的feature向量矩阵且矩阵X已经进行去均值处理, 则我们有
![afbe765fe0d29ea1720ab0135390da7e.png](https://i-blog.csdnimg.cn/blog_migrate/92040808e2d854ff1503ab01ffd571ec.png)
(16)即为PCA的求解过程, 熟悉PCA的同学都知道, 这个过程实际上是通过对矩阵XXT进行正交对角化求出投影矩阵W, 使得投影后的矩阵Y=WTX各个维度相互独立, 即YYT为对角矩阵, 然后取方差最大的若干维以达到降维的效果. 所以我们需要对协方差矩阵XXT进行对角化XXT=YYTWT以求出投影矩阵W. 而现在我们可以直接对协方差矩阵进行SVD分解
![1ede81cfe76f49383ce3816eff419712.png](https://i-blog.csdnimg.cn/blog_migrate/ffc22a7dbd8e76c5827a3dc859a602dc.png)
(17)中酉矩阵U即为投影矩阵W. 由(17)可得
![70a7cd69e22cf5929b034cdad4825515.png](https://i-blog.csdnimg.cn/blog_migrate/1b94c5141db4efd8b05e26b151e22327.png)
由(18)我们可得投影后的矩阵Y=∑VT, 此时我们只需
由(19)即可直接求出投影后的向量, 而无需先求得投影矩阵W再进行投影计算. 而后我们便可以取方差最大的若干维, 从而达到降维的目的.
总结
本文从SVD的数学原理出发, 推导出其一般形式, 并在此基础上给出了几何解释. 然后介绍了SVD的求解方法和具体应用. SVD是一个非常优雅且实用的方法, 其应用场景颇多, 是构成许多现代计算系统的核心部件.
引用
[1] Austin, D. (2019).We Recommend a Singular Value Decomposition. [online]Ams.org.Availableat: http://www.ams.org/publicoutreach/feature-column/fcarc-svd [Accessed 27 Feb. 2019].
[2] Wikipedia contributors. "酉矩阵."维基百科, 自由的百科全书. 维基百科, 自由的百科全书,15Nov.2018.Web.15Nov.2018
‹https://zh.wikipedia.org/w/index.phptitle=%E9%85%89%E7%9F%A9%E9%98%B5&oldid=52035033›.
[3] Cnblogs.com. (2017).奇异值分解(SVD)原理与在降维中的应用 - 刘建平Pinard - 博客园.[online]Availableat: https://www.cnblogs.com/pinard/p/6251584.html [Accessed 4 Mar. 2019].
[4] 線代啟示錄. (2011). 實對稱矩陣可正交對角化的證明[online]Availableat: https://ccjou.wordpress.com/2011/02/09/%E5%AF%A6%E5%B0%8D%E7%A8%B1%E7%9F%A9%E9%99%A3%E5%8F%AF%E6%AD%A3%E4%BA%A4%E5%B0%8D%E8%A7%92%E5%8C%96%E7%9A%84%E8%AD%89%E6%98%8E/ [Accessed 4 Mar. 2019].
[5] Li, E. (2018). 求pca的时候,能不能不用协方差矩阵?[online]Zhihu.com.Availableat:https://www.zhihu.com/question/39234760/answer/80323126 [Accessed 29 Mar. 2019].
本文为SIGAI原创
如需转载,欢迎发消息到本订号
全文PDF见:http://www.tensorinfinity.com/paper_163.html
看完欢迎转发推荐哟