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

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

  • 非齐次线性方程组: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.mzph.cn/pingmian/41540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吃顿饭的时间,用AI开发一个应用官网

最早接触开发时做的第一个项目就是企业官网&#xff0c;到后来自己开始走上独立开发者的道路时&#xff0c;哪怕是开发面向消费者的移动端产品&#xff0c;在产品上架时也需要提供应用官网。 感觉&#xff0c;编程这件事情和官网开发&#xff0c;紧密相连。 过往为了追求开发效…

个人微信 微信营销系统

个人微信 微信营销系统 CRM系统

Android TV跨平台开发心得

这半年来陆陆续续做了一堆poc&#xff0c;刚开始是flutter&#xff0c;结果领导叫停了&#xff0c;说有其他部门做一样的事&#xff0c;真不巧&#xff1b;后来是react native&#xff0c;开发了个demo&#xff0c;上报上去了已经&#xff1b;现在又要做android nativewebview …

Windows 玩转大模型第一天:大模型本地部署,调用大模型API可直接工程化应用(全部代码和详细部署流程)

Ollama 是一个开源框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。 以下是其主要特点和功能概述&#xff1a; 1. 简化部署&#xff1a;Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程&#xff0c;使得非专业用…

ELK日志系统和Filebeat采集器的学习总结

ELK是ElasticSerach、Logstash、Kina Logstash负责采集数据&#xff0c;Logstash有三个插件&#xff0c;input、filter、output&#xff0c;filter插件作用是对采集的数据进行处理&#xff0c;过滤的&#xff0c;因此filter插件可以选&#xff0c;可以不用配置。 ElasticSear…

vulnhub靶场之DC-1

1 信息收集 1.1 主机发现 arp-scan -l 主机ip地址为&#xff1a;192.168.1.4 1.2 端口服务扫描 nmap -sS -sV -A -T5 -p- 192.168.1.4 开发22&#xff0c;80&#xff0c;111端口 1.3 目录扫描 dirsearch -u 192.168.1.4 2 渗透测试 2.1 先访问一下80端口 发现是一个…

万和-集训刷题1

leetcode 2 两数之和 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode p1l1;ListNode p2l2;int next0;ListNode headnew ListNode(-1);ListNode tailhead;while (p1!null||p2!null){int n1p1!null?p1.val:0;int n2p2!null?p2.val:0;i…

K8S 部署 EFK

安装说明 系统版本为 Centos7.9 内核版本为 6.3.5-1.el7 K8S版本为 v1.26.14 ES官网 开始安装 本次安装使用官方ECK方式部署 EFK&#xff0c;部署的是当前的最新版本。 在 Kubernetes 集群中部署 ECK 安装自定义资源 如果能打开这个网址的话直接用这个命令安装,打不开的话…

半导体制造企业 文件共享存储应用

用户背景&#xff1a;半导体设备&#xff08;上海&#xff09;股份有限公司是一家以中国为基地、面向全球的微观加工高端设备公司&#xff0c;为集成电路和泛半导体行业提供具竞争力的高端设备和高质量的服务。 挑战&#xff1a;芯片的行业在国内迅猛发展&#xff0c;用户在上海…

SpringBoot:SpringBoot统一响应和统一异常处理

一、前言 在开发Spring Boot应用时&#xff0c;处理响应结果和异常的方式对项目的可维护性、可扩展性和团队协作有着至关重要的影响。分散的响应结果和异常处理逻辑往往会导致代码冗余、难以理解和维护。因此&#xff0c;统一结果返回和统一异常处理是提升项目质量的关键策略之…

关于Java面向对象三大特征中多态的分析及出现类型转换异常ClassCastException,通过关键字instanceof解决的方法

多态 众所周知java的面向对象编程思想&#xff0c;有三大特征&#xff1a;封装、继承、多态。今天来研究一下多态&#xff0c;首先我们要知道多态的好处&#xff0c;为什么要学习多态 原始方式new的对象既能调用重写的&#xff0c;还能调用继承的、自己特有的成员。但缺点是扩…

科研绘图系列:R语言STAMP图(STAMP Plot)

介绍 STAMP图(STAMP plot)并非一个广泛认知的、具有特定名称的图表类型,而是可能指在STAMP(Statistical Analysis of Metagenomic Profiles:“STAMP: statistical analysis of taxonomic and functional profiles”)软件使用过程中生成的各种统计和可视化图表的总称。ST…

Ubuntu 24.04 上安装 Kubernetes,超级详细的教程!

Kubernetes 是一个免费的开源容器编排工具&#xff0c;它允许基于容器的应用程序的自动化部署、扩展和管理。 我们将介绍如何使用 Kubeadm 逐步在 Ubuntu 24.04 上安装 Kubernetes 此次演示中&#xff0c;我们将使用以下三个 Ubuntu 24.04 实例 Instance 1 : Master Node (k…

Studying-代码随想录训练营day30| 452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间

第30天&#xff0c;贪心part04&#xff0c;加油&#xff0c;编程语言&#xff1a;C 目录 452.用最少数量的箭引爆气球 435.无重叠区间 763.划分字母区间 总结 452.用最少数量的箭引爆气球 文档讲解&#xff1a;代码随想录用最少数量的箭引爆气球 视频讲解&#xff1a;手…

费马点猜想,求解,如何用java编写?

“费马点”是指位于三角形内且到三角形三个顶点距离之和最短的点。这个点与三角形三顶点连线构成的三个钝角都相等且为 120。注意&#xff0c;这不是“费马大定理”。 package com.ai157.aigc.controller.test; import javafx.application.Application; import javafx.scene.G…

一站式天气预报解决方案,API接口轻松接入

天气对我们的日常生活有着重要的影响&#xff0c;无论是出门旅行还是安排工作&#xff0c;都需要提前了解天气情况。WAPI平台提供了一站式天气预报解决方案&#xff0c;通过简单的API接口&#xff0c;轻松获取各类天气预报数据。 这个API接口提供了丰富的天气预报信息&#xf…

AI Agent技术的最新进展与改变世界的典型项目巡礼

AI Agent 探索 1. AI Agent 技术发展以及典型项目 1.0 前 AI Agent 时代 在学术探索的浩瀚星空中&#xff0c;机器人技术领域的璀璨明珠莫过于Agent技术的深入研究&#xff0c;这一领域历来是创新与突破的温床。回溯至大模型浪潮兴起之前&#xff0c;Agent技术的辉煌篇章便已…

7月强化|跟武忠祥,写严选题还是880题

严选题和武老师的高数强化讲义是一套的&#xff0c;做的时候可以很明显感觉到&#xff0c;严选题上面的题跟讲义也是对应上的。如果大家要选择严选题&#xff0c;那么建议搭配武忠祥老师的强化课和强化讲义一起使用。&#x1f60e; 我当时强化阶段也是跟武老师的强化课&#xf…

欧洲智慧能源展揭幕,海博思创闪耀登场展示储能创新

近日&#xff0c;备受瞩目的欧洲智慧能源展&#xff08;The Smarter E Europe&#xff09;盛大开幕&#xff0c;吸引了全球能源行业的目光。在这场国际性的盛会中&#xff0c;中国储能行业的领军企业海博思创凭借卓越的技术实力和创新的解决方案&#xff0c;成为展会上一颗耀眼…

AOP在业务中的简单使用

背景 业务组有一些给开发用的后门接口&#xff0c;为了做到调用溯源&#xff0c;业务组最近需要记录所有接口的访问记录&#xff0c;暂时只需要记录接口的响应结果&#xff0c;如果调用失败&#xff0c;则记录异常信息。由于后门接口较多以及只是业务组内部轻度使用&#xff0…