slam数学基础——最小二乘

2023-11-06

一、前言

1. 最小二乘是一类特殊形式的最优化求解问题,相比于其他优化问题,求解方式比较简洁

2.最小二乘被广泛应用于各种实际问题的建模,在求解实际工程问题中有着广泛的应用,例如 slam 中随处可见最小二乘的声影

二、线性最小二乘法

1. 预备知识

1.  A\in R^{m,n}, rank(null_space) + rank(A) = n

2. 齐次线性方程组求解

   Ax=0, A\in R^{m,n}, x\in R^n, 0\in R^m              (1)

     x=0 肯定是该方程组的一个解

    a. 存在唯一零解:   rank(null_space) = 0, 等价于  rank(A) = n. 等价于 A 的各个列向量线性无关

    b. 存在除了零解以外的其他解: rank(null_space)>0, 等价于 rank(A) < n,等价于 A 的各个列向量线性相关

3. 非齐次线性方程组求解

    Ax=b, A\in R^{m,n}, x\in R^n, b\in R^m             (2)

     解的形式:  特解+通解:  若 x_1 是 Ax=0 的解,  x_2 是 Ax=b 的一个解,那么   x_1+x_2  也是 Ax=b 的一个解

     a. 没有解:  b 向量不在 A 的列向量张成的向量空间

     b. 唯一解:  b 向量在 A 的列向量张成的向量空间, 且  rank(null_space) = 0  (  x_1 只有唯一零解 )

     c. 无穷多个解:  b 向量在 A 的列向量张成的向量空间, 且  rank(null_space) > 0   (  x_1 有多个解 )

2. 非齐次最小二乘

1. 定义

      x=argmin_{x} ||Ax-b||^2                             (3)

2.和求解线性方程组的联系

     当求解(2)时,若该方程无原始解满足该方程,那么这时候需要求一个最小二乘解 {x}',也就是等价于求解 (3)

     注意: 最小二乘解并不是原始解

3. 求解

    A{x}' 在 A 的列向量张成的向量空间,  b 向量不在 A 的列向量张成的向量空间,若要使得  b-Ax' 最小,

    当且仅当 b-Ax' 与 A 的列向量张成的向量空间 的正交时, b-Ax' 最小, 如下图:

        那么有  A^T*(b-Ax')=0                            (4)

        得到  A^T* Ax'=A^T*b                                 (5)

        最后通过求解式(5) 可以得到最小二乘解, (5) 可以通过 SVD 求解

3. 齐次最小二乘

1. 定义

       x=argmin_{x} ||Ax||^2, s.t. ||x||=1                  (6)

2.和求解线性方程组的联系

     当求解(1)时,若该方程没有非零解满足该方程,那么那么这时候需要求一个最小二乘解 {x}',也就是等价于求解 (6)

3. 求解

    将矩阵 A SVD 分解,A=UDV^T                     (7)

    展开为: A=UDV^T = \begin{pmatrix} u_{1} & u_{2} & \cdots & u_r \end{pmatrix} * \begin{pmatrix} \sigma_1 & \cdots & \cdots& 0\\ 0 & \sigma_2 & \cdots & 0 \\ \vdots &\vdots & \ddots & \vdots\\ 0 & \cdots & \cdots& \sigma_r \end{pmatrix} * \begin{pmatrix} v_1^T \\ v_2^T \\ \vdots \\ v_r^T \\ \end{pmatrix}          (8)

    其中 r 为矩阵的秩, U , V 的各个列向量互相正交, 且对角矩阵中的奇异值按照从大到小的顺序排列,那么有:

         A=UDV^T = \sigma_1*u_1*v_1^T + \sigma_2*u_2*v_2^T + .... + \sigma_r*u_r*v_r^T                         (9)

    结论:  最小二乘解 {x}' 是最小奇异值对应的 V 的列向量 v_r

    此时,A*x'= \sigma_1*u_1*v_1^T*v_r + \sigma_2*u_2*v_2^T*v_r + .... + \sigma_r*u_r*v_r^T*v_r

                          = 0 + 0 + ... + \sigma_r = \sigma_r                                                                         (10)

     若取 V 的其他列向量, A*x'=\sigma_i (i\neq r ) > \sigma_r

三、非线性最小二乘

1. 定义

    x=argmin_{x} ||f(x)-b||^2                                                                                          (11)

2. 求解流程

    局部泰勒展开,求迭代  \bigtriangleup x, 然后有 :  x^{k+1}=x^{k} + \bigtriangleup x                                           (12)

3. Gauss-Newton 法

                                  

四、非线性和线性最小二乘的讨论

1. 线性最小二乘对应全局最优解,非线性最小二乘无法保证全局最优,最终结果受初始值影响较大,容易陷入局部最优

2. 线性最小二乘:    若坐标用齐次坐标表示, 对应齐次最小二乘;若坐标用非齐次坐标表示,对应非齐次最小二乘

3. 线性最小二乘不用迭代,可通过SVD求解效率高。非线性最小二乘需要迭代求解,求解时间不可控

4. 一般线性最小二乘对应着 DLT 算法,作为初始值。非线性最小二乘通过最小化某些 error_term,对线性求解的结果进一步优化. 例如求解单应性矩阵

5. 举例: 二维平面直线拟合

    a. 非齐次线性最小二乘:   y=kx+b, error = y_mea - y_predict

    b. 非齐次最小二乘: ax+by+c=0

    c. 非线性最小二乘: error = y_mea  到直线的距离

五、M-Esimation

1. 引入 Loss function,抑制 outliers

六、Reference

1. MIT:Gilbert Strang Linear Algebra (公开课)
2. Robotics-perception - University of Pennsylvania- Jianbo Shi  (公开课)

声明:本博客内容原创,谢绝转载,若有错误的地方,还请及时指出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

slam数学基础——最小二乘 的相关文章

随机推荐

  • C#GDI+编程基础(一:Graphics画布类)

    GDI 存在的意义 将变成与具体硬件实现细节分开 GDI 步骤 获取画布 绘制图像 处理图像 命名空间 using System Drawing 提供对GDI 基本图形功能的访问 using System Drawing Drawing2D
  • 5. Java数据类型

    数据类型 基本类型 整数类型 byte short int long 浮点类型 float double 字符类型 char String 布尔类型 true false public class demo2 public static v
  • 第十三届蓝桥杯Python 大学B组真题详解

    第十三届蓝桥杯Python B组真题详解 试题A 排列字母 试题B 寻找整数 试题C 纸张尺寸 试题D 位数排序 试题E 蜂巢 试题F 消除游戏 试题G 全排列的价值 试题H 技能升级 试题I 最长不下降子序列 最优清零方案 本届比赛 两道
  • 性能测试调优模型、思想和技术

    最近阅读 软件性能测试 分析与调优实践之路 一书 个人认为性能调优章节为整部书的精华 该章节包括了性能测试调优模型 调优思想和调优技术 下面是摘抄整理自书中内容 调优模型 下图为互联网中常见的用户请求的分层转发和处理的过程 在性能调优时就是
  • 5.5 综合案例1.0-电力采集

    综合案例 电力采集 1 简介 1 1 BL0939芯片 1 2 语音合成 1 3 注意事项 2 阿里云端设置 3 测试代码 main py app relay py app led py app elec py app audio py a
  • MySQL表的约束

    目录 约束 概念 分类 非空约束 not null 唯一约束 unique 主键约束 primary key 外键约束 foreign key 继续使用上篇文章https blog csdn net z714405489 article d
  • 94-----JS基础-----dom查询

    一 代码 同样很简单 但是下面的接口会比较常用 用到时具体看一下即可 主要是三个接口 1 document getElementById 2 document getElementsByTagName 3 document getEleme
  • (附源码)springboot学生宿舍管理系统 毕业设计 211955

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在现实运用中 应用软件的工作规则和开发步
  • Loguru 源码中如何sink参数是日志路径时,rotation不能精确到天

    当我们把日志一直不停写入某个文件中 那么这个文件可能会有几十上百 GB 显然这样是没有办法查看和检索的 所以我们需要一些方式来切分日志 例如 每个日志文件只有1GB 超过1GB 后 自动生成新的日志 又或者每天0点自动生成新的日志 当日志按
  • ROS与Arduino:Arduino IDE的配置安装+实现简单串口通讯

    rosserial arduino包可让ROS和ArduinoIDE一起工作 rosserial提供的ROS通讯协议工作在Arduino的UART上 它让Arduino成为标准的ROS节点 可以发布和订阅ROS消息 发布TF转换 获取ROS
  • WIN 10找不到IE浏览器&打不开IE浏览器&用户名自带“域”,怎么办?

    前言 因客户侧系统依赖安装VPN才能访问 客户发的证书安装文档 又依赖IE浏览器下进行 也试过其他浏览器总是卡在提交证书申请前的信息加载 所以开始找本机的IE浏览器 然而遇到的情况是这样的 1 总是跳转到Microsoft Edge 在这个
  • nuxt打包路劲问题_Nuxt最简入门,让vue项目快速被搜索引擎收录

    Nuxt js是vue js的通用框架 最常用的就是作ssr 一般的vue cli不利于搜索引擎的seo操作 但是nuxt很好的解决了这一大问题 Nuxt的优点 基于 Vue js 自动代码分层 服务端渲染 强大的路由功能 支持异步数据 静
  • Stream按对象某属性去重的方案

    1 Collectors collectingAndThen 这是Stream中的一个收集器 相比普通的Collectors toList Collectors groupingBy等收集器 Collectors collectingAnd
  • 从外部访问本机vmware虚拟机的方法

    转载 https www csdn net tags MtTaEgzsMzI0NTYwLWJsb2cO0O0O html 从外部访问本机vmware虚拟机的方法 2021 10 19 11 39 23 环境情况 本地 操作系统为window
  • Windows 11配置WSL及Linux子系统安装

    说明 在Windows系统中 一般使用Linux子系统是通过安装虚拟机的方法 再使用虚拟机安装Linux子系统 常用的虚拟机软件有VMware Workstation等 但是该软件是收费软件 在企业开发时需要支付授权费用 Windows 1
  • 曲面细分着色器(Tessellation)

    图形渲染流水线如下 1 顶点着色器 version 410 core void main void const vec4 vertices vec4 vec4 0 25
  • 【SWT】多层 Composite 嵌套,如何使得 最内层的 Composite 发出的事件传到最外层?

    SWT 事件传递原理 在 SWT 中 事件传递是通过控件树的层级关系自动完成的 而不需要手动控制事件的传递顺序 当一个控件产生事件时 事件会自动向上传递到其父级控件 然后继续向上层传递 直至到达顶层的 Shell 控件 这意味着 事件将按照
  • python 使用线程接收串口数据,并同时可进行串口数据发送。提供python 串口通讯助手的源码下载

    有关python 串口通讯助手的源码下载 请打开这篇文章 https blog csdn net xiaoeleis article details 105820455 python 使用线程接收串口数据 并同时可进行串口数据发送 问题 1
  • VM VirtualBox运行Ubuntu系统卡顿提速(亲测有效,附图)

    VirtualBox运行Ubuntu系统卡顿提速 亲测有效 附图 亲测有效 卡顿明显减少 欣喜之余 记录备忘 原文教程见下方链接 原文没有图 我把自己操作时的截图放在下面 原文 VirtualBox虚拟机运行Ubuntu如何不卡 记得要把U
  • slam数学基础——最小二乘

    一 前言 1 最小二乘是一类特殊形式的最优化求解问题 相比于其他优化问题 求解方式比较简洁 2 最小二乘被广泛应用于各种实际问题的建模 在求解实际工程问题中有着广泛的应用 例如 slam 中随处可见最小二乘的声影 二 线性最小二乘法 1 预