奇异值分解求线性方程组的最小二乘解

线性方程组一般考虑两类:

  • 非齐次线性方程组:Ax = b
  • 齐次线性方程组:Ax = 0

A 是 m * n 矩阵,x 是 n * 1 的向量,b 是 m * 1 的向量。此类问题可以很方便地采用SVD奇异值分解来求解。

一. 讨论基于线性代数的解析解

关于线性方程组的解析解存在性的讨论在之前的博客中已经介绍,主要基于向量组的线性相关性理论。链接为:【线性代数】齐次与非齐次线性方程组有解的条件。

主要结论为:

对于齐次线性方程组 Ax = 0:

  • Ax = 0 有非零解的充分必要条件是 r(A) < n,即r(A)小于A的列数。
  • Ax = 0 只有零解的充分必要条件是 r(A) = n,即r(A)等于A的列数。

对于非齐次线性方程组 Ax = b:

  • Ax = b 有解的充分必要条件是 r ( A ) = r { A ~ } r(A) = r\{\widetilde{A}\} r(A)=r{A } A ~ \widetilde{A} A 是该方程组的增广矩阵 [ A , b ] . [A, b]. [A,b].
  • Ax = b 有唯一解的充分必要条件是 r ( A ) = r { A ~ } = n r(A) = r\{\widetilde{A}\} = n r(A)=r{A }=n.
  • Ax = b 有无穷多解的充分必要条件是 r ( A ) = r { A ~ } < n r(A) = r\{\widetilde{A}\} < n r(A)=r{A }<n.

二. 超定方程组的最小二乘解

2.1 非齐次线性方程组的最小二乘解

重新考虑形如 Ax = b 的方程组,A 是 m * n 矩阵,则有三种可能性:

  1. 如果 m < n,那么未知数大于方程数,此时方程组没有唯一解,而是解的一个向量空间。
  2. 如果 m = n,只要 A 可逆,则方程组便有唯一解。
  3. 如果 m > n,那么方程数大于未知数,方程组一般没有解,即 r ( A ) ≠ r { A ~ } r(A) \neq r\{\widetilde{A}\} r(A)=r{A }。除非 b 在 A 的列空间中,即 r ( A ) = r { A ~ } r(A) = r\{\widetilde{A}\} r(A)=r{A }.

满秩情况下的最小二乘解

在实际问题中,通常会遇到方程数大于未知数的情况,现在考虑 m ≥ n 并且 A 的秩为 n 的情形。如果解不存在,那么对许多情形,我们仍然希望寻找一个向量 x 使 || Ax - b || 最小,这样的 x 称为该 超定方程组的一个最小二乘解,用 SVD 奇异值分解方法可以方便地求最小二乘解。

下面直接给出结论。

给定对角方阵 Σ \Sigma Σ,定义它的 伪逆 Σ † \Sigma^\dagger Σ 是对角矩阵,且其对角元素满足:
Σ i i † = 0 , i f    Σ i i = 0 Σ i i † = Σ i i − 1 , i f    Σ i i ≠ 0 \Sigma^\dagger_{ii} = 0, \qquad \mathrm{if} \; \Sigma_{ii}=0 \\ \Sigma^\dagger_{ii}= \Sigma^{-1}_{ii},\mathrm{if} \; \Sigma_{ii}\neq0 Σii=0,ifΣii=0Σii=Σii1ifΣii=0
现在考虑 m * n 矩阵 A,其中 m ≥ n。令 A 的 SVD分解为 A = U Σ V T A = U\Sigma V^T A=UΣVT。定义 A 的 伪逆 为矩阵

A † = V Σ † U T A^{\dagger}=V\Sigma^{\dagger}U^T A=VΣUT

结论:秩为 n 的 m × n m \times n m×n 方程组 Ax = b 的最小二乘解由 x = A † ^{\dagger} b 给出

用正规方程解线性最小二乘问题

线性最小二乘问题也可以用一个涉及正规方程的方法来解。考虑线性方程组 Ax = b,其中 A 为 m * n 的矩阵并且 m > n。这个方程组一般不存在解 x。此时我们的任务是求最小化范数 || Ax - b || 的向量 x

当 x 取遍所有的值时,Ax 将遍历 A 的整个列空间,即由 A 的列生成的一个 R m R^m Rm 子空间。因此我们的任务是在 A 的列空间中寻找最接近 b 的那个向量,接近程度由向量范数定义。
令 x 是这个问题的解,则 Ax 是最接近 b 的点。此时,两者的差 Ax - b 必然是与 A 的列空间垂直的向量,即 Ax - b 垂直于 A 的每一列,因此有 A T ( A x − b ) = 0 A^T(A\mathbf{x} - \mathbf{b}) = 0 AT(Axb)=0,进一步转化就得到方程:
( A T A ) x = A T b (A^TA)\mathbf{x} = A^T \mathbf{b} (ATA)x=ATb

这是一个 n × n n \times n n×n 的线性方程组,称为 正规方程。该方程组有解并且可用来求问题 Ax = b 的最小二乘解。

  • 即使 A 不满秩,这个方程组仍然应该有一个解,因为 A T b A^T\mathbf{b} ATb A T A A^TA ATA的列空间中(不过此时的解不是 Ax = b 可靠的最小二乘解);
  • 如果 A 的秩为 n,则矩阵 A T A A^TA ATA可逆,从而 x 可以通过 x = ( A T A ) − 1 A T b \mathbf{x} = (A^TA)^{-1}A^T \mathbf{b} x=(ATA)1ATb求得。

由于 x = A † b \mathbf{x}=A^\dagger\mathbf{b} x=Ab,不难得到:如果 m × n m \times n m×n 矩阵 A 的秩为 n,那么 A † = ( A T A ) − 1 A T A^\dagger=(A^TA)^{-1}A^T A=(ATA)1AT

该算法总结如下:

目标:求最小化 ||Ax|| 的 x.
算法:
(1)解正规方程 ( A T A ) x = A T b (A^TA)\mathbf{x} = A^T \mathbf{b} (ATA)x=ATb.
(2)如果 A T A A^TA ATA可逆,则解是 x = ( A T A ) − 1 A T b \mathbf{x} = (A^TA)^{-1}A^T \mathbf{b} x=(ATA)1ATb.

对于正规方程的求解,常用的方法还有 Cholesky 分解、QR分解等,该部分内容待后续补充。

2.2 齐次线性方程组的最小二乘解

与上一问题类似的是求齐次线性方程组 Ax = 0 的解。我们仍然考虑 方程数大于未知数的情形——即超定方程组。平凡解 x = 0 不是我们期望的,因此重点关注其非零解。值得注意的是,如果 x 是该方程组的一个解,那么对任何标量 k,kx也是解,因此一个合理的约束是只求 || x || = 1 的解。

假定 A 的维数是 m * n,那么根据上面第一节的讨论,存在非零解析解的充要条件是 rank(A) < n。在实际应用中,齐次线性方程组一般不存在解析解。当没有精确解时,我们通常求它的一个最小二乘解,问题描述为:

  • 求使|| Ax ||最小化并且满足 ||x|| = 1 的 x

该问题利用奇异值分解的求解思路如下。

  • 令 A 的奇异值分解为 A = U Σ V T A = U\Sigma V^T A=UΣVT,那么问题变为最小化 ∥ U Σ V T x ∥ \lVert U\Sigma V^T \mathbf{x} \rVert UΣVTx
  • 根据正交变换的保范性(正交变换不改变向量的范数),有 ∥ U Σ V T x ∥ = ∥ Σ V T x ∥ \lVert U\Sigma V^T \mathbf{x} \rVert = \lVert \Sigma V^T \mathbf{x} \rVert UΣVTx=ΣVTx ∥ x ∥ = ∥ V T x ∥ \lVert \mathbf{x} \rVert =\lVert V^T \mathbf{x} \rVert x=VTx,因此我们相当于需要在条件 ∥ V T x = 1 ∥ \lVert V^T\mathbf{x}=1\rVert VTx=1 下最小化 ∥ Σ V T x ∥ \lVert\Sigma V^T\mathbf{x}\rVert ΣVTx
  • y = V T x \mathbf{y}=V^T\mathbf{x} y=VTx,则问题转变为在条件 ∥ y = 1 ∥ \lVert \mathbf{y}=1\rVert y=1 下最小化 ∥ Σ y ∥ \lVert\Sigma \mathbf{y}\rVert Σy
  • 现在已知 Σ \Sigma Σ 是对角元素按降序排列的一个对角矩阵,由此推出该问题的解是 y = ( 0 , 0 , ⋯   , 0 , 1 ) T \mathbf{y} = (0,0,\cdots,0,1)^T y=(0,0,,0,1)T,即具有一个非零元素 1 并在最后的位置上。
  • 于是, x = V y \mathbf{x}=V\mathbf{y} x=Vy 就是 V V V 的最后一列。此外, V V V 的最后一列也可以描述为对应于 A T A A^TA ATA 最小特征值的特征向量

该算法总结如下:

目标:给定行数不少于列数的一个矩阵A,求最小化 ||Ax|| 且满足 ||x|| = 1 的 x.
解:x 是 V 的最后一列,其中 A = U Σ V T A = U \Sigma V^T A=UΣVT 是 A 的奇异值分解.

计算机视觉中的尺度等价性问题

在计算机视觉相关的应用中,通常会涉及到尺度等价性问题,比如本质矩阵、基础矩阵的求解等。待求解的齐次线性方程组为 Ax = 0,其中A 是 m * n 矩阵, x 是 n * 1 的向量。

对于齐次线性方程组的解,讨论其解空间的情况:

  • 如果 r(A) = n(约束较强)
    • m = n,此时A为方阵,则该问题有且只有零解,解空间即为零空间。
    • m > n,此时解析解仍只有零解,解空间为零空间。通常求最小二乘近似非零解,与上面讨论的过程一致。
  • 如果r(A) < n(约束不够)
    • 此时该齐次线性方程组有非零解,且 解空间 的维数为 n - r(A),即自由度为 n - r(A)
    • 如果其解空间的维度为1,也就是说约束方程的个数为 n - 1,那么该方程组的某个解本身乘以任何标量仍然是解,其恰好满足了尺度等价性的特点!

所以,在计算机视觉的某些应用中,对于具有尺度等价性的变量 x,构建 Ax = 0 齐次线性方程组时,约束个数 ≥ n - 1 时可应用奇异值分解求最小二乘解

比如在《视觉SLAM十四讲》第7.3.2节中求解本质矩阵时,仅考虑尺度等价性,使用8对点来估计本质矩阵 E。E矩阵有9个元素,转换成向量的形式为 9 * 1 的向量 e \mathbf{e} e,每对点可以提供一个约束方程,那么总共构成 8 * 9 的系数矩阵 A,问题描述为 A e = 0 A\mathbf{e} = \mathbf{0} Ae=0.

  • 此时可以用常规的高斯消元等基本线性代数方法求其基础解系
  • 也可以用奇异值分解的方法求解,对于矩阵 A,维度为 8 * 9,则奇异值分解为 A = U Σ V T A=U\Sigma V^T A=UΣVT,其中前8个奇异值非0,最后一个奇异值为0,那么最后一个奇异值对应的右奇异向量(V的最后一列)即为 e \mathbf{e} e 的一个非零最小二乘解。

参考资料

  1. 计算机视觉中的多视图几何(第2版)/Richard Harltey, Andrew Zisserman著;韦穗,章权兵译 . --北京:机械工业出版社,2019.8.
  2. 齐次线性方程组的解、SVD、最小二乘法
  3. 线性方程组的最小二乘解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年7月6日 (周六) 叶子游戏新闻

自动电脑内部录音器AutoAudioRecorder: 是一款免费的自动音频录制软件&#xff0c;可直接将电脑内部所有的声音录制成 mp3/wav 文件&#xff0c;包括音乐、游戏直播、网络会议、聊天通话等音频源。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《不羁联盟》制作人&…

Java中的日期时间类详解(Date、DateFormat、Calendar)

1. Date类 1.1 概述 java.util.Date类表示特定的瞬间&#xff0c;精确到毫秒。Date类的构造函数可以把毫秒值转成日期对象。 继续查阅Date类的描述&#xff0c;发现Date拥有多个构造函数&#xff0c;只是部分已经过时&#xff0c;我们重点看以下两个构造函数 1.2 Date类构造…

【踩坑】探究PyTorch中创建稀疏矩阵的内存占用过大的问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 问题复现 原因分析 解决方案 碎碎念 问题复现 创建一个COO格式的稀疏矩阵&#xff0c;根据计算公式&#xff0c;他应该只占用约5120MB的内存&…

54、一维和二维自组织映射(matlab)

1、一维和二维自组织映射原理 一维和二维自组织映射&#xff08;Self-Organizing Maps, SOM&#xff09;是一种无监督的机器学习算法&#xff0c;通过学习输入数据的拓扑结构&#xff0c;将高维输入数据映射到低维的网格结构中&#xff0c;使得相似的输入数据点在映射空间中也…

win7系统快速安装python

下载安装包 建议选择python3.8左右的&#xff0c;我下载的是3.7.8&#xff0c;最新版本的pythonwin7可能不支持 python网址 下拉寻找 安装python 1.双击安装包 更换完地址选择安装(install) 安装完成后点击close即可 测试是否安装成功 1.winr快捷键打开黑窗口输入cmd …

七大排序-冒泡排序,插入排序,希尔排序(一)

目录 排序冒泡排序插入排序冒泡排序和插入排序的对比希尔排序 排序 先写单趟&#xff0c;再写多趟&#xff0c;这样比较好写 排序可以理解为对商品价格的排序&#xff0c;对数字大小的排序&#xff0c;排序再生活中随处可见 冒泡排序 冒泡排序就是两个相邻的数交换&#xff…

跨界客户服务:拓展服务边界,创造更多价值

在当今这个日新月异的商业时代&#xff0c;跨界合作已不再是新鲜词汇&#xff0c;它如同一股强劲的东风&#xff0c;吹散了行业间的壁垒&#xff0c;为企业服务创新开辟了前所未有的广阔天地。特别是在客户服务领域&#xff0c;跨界合作正以前所未有的深度和广度&#xff0c;拓…

mysql 9 新特新

mysql9新特性 新特性Audit Log NotesC API NotesCharacter Set SupportCompilation NotesComponent NotesConfiguration NotesData Dictionary NotesData Type NotesDeprecation and Removal NotesEvent Scheduler NotesJavaScript ProgramsOptimizer NotesPerformance Schema …

微机原理与单片机 知识体系梳理

单片机笔记分享 我个人感觉单片机要记的东西很多&#xff0c;也很琐碎&#xff0c;特别是一些位、寄存器以及相关作用等&#xff0c;非常难以记忆。因此复习时将知识点整理在了一起做成思维导图&#xff0c;希望对大家有所帮助。内容不是很多&#xff0c;可能有些没覆盖全&…

Python人形机踊跃跨栏举重投篮高维数动作算法模型

&#x1f3af;要点 &#x1f3af;运动功能&#xff1a; 1 m / s 1 m / s 1m/s上台阶、站立平衡、 1 m / s 1 m / s 1m/s行走、坐椅子、 5 m / s 5 m / s 5m/s跑步、 1 m / s 1 m / s 1m/s爬行、穿越森林、取物、穿越迷宫、 1 m / s 1 m / s 1m/s上滑梯、 5 m / s 5 m / s 5m/s…

iOS多target时怎么对InfoPlist进行国际化

由于不同target要显示不同的App名称、不同的权限提示语&#xff0c;国际化InfoPlist文件必须创建名称为InfoPlist.strings的文件&#xff0c;那么多个target时怎么进行国际化呢&#xff1f;步骤如下&#xff1a; 一、首先我们在项目根目录创建不同的文件夹对应多个不同的targe…

自然之美无需雕琢

《自然之美&#xff0c;无需雕琢 ”》在这个颜值至上的时代&#xff0c;但在温馨氛围中&#xff0c;单依纯以一种意想不到的方式&#xff0c;为我们诠释了自然之美的真谛。而医生的回答&#xff0c;如同一股清流耳目一新。“我说医生你看我这张脸&#xff0c;有没有哪里要动的。…

09 docker 安装tomcat 详解

目录 一、安装tomcat 1. tomcat镜像的获取 2. docker创建容器实列 3. 访问测试 404错误 4. 解决方案 5. 使用免修改版容器镜像 5.1. 运行实列的创建 5.2. 出现问题及解决&#xff1a; 6. 验证 OK 一、安装tomcat 1. tomcat镜像的获取 docker search tomcat #docker …

最灵活且易用的C++开源串口通信调试软件

这款C开源串口调试软件&#xff0c;集成了丰富的功能&#xff0c;为用户提供高效、便捷的串口通信调试体验。以下是其核心功能亮点&#xff1a; 基础功能&#xff1a; 数据交互自如&#xff1a;支持串口数据的轻松读取与发送&#xff0c;让数据交换变得简单直接。 灵活配置参…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化3(拆分、嵌入文档,操作系统)

拆分大文档 很常见的一种优化手段&#xff0c;在一些特定的业务场景中&#xff0c;会有一些很大的文档&#xff0c;这些文档有很多字段&#xff0c;而且有一些特定的字段还特别的大。可以考虑拆分这些文档 大文档对MongoDB的性能影响还是很大的&#xff0c;就我个人经验而言&…

【TB作品】基于ATmega48的开机登录程序设计

使用Proteus仿真软件设计一个开机登录程序,单片机选用ATmegga48. 基础要求: 1.程序启动后在LCD1602液晶屏上提示用户通过独立按键输入密码(6位)。 2.密码输入错误则在屏幕上提示密码错误,密码输入正确则在屏幕上提示密 码正确后等待约3秒后进入主界面,在屏幕中央显示HelloWorld…

基于RK3588的8路摄像头实时全景拼接

基于RK3588的8路摄像头实时全景拼接 输入&#xff1a;2路csi转8路mpi的ahd摄像头&#xff0c;分辨率1920 * 1080 8路拼接结果&#xff1a; 6路拼接结果&#xff1a; UI界面&#xff1a; UI节目设计原理

数字时代如果你的企业还未上线B端系统助力则后果很严重

**数字时代如果你的企业还未上线B端系统助力则后果很严重** 数字化浪潮席卷全球&#xff0c;企业对于数字化转型的重视程度日益提高。B端系统&#xff0c;作为企业数字化转型的核心组成部分&#xff0c;其重要性不言而喻。如果你的企业还未上线B端系统助力&#xff0c;那么后果…

异步主从复制

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术&#xff0c;通过将一个数据库服务器&#xff08;主服务器&#xff09;上的数据变更自动同步到一个或多个数据库服务器&#xff08;从服务器&#xff09;上&#xff0c;以此来实现数据的冗余备份、读…

2024年6月后2周重要的大语言模型论文总结:LLM进展、微调、推理和对齐

本文总结了2024年6月后两周发表的一些最重要的大语言模型论文。这些论文涵盖了塑造下一代语言模型的各种主题&#xff0c;从模型优化和缩放到推理、基准测试和增强性能。 LLM进展与基准 1、 BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Com…