【代数之美】奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用
奇异值分解(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ΣrVrT=i=1∑rσiuiviT
这称为矩阵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=maxx≠0∣∣Ax∣∣2∣∣x∣∣2=maxx≠0xTATAxxTx=maxx≠0xTλATAxxTx=maxx≠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=0maxxTxxTATAx=x=0maxxTxxTλATAx=x=0maxλATA=σ1=i=1∑mj=1∑naij2=trace(ATA)=σ12+⋯+σp2,p=min(m,n)
SVD求解线性最小二乘问题Ax=b
我们再来看SVD的经典应用:解线性方程的最小二乘解。
考虑一个线性最小二乘问题Ax=bAx=bAx=b:
minx∣∣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(σizi−uiTb)2+i=r+1∑m(uiTb)2
因此,
minx∣∣Ax−b∣∣22=minx(∑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(σizi−uiTb)2+i=r+1∑m(uiTb)2)
显然,当σizi=uiTb\sigma_iz_i=u_i^Tbσizi=uiTb时,取最小,则最小二乘解为:
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}zizi=σiuiTb,i=1,...,r=arbitrary,i=r+1,...,n
最小值为
minx∣∣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(uiTb)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}xzizi=Vz=σiuiTb,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†=σiuiTb,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上的应用相关推荐
- 矩阵特征值分解与奇异值分解(SVD)含义解析及应用
原文链接:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是" ...
- 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用
作者:郑宁 链接:https://www.zhihu.com/question/22237507/answer/53804902 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- 【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,有相当多的应用与奇异值都可以扯上关系,它不光可以用于降维算法中的特征分解,比如做f ...
- 矩阵论基础知识4——强大的矩阵奇异值分解(SVD)及其应用
强大的矩阵奇异值分解(SVD)及其应用 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如 ...
- 奇异值分解(SVD)原理详解
奇异值分解(SVD)原理详解 一.奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就 ...
- 奇异值分解(SVD)原理详解及推导(转载)
转载自:http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补 ...
- 关于奇异值以及奇异值分解SVD的思考
前言: SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手.SVD的原理不难,只要有基本的线性代数知识就可以理解,实现也 ...
- 线性代数学习笔记11-2:总复习Part2(相似对角化、对称矩阵、奇异值分解SVD)
下面的一系列分解,涉及了线性代数中的各个重要知识点: 关于求解方程组的分解: Ch1[矩阵乘法角度] 矩阵 A \mathbf A A=列向量矩阵 C \mathbf C C和行向量矩阵 R \mat ...
- 主成分分析(PCA)与矩阵奇异值分解(SVD)
1 矩阵奇异值分解SVD 1.1 矩阵奇异值分解的数学原理 在关于SVD(Singular Value Decomposition)的讲解中将涉及稍微多一点的数学推导. 定义:设 A A A是秩为 r ...
- 矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)
,#1. 用途# 1.1 应用领域 最优化问题:最小二乘问题 (求取最小二乘解的方法一般使用SVD) 统计分析:信号与图像处理 求解线性方程组: Ax=0或Ax=b Ax = 0 或 Ax =b 奇异 ...
最新文章
- 敏捷开发的艺术读书笔记
- 源码分析(一) 进程cleos的命令解析
- WLC HA-维护模式(Maintenance Mode)
- Octave中无法使用rgb2gray()函数
- plsql 无法解析指定的连接标识符_Java方法加载、解析、存储、调用
- mysql文字字符集_MySQL字符集
- Java多线程之集合类(线程安全和不安全)
- 08_MinNumberInRotateArrary
- 暴力删除文件(文件夹)之为所欲为
- 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试
- redux-saga使用
- kotlin xml布局_Android工具栏教程– XML布局和Kotlin
- 现在维吾尔语在计算机中发展,维吾尔语手写体在线计算机识别技术研究.doc
- Java对象使用的重要细节
- Dz插件-Discuz插件-免费Discuz采集伪原创发布插件
- 使用管理员权限强制删除文件夹
- pcb成型板aoi检测_PCB设备:一款新的自动光学检测(AOI)系统
- VBA案例8:实现在ppt中写vba,控制动态图
- 激光导引头电子舱测试系统软件的研究与开发
- 7.16 两行代码实现全选checkAll