奇异值分解(Singular Value Decomposition,SVD) 是线性代数中重要的矩阵分解,是特征分解在任意矩阵上的推广,在立体视觉、三维重建领域应用非常广泛。由于可以用于求解线性方程的最小二乘解,所以在求解本质矩阵、单应性矩阵、点云刚性变换矩阵时,都能用到SVD。本篇即给大家简单介绍下奇异值分解,并通过公式推导来说明其在线性最小二乘解Ax=bAx=bAx=b上的应用。

文章目录

  • 奇异值分解(SVD Decomposition)定义
  • SVD的一些特性
  • SVD求解线性最小二乘问题Ax=b

奇异值分解(SVD Decomposition)定义

对于任意矩阵A∈Rm×nA\in R^{m\times n}A∈Rm×n,存在正交矩阵U∈Rm×mU\in R^{m\times m}U∈Rm×m,V∈Rn×nV\in R^{n\times n}V∈Rn×n,以及对角矩阵Σ∈Rm×n\Sigma \in R^{m\times n}Σ∈Rm×n:


其中,对角线元素满足:
σ1≥⋯≥σr≥σr+1=⋯=σmin⁡(m,n)=0\sigma_1\geq\cdots\geq\sigma_r\geq\sigma_{r+1}=\cdots=\sigma_{\min(m,n)}=0σ1​≥⋯≥σr​≥σr+1​=⋯=σmin(m,n)​=0
使得,A=UΣVTA=U\Sigma V^TA=UΣVT。

此分解叫做矩阵AAA的奇异值分解(Singular Value Decomposition),是一个非常重要的矩阵分解,对角矩阵Σ\SigmaΣ的对角线元素σi\sigma_iσi​叫做矩阵AAA的奇异值。矩阵UUU的列向量成为左奇异向量,矩阵VVV的列向量成为右奇异向量。

使用正交矩阵VVV,可得到以下公式:
AV=UΣAV=U\SigmaAV=UΣ

这可解释为,存在一组特殊的正交向量集(例如VVV的列向量集),通过矩阵AAA映射到另一组正交向量集(例如UUU的列向量集)。

SVD的一些特性

给定矩阵AAA的一组SVD分解
A=UΣVTA=U\Sigma V^TA=UΣVT

其中,σ1≥⋯≥σr≥σr+1=⋯=σmin⁡(m,n)=0\sigma_1\geq\cdots\geq\sigma_r\geq\sigma_{r+1}=\cdots=\sigma_{\min(m,n)}=0σ1​≥⋯≥σr​≥σr+1​=⋯=σmin(m,n)​=0

存在以下推论(R(A)R(A)R(A)和N(A)N(A)N(A)分别为矩阵AAA的值域空间和零空间):

  • rank(A)=rrank(A)=rrank(A)=r
  • R(A)=R([u1,...ur])R(A)=R([u_1,...u_r])R(A)=R([u1​,...ur​])
  • N(A)=R([ur+1,...,un])N(A)=R([u_{r+1},...,u_n])N(A)=R([ur+1​,...,un​])
  • R(AT)=R([v1,...vr])R(A^T)=R([v_1,...v_r])R(AT)=R([v1​,...vr​])
  • N(AT)=R([vr+1,...,vm])N(A^T)=R([v_{r+1},...,v_m])N(AT)=R([vr+1​,...,vm​])

如果我们引入
Ur=[u1,...,ur],Σ=diag(σ1,...,σr),Vr=[v1,...,vr]U_r=[u_1,...,u_r],\Sigma=diag(\sigma_1,...,\sigma_r),V_r=[v_1,...,v_r]Ur​=[u1​,...,ur​],Σ=diag(σ1​,...,σr​),Vr​=[v1​,...,vr​]

则有
A=UrΣrVrT=∑i=1rσiuiviTA=U_r\Sigma_rV_r^T=\sum_{i=1}^r\sigma_iu_iv_i^TA=Ur​Σr​VrT​=i=1∑r​σi​ui​viT​
这称为矩阵AAA的二进制分解(dyadic decomposition),即将秩为rrr的矩阵AAA分解为rrr个秩为1的矩阵之和。

同时,可以得到
ATA=VΣTΣVTandAAT=UΣΣTUTA^TA=V\Sigma^T\Sigma V^T and AA^T=U\Sigma\Sigma^TU^TATA=VΣTΣVTandAAT=UΣΣTUT

可知,奇异值的平方σi2,i=1,...,p\sigma_i^2,i=1,...,pσi2​,i=1,...,p是对称矩阵ATAA^TAATA和AATAA^TAAT的特征值,viv_ivi​和uiu_iui​分别是对应的特征向量。 证明如下图:

该结论很有用,我们在解Ax=0Ax=0Ax=0时,需要求ATAA^TAATA的最小特征值对应的特征向量,即为SVD分解后矩阵VVV的最后一列。另一种应用场景是协方差矩阵的PCA分析时,可直接以SVD分解后的矩阵VVV各列为各方向矢量。

通过该结论,我们很容易的可以计算矩阵AAA的2-范数和Frobenius范数:
∣∣A∣∣2=max⁡x≠0∣∣Ax∣∣2∣∣x∣∣2=max⁡x≠0xTATAxxTx=max⁡x≠0xTλATAxxTx=max⁡x≠0λATA=σ1∣∣A∣∣F=∑i=1m∑j=1naij2=trace(ATA)=σ12+⋯+σp2,p=min⁡(m,n)\begin{aligned} ||A||_2&=\sqrt{\max_{x\neq0}\frac{||Ax||_2}{||x||_2}}=\sqrt{\max_{x\neq0}\frac{x^TA^TAx}{x^Tx}}=\sqrt{\max_{x\neq0}\frac{x^T\lambda_{A^TA}x}{x^Tx}}=\sqrt{\max_{x\neq0}\lambda_{A^TA}}=\sigma_1\\ ||A||_F&=\sqrt{\displaystyle\sum_{i=1}^m\sum_{j=1}^na_{ij}^2}=\sqrt{trace(A^TA)}=\sqrt{\sigma_1^2+\cdots+\sigma_p^2},p=\min(m,n) \end{aligned}∣∣A∣∣2​∣∣A∣∣F​​=x​=0max​∣∣x∣∣2​∣∣Ax∣∣2​​​=x​=0max​xTxxTATAx​​=x​=0max​xTxxTλATA​x​​=x​=0max​λATA​​=σ1​=i=1∑m​j=1∑n​aij2​​=trace(ATA)​=σ12​+⋯+σp2​​,p=min(m,n)​

SVD求解线性最小二乘问题Ax=b

我们再来看SVD的经典应用:解线性方程的最小二乘解

考虑一个线性最小二乘问题Ax=bAx=bAx=b:
min⁡x∣∣Ax−b∣∣22\min_x||Ax-b||_2^2xmin​∣∣Ax−b∣∣22​

给定矩阵A∈Rm×nA\in R^{m\times n}A∈Rm×n的一组SVD分解:A=UΣVTA=U\Sigma V^TA=UΣVT

根据矩阵UUU和VVV的正交性,有
∣∣Ax−b∣∣22=∣∣UT(Ax−b)∣∣22=∣∣UTAx−UTb∣∣22=∣∣ΣVTx−UTb∣∣22||Ax-b||_2^2=||U^T(Ax-b)||_2^2=||U^TAx-U^Tb||_2^2=||\Sigma V^Tx-U^Tb||_2^2∣∣Ax−b∣∣22​=∣∣UT(Ax−b)∣∣22​=∣∣UTAx−UTb∣∣22​=∣∣ΣVTx−UTb∣∣22​

另z=VTxz=V^Txz=VTx,则有
∣∣Ax−b∣∣22=∣∣ΣVTx−UTb∣∣22=∑i=1r(σizi−uiTb)2+∑i=r+1m(uiTb)2||Ax-b||_2^2=||\Sigma V^Tx-U^Tb||_2^2=\displaystyle\sum_{i=1}^r(\sigma_iz_i-u_i^Tb)^2+\sum_{i=r+1}^m(u_i^Tb)^2∣∣Ax−b∣∣22​=∣∣ΣVTx−UTb∣∣22​=i=1∑r​(σi​zi​−uiT​b)2+i=r+1∑m​(uiT​b)2

因此,
min⁡x∣∣Ax−b∣∣22=min⁡x(∑i=1r(σizi−uiTb)2+∑i=r+1m(uiTb)2)\min_x||Ax-b||_2^2=\min_x(\displaystyle\sum_{i=1}^r(\sigma_iz_i-u_i^Tb)^2+\sum_{i=r+1}^m(u_i^Tb)^2)xmin​∣∣Ax−b∣∣22​=xmin​(i=1∑r​(σi​zi​−uiT​b)2+i=r+1∑m​(uiT​b)2)

显然,当σizi=uiTb\sigma_iz_i=u_i^Tbσi​zi​=uiT​b时,取最小,则最小二乘解为:
zi=uiTbσi,i=1,...,rzi=arbitrary,i=r+1,...,n\begin{aligned} z_i&=\frac{u_i^Tb}{\sigma_i},i=1,...,r\\ z_i&=arbitrary,i=r+1,...,n \end{aligned}zi​zi​​=σi​uiT​b​,i=1,...,r=arbitrary,i=r+1,...,n​

最小值为
min⁡x∣∣Ax−b∣∣22=∑i=r+1m(uiTb)2\min_x||Ax-b||_2^2=\sum_{i=r+1}^m(u_i^Tb)^2xmin​∣∣Ax−b∣∣22​=i=r+1∑m​(uiT​b)2

由z=VTxz=V^Txz=VTx,可得x=Vzx=Vzx=Vz,因此,通过SVD来求线性最小二乘解的公式为
x=Vzzi=uiTbσi,i=1,...,rzi=arbitrary,i=r+1,...,n\begin{aligned} x&=Vz\\ z_i&=\frac{u_i^Tb}{\sigma_i},i=1,...,r\\ z_i&=arbitrary,i=r+1,...,n \end{aligned}xzi​zi​​=Vz=σi​uiT​b​,i=1,...,r=arbitrary,i=r+1,...,n​

在上式中我们发现,当r=nr=nr=n时,有唯一最小二乘解,当r<nr<nr<n时,有无数最小二乘解,此时我们可求最小范数解:
x†=Vz†zi†=uiTbσi,i=1,...,rzi†=0,i=r+1,...,n\begin{aligned} x_\dagger&=Vz_\dagger\\ z_i^\dagger&=\frac{u_i^Tb}{\sigma_i},i=1,...,r\\ z_i^\dagger&=0,i=r+1,...,n \end{aligned}x†​zi†​zi†​​=Vz†​=σi​uiT​b​,i=1,...,r=0,i=r+1,...,n​

我们知道最小二乘解也可通过(ATA)−1(ATb)(A^TA)^{-1}(A^Tb)(ATA)−1(ATb)来求解,而通过SVD求解的优点是不需要复杂的求逆运算,且可处理ATAA^TAATA为奇异阵不可逆的情况。

博主简介:
Ethan Li 李迎松(知乎:李迎松)
武汉大学 摄影测量与遥感专业博士

主方向立体匹配、三维重建

2019年获测绘科技进步一等奖(省部级)

爱三维,爱分享,爱开源
GitHub: https://github.com/ethan-li-coding
邮箱:ethan.li.whu@gmail.com

个人微信:

欢迎交流!

关注博主不迷路,感谢!
博客主页:https://ethanli.blog.csdn.net

【代数之美】奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用相关推荐

  1. 矩阵特征值分解与奇异值分解(SVD)含义解析及应用

    原文链接:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是" ...

  2. 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用

    作者:郑宁 链接:https://www.zhihu.com/question/22237507/answer/53804902 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  3. 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,有相当多的应用与奇异值都可以扯上关系,它不光可以用于降维算法中的特征分解,比如做f ...

  4. 矩阵论基础知识4——强大的矩阵奇异值分解(SVD)及其应用

    强大的矩阵奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如 ...

  5. 奇异值分解(SVD)原理详解

    奇异值分解(SVD)原理详解 一.奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就 ...

  6. 奇异值分解(SVD)原理详解及推导(转载)

    转载自:http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补 ...

  7. 关于奇异值以及奇异值分解SVD的思考

    前言: SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手.SVD的原理不难,只要有基本的线性代数知识就可以理解,实现也 ...

  8. 线性代数学习笔记11-2:总复习Part2(相似对角化、对称矩阵、奇异值分解SVD)

    下面的一系列分解,涉及了线性代数中的各个重要知识点: 关于求解方程组的分解: Ch1[矩阵乘法角度] 矩阵 A \mathbf A A=列向量矩阵 C \mathbf C C和行向量矩阵 R \mat ...

  9. 主成分分析(PCA)与矩阵奇异值分解(SVD)

    1 矩阵奇异值分解SVD 1.1 矩阵奇异值分解的数学原理 在关于SVD(Singular Value Decomposition)的讲解中将涉及稍微多一点的数学推导. 定义:设 A A A是秩为 r ...

  10. 矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)

    ,#1. 用途# 1.1 应用领域 最优化问题:最小二乘问题 (求取最小二乘解的方法一般使用SVD) 统计分析:信号与图像处理 求解线性方程组: Ax=0或Ax=b Ax = 0 或 Ax =b 奇异 ...

最新文章

  1. 敏捷开发的艺术读书笔记
  2. 源码分析(一) 进程cleos的命令解析
  3. WLC HA-维护模式(Maintenance Mode)
  4. Octave中无法使用rgb2gray()函数
  5. plsql 无法解析指定的连接标识符_Java方法加载、解析、存储、调用
  6. mysql文字字符集_MySQL字符集
  7. Java多线程之集合类(线程安全和不安全)
  8. 08_MinNumberInRotateArrary
  9. 暴力删除文件(文件夹)之为所欲为
  10. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
  11. redux-saga使用
  12. kotlin xml布局_Android工具栏教程– XML布局和Kotlin
  13. 现在维吾尔语在计算机中发展,维吾尔语手写体在线计算机识别技术研究.doc
  14. Java对象使用的重要细节
  15. Dz插件-Discuz插件-免费Discuz采集伪原创发布插件
  16. 使用管理员权限强制删除文件夹
  17. pcb成型板aoi检测_PCB设备:一款新的自动光学检测(AOI)系统
  18. VBA案例8:实现在ppt中写vba,控制动态图
  19. 激光导引头电子舱测试系统软件的研究与开发
  20. 7.16 两行代码实现全选checkAll

热门文章

  1. redhat 8常用命令实践
  2. 那些你不愿说给领导的话
  3. 计算机图形学-五角星的画法(转)
  4. LeetCode-75. 颜色分类(荷兰国旗问题)
  5. 第62页的gtk+编程例子——菜单
  6. vue 数据看板大屏适配方案
  7. 你小子代码写成这样,老夫也无可奈何
  8. PDF虚拟打印机有什么用?关于PDF虚拟打印机你要知道的事情都在这
  9. linux cat 颜色,使用lolcat为您的Linux终端带来彩虹般美丽的色彩
  10. 【论文笔记】AutoML: A survey of the state-of-the-art(下篇)