原文地址1:https://www.face2ai.com/Math-Linear-Algebra-Chapter-6-7转载请标明出处

Abstract: 本文介绍SVD,奇异值分解,应该可以算是本章最后的高潮部分了,也是在机器学习中我们最常用的一种变换,我们经常需要求矩阵的特征值特征向量,比如联合贝叶斯,PCA等常规操作,本文还有两个线性代数的应用,在图像压缩上,以及互联网搜索上。
Keywords: Singular Value Decomposition,JPEG2000,Eigenvalues,Eigenvectors

SVD分解

今天的废话关于学习知识,最近看到一种说法,我觉的非常的形象,有个大神(是谁我忘了),他说已知的知识像一个圆圈,而自己能感受的未知就是紧邻圆圈,圆外部的区域,当你知道的知识越来越多,圆圈不断扩大,圆周也随之扩大,所以你会越来越发现自己无知,那么就会更努力的去学习,所以越有知识的人越谦逊,尤其是对待知识上,尊重知识,探索未知领域是人类文明存在的根本动力。

奇异值分解 (Singular Value Decomposition)

SVD,熟悉的名字,如果不学习线性代数,直接机器学习,可能最先接触的就是SVD,所以我记得在写上个系列的博客的时候(CSDN,图像处理算法)就说到过SVD,当时还调侃了下百度,每次搜SVD出来的都是一把枪(报告政府,这个枪是穿越火线里面的,没超过1.7J)

这张分解图是我无意中发现的,ak47的发明人说过,如果一把枪,零件已经精简到最少了,那么这个才是精品,类似的意思上篇博客也说过,矩阵变换到最简单的形式,能够体现出其最重要的性质。
SVD,奇异值分解,与QR,LU,SΛS−1S\Lambda S^{-1}SΛS1 等变换类似,其经过变换后会得到一个结构特异性质非凡的矩阵,SVD分解的结果和形式与对角化都非常相似,只是在形式和思路上更复杂,或者说如果说Jordan 是矩阵的对角化的扩展,因为有些矩阵特征向量不完全,那么SVD也是对角化的扩展,因为有些矩阵并不是方的。
所以SVD也是对角化,并且拥有比 A=SΛS−1A=S\Lambda S^{-1}A=SΛS1 更完美的性质,但却是也复杂了一些,A=SΛS−1A=S\Lambda S^{-1}A=SΛS1 有以下几个问题,需要完善:

  1. S中特征向量一般不是正交的,除非A是对称矩阵
  2. A并不是总有足够的特征值,这个是Jordan解决的问题,多个特征值相等,其对应于一个特征向量的时候,Jordan可以写成一块一块的对角矩阵
  3. A必须是方的方的方的

Singular Vectors作为eigenvectors 的替代品,可以完美解决上述问题,但是作为代价,我们的计算过程会变得复杂,并且Singular Vectors有两组,uuuvvv

uuu 对应的是AATAA^TAAT 的特征向量,因为 AATAA^TAAT 对称,所以 uuu 们可以选择相互正交的一组。
同理 vvv 对应 ATAA^TAATA 的特征向量,因为ATAA^TAATA 对称,所以 vvv 们也可以选择相互正交的一组。
这里注意是选择,因为你也可以选择不正交的,但是不正交的可能就会很麻烦了。

铺垫的差不多 ,然后我们有下面的这条重要性质,为什么会成立后面有证明,现在就告诉你SVD究竟是个啥子鬼:
Av1=σ1u1Av2=σ2u2⋮Avn=σnunAv_1=\sigma_1u_1\\ Av_2=\sigma_2u_2\\ \vdots\\ Av_n=\sigma_nu_n\\ Av1=σ1u1Av2=σ2u2Avn=σnun

v1,…,vnv_1,\dots,v_nv1,,vnATAA^TAATA 的特征向量,所以 vvv 是矩阵A的Row Space
u1,…,unu_1,\dots,u_nu1,,unAATAA^TAAT 的特征向量,所以 uuu 是矩阵A的Column Space
σ1,…,σn\sigma_1,\dots,\sigma_nσ1,,σn 全部为正数,称为矩阵A的奇异值。

然后下面我们把 uuuvvv 组合成矩阵 UUUVVV ,那么根据对称矩阵的性质,UTU=IU^TU=IUTU=I 同理 VTV=IV^TV=IVTV=I 那么接下来我们来组合一下:

AV=UΣA[v1…vr]=[u1…ur][σ1⋱σr]AV=U\Sigma \\ A \begin{bmatrix} &&\\ v_1&\dots&v_r\\ && \end{bmatrix}= \begin{bmatrix} &&\\ u_1&\dots&u_r\\ && \end{bmatrix} \begin{bmatrix} \sigma_1&&\\ &\ddots&\\ &&\sigma_r \end{bmatrix} AV=UΣAv1vr=u1urσ1σr

矩阵形式就是这样喽,没什么解释的,就是上面计算的组合形式,但是注意这里有个很重要的参数,rrr 没错,就是矩阵的rank,这里rank表示了矩阵A的Singular Values的数量,所以上面计算从规模上是:
(m×n)(n×r)=(m×r)(r×r)m×r=m×r(m\times n)(n\times r)=(m\times r)(r\times r)\\ m\times r=m\times r (m×n)(n×r)=(m×r)(r×r)m×r=m×r
从矩阵相乘的规模上也能看出等式没有问题,但是这个r有的问题,可以肯定的是,有效的Singular vector有r组,但是这样与原始矩阵形状差的有点多,那么就补一补,虽然补的都是没用的,但是也算是整齐划一了,首先 Σ\SigmaΣ 中缺少的只能补0 ,所以对应的V就只能补A的Nullspace了,因为这样 AVAVAV 的补充部分是0,同理,为了配合V,U添加的是left nullspace,并且这些添加的无用值也要选择orthonormal的,以保证UTU=IU^TU=IUTU=IVTV=IV^TV=IVTV=I

其实这里隐藏了一个重要的知识点,就是四个空间的那课,矩阵的rowspace和nullspace正交column space与left nullspace正交,而V本来是A的行空间正交基,那么添加的一定是Nullspace中的正交基,以保证矩阵正交,所以完美结合,(如果忘了四个空间点击查看)

所以更一般化的表示:
AV=UΣA[v1…vn]=[u1…um][σ1⋱σr]AV=U\Sigma \\ A \begin{bmatrix} &&\\ v_1&\dots&v_n\\ && \end{bmatrix}= \begin{bmatrix} &&\\ u_1&\dots&u_m\\ && \end{bmatrix} \begin{bmatrix} \sigma_1&&&\\ &\ddots&&\\ &&\sigma_r&\\ &&& \end{bmatrix} AV=UΣAv1vn=u1umσ1σr
规模上是,注意 Σ\SigmaΣ 不是方阵:
(m×n)(n×n)=(m×m)(m×n)m×n=m×n(m\times n)(n\times n)=(m\times m)(m\times n)\\ m\times n=m\times n (m×n)(n×n)=(m×m)(m×n)m×n=m×n
Σ\SigmaΣ 被填充成立 m×nm\times nm×n 通过在矩阵中加入0来实现,新的矩阵U和V依旧满足 VTV=IV^TV=IVTV=I以及 UTU=IU^TU=IUTU=I

那么我们的A就可以分解了
AV=UΣfor:VVT=Iso:A=UΣVTSVDis:A=u1σ1v1T+⋯+urσrvrTAV=U\Sigma\\ for:\;VV^T=I\\ so:\\ A=U\Sigma V^T\\ SVD\,\,\, is:\\ A=u_1\sigma_1 v_1^T+\dots+u_r\sigma_r v_r^T AV=UΣfor:VVT=Iso:A=UΣVTSVDis:A=u1σ1v1T++urσrvrT
其中uuum×1m\times 1m×1vTv^TvT1×n1\times n1×n 的,所以A是 m×nm\times nm×n 的没有问题,并且所有 uiσrviTu_i\sigma_r v_i^TuiσrviT d的rank都是1,这就是Sigular Values Decomposition了,这里反复的验证规模的原因是因为A不是方阵,所以,在做乘法的时候要非常小心矩阵规模。那个小的只有r个有用值的SVD我们叫他reduced SVD(其实我觉得这个更有实际意义,毕竟这里面才有最重要的信息,新增的那些最后奇异值都是0了,也就没有啥作用了)可以表示为:
A=UrΣrVrTA=U_r\Sigma_r V_r^T A=UrΣrVrT
写了这么多,我们到现在还不知道Singular是怎么计算出来的,那么我们先给出结论,后面继续证明:
σi2=λi\sigma_i^2=\lambda_i σi2=λi
其中λi\lambda_iλiATAA^TAATAAATAA^TAAT 的特征值。
那么要问ATAA^TAATAAATAA^TAAT 拥有相同的特征值,为什么?
这个我真没想明白怎么证明,所以这个地方算个坑,会了再回来填

然后我们得到Singular Values后,我们把他们按照从大到小的顺序排列,然后写成上面SVD的形式:
σ1≥σ2≥σ3⋯≥σn\sigma_1 \geq \sigma_2 \geq \sigma_3 \dots \geq \sigma_n σ1σ2σ3σn

下面举个小

【线性代数】6-7:SVD分解(Singular Value Decomposition-SVD)相关推荐

  1. MIT | 数据分析、信号处理和机器学习中的矩阵方法 笔记系列 Lecture 6 Singular Value Decomposition (SVD)

    本系列为MIT Gilbert Strang教授的"数据分析.信号处理和机器学习中的矩阵方法"的学习笔记. Gilbert Strang & Sarah Hansen | ...

  2. 奇异值(Singular value decomposition SVD)分解

    本文摘自两篇博客,感谢博主分享 一.原文地址:http://blog.csdn.net/wangzhiqing3/article/details/7446444 SVD分解 SVD分解是LSA的数学基 ...

  3. Singular Value Decomposition(SVD)--奇异值分解【转】

    奇异值分解是线性代数中一种重要的矩阵分解,在信号处理.统计学等领域有重要应用.奇异值分解在某些方面与对称矩阵或Hermite矩阵基于特征向量的对角化类似.然而这两种矩阵分解尽管有其相关性,但还是有明显 ...

  4. 特征分解(eigendecomposition) and 奇异值分解(singular value decomposition, SVD)

  5. Chapter 7 (Symmetric Matrices and Quadratic Forms): The Singular Value Decomposition (奇异值分解, SVD)

    目录 奇异值 奇异值的定义 非零奇异值 The Singular Value Decomposition (SVD) 奇异值分解 一些性质 几何解释 紧奇异值分解与截断奇异值分解 奇异值分解与矩阵近似 ...

  6. 奇异值分解(Singular Values Decomposition,SVD)

    奇异值分解 1.奇异值分解 1.1 变换(Transformations) 1.2 线性变换(Linear Transformations) 1.3 降维(Dimensionality Reducti ...

  7. 机器学习笔记(二)矩阵和线性代数 例:用Python实现SVD分解进行图片压缩

    线性代数基本只要是理工科,都是必修的一门课.当时学习的时候总是有一个疑惑,这个东西到底是干嘛用的?为什么数学家发明出这么一套方法呢,感觉除了解方程没发现有什么大用啊!但随着学习的深入,慢慢发现矩阵的应 ...

  8. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

    学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...

  9. 什么是奇异值?奇异值分解是什么?SVD分解详解及实战

    什么是奇异值?奇异值分解是什么?SVD(Singular Value Decomposition)分解详解及实战 TSVD:Truncated Singular Value Decomposition ...

最新文章

  1. 软件工程--第三周学习进度
  2. 配置管理漫漫谈之CCB
  3. 大家放松下吧,咱家先在首页呆会儿!
  4. JqueryMobile学习之二---对话框
  5. python函数参数传递机制_Python 学习笔记(一) 理解Python的函数传参机制
  6. 吴恩达团队最新成果:用深度学习预测死亡概率,改善临终关怀
  7. Java集合——题目
  8. 关于Fragment的setUserVisibleHint() 方法和onCreateView()的执行顺序
  9. 港顺计算机怎么放音乐,csgo怎么放歌 CSGO内置语音播放歌曲
  10. 简单工具之 ---- IP地址快速修改脚本
  11. 杭电Oj刷题(2009)
  12. android 6.0截屏的实现,android截屏实现
  13. MongoBD命令大全
  14. C# serialport串口接收数据异常,出现很多3F的解决方法
  15. Oracle字符集讨论(转)
  16. 零信任架构和访问控制模型ABAC
  17. “实践是检验真理的唯一标准”是公理,公理是原点,原点是循环论证
  18. 高中理科学生成绩管理系统(C语言课程设计)
  19. js根据银行卡号判断属于哪个银行并返回银行卡类型
  20. 易语言单窗口单ip教程_手游搬砖经验单窗口单IP防封黄金法则

热门文章

  1. 多源异构航班航迹数据流实时融合方法研究
  2. 嵌入式linux qos tc,iptables和tc脚本实现智能QOS
  3. android五大布局的作用,Android五大布局与实际应用详解
  4. Wormhole网站
  5. java 识别doc、docx
  6. stripped 和 not stripped
  7. No.01统计学之数据的描述性统计
  8. ARM 汇编指令 DCD
  9. Datawhale NLP入门:Task5 基于深度学习的文本分类2
  10. 安卓(java)计算器简单实现