【视觉SLAM入门】4.2 非线性最小二乘理论部分------线搜索,信赖域,最速/牛顿下降法,高斯牛顿,LM等原理推导

news2024/9/23 7:26:47

"天之道也"

    • 0. 引入
    • 1. 最速下降法
    • 2. 牛顿法
    • 3. (实用)G-N法
    • 4. (实用)L-M方法
    • 5. 总结

注意: 上一节得到的最小二乘问题,本节来讨论---- 求解非线性最小二乘问题 \color {red}求解非线性最小二乘问题 求解非线性最小二乘问题

0. 引入

求解这个简单的最小二乘问题:
min ⁡ x 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 2 ( 1 ) \min\limits_{x} \frac{1}{2}||f(x)||_2^2\qquad\qquad\qquad\qquad\qquad (1) xmin21∣∣f(x)22(1)

  • 最优条件法:当函数存在解析形式,能够通过最优性条件求解出显式最优解,类似求导之类的;
  • 迭代法:从初始值出发,不断更新当前的优化变量,使目标函数下降。

一个简单的迭代法步骤:
在这里插入图片描述
很少有函数能满足存在解析形式,迭代法的研究是首选,后边要做的就是如何确定增量 Δ x k \Delta x_k Δxk,也引出了一些方法。

1. 最速下降法

也叫一阶梯度法,首先将目标函数泰勒展开至一阶:
∣ ∣ f ( x + Δ x ) ∣ ∣ 2 2 ≈ ∣ ∣ f ( x ) ∣ ∣ 2 2 + J ( x ) Δ x    ⇓ 其中 J 是 ∣ ∣ f ( x ) ∣ ∣ 2 2 关于 x 的导数 ( 雅克比矩阵 )    ⇓ 增量方向为    Δ x ∗ = − J T ( x ) ||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x\\\; \\ \Downarrow 其中J是||f(x)||_2^2关于x的导数(雅克比矩阵)\\\;\\ \\ \Downarrow增量方向为\\\; \\ \color {red}\Delta x^* = -J^T(x) ∣∣f(x+Δx)22∣∣f(x)22+J(x)Δx其中J∣∣f(x)22关于x的导数(雅克比矩阵)增量方向为Δx=JT(x)

  • 优点:直观,避免了求导的困难。
  • 缺点:贪心,下降路线锯齿状,迭代次数多。

2. 牛顿法

也叫二阶梯度法,首先将目标函数泰勒展开至二阶:
∣ ∣ f ( x + Δ x ) ∣ ∣ 2 2 ≈ ∣ ∣ f ( x ) ∣ ∣ 2 2 + J ( x ) Δ x + 1 2 Δ x T H Δ x    ⇓ 其中 H 是 ∣ ∣ f ( x ) ∣ ∣ 2 2 关于 x 的二阶导数 ( 海森矩阵 )    ⇓ 求右侧关于 Δ x 的导数令其等于 0 ,则增量的解为    H Δ x = − J T ||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x + \frac{1}{2}\Delta x^TH\Delta x\\\; \\ \Downarrow 其中H是||f(x)||_2^2关于x的二阶导数(海森矩阵)\\\;\\ \\ \Downarrow求右侧关于\Delta x 的导数令其等于0,则增量的解为\\\; \\ \color {red}H\Delta x = -J^T ∣∣f(x+Δx)22∣∣f(x)22+J(x)Δx+21ΔxTHΔx其中H∣∣f(x)22关于x的二阶导数(海森矩阵)求右侧关于Δx的导数令其等于0,则增量的解为HΔx=JT

  • 优点:直观,避免了求导的困难。
  • 缺点:海森矩阵的计算运算量大。

3. (实用)G-N法

Gauss Newton 简单,它是将 f ( x ) f(x) f(x) 展开:
f ( x + Δ x ) ≈ f ( x ) + J ( x ) Δ x f(x+\Delta x) \approx f(x) + J(x)\Delta x f(x+Δx)f(x)+J(x)Δx
这里的 J J J f ( x ) f(x) f(x)关于 x x x的导数,将上式带入(1)式中,按照平方展开可得:
1 2 ∣ ∣ f ( x ) + J ( x ) Δ x ∣ ∣ 2 = 1 2 ( ∣ ∣ f ( x ) ∣ ∣ 2 2 + 2 f ( x ) T J ( x ) Δ x + Δ x T J ( x ) T J ( x ) Δ x )    ⇓ 求关于 Δ x 的导数,并令其 = 0 ,可得增量方程    J ( x ) T J ( x ) Δ x = − J ( x ) T f ( x )    ⇓ 令 H = J J T ,其实就是牛顿法中海森矩阵的近似 ⇓ 令 g = − J ( x ) T f ( x )    H Δ x = g \frac{1}{2}||f(x)+J(x)\Delta x||^2 =\frac{1}{2} (||f(x)||^2_2+2f(x)^TJ(x)\Delta x+\Delta x^TJ(x)^TJ(x)\Delta x) \\\;\\\Downarrow 求关于\Delta x的导数,并令其=0,可得增量方程 \\\; \\ \color {red}J(x)^TJ(x)\Delta x = - J(x)^Tf(x) \color{b} \\\;\\\Downarrow 令H = JJ^T,其实就是牛顿法中海森矩阵的近似 \\\Downarrow 令g=-J(x)^Tf(x) \\\; \\H\Delta x = g 21∣∣f(x)+J(x)Δx2=21(∣∣f(x)22+2f(x)TJ(x)Δx+ΔxTJ(x)TJ(x)Δx)求关于Δx的导数,并令其=0,可得增量方程J(x)TJ(x)Δx=J(x)Tf(x)H=JJT,其实就是牛顿法中海森矩阵的近似g=J(x)Tf(x)HΔx=g
通过以上推导,我们可以将G-N(Gauss-Newton)迭代法步骤列出:
图源视觉SLAM14讲

  • 缺点: J T J J^TJ JTJ近似 H H H,但是 H H H可逆且正定,而 J T J J^TJ JTJ实际上半正定,还有可能奇异或者病态,稳定性差。
  • 优点: 很多算法和一些线搜索算法是它的变种,都借助了G-N的思想。

4. (实用)L-M方法

Levenberg-Marquadt(列文博格-马夸尔特)也叫阻尼牛顿法。是一种信赖域方法(为 Δ x \Delta x Δx添加一个信赖域,不因太大而不准确),在区域内近似是有效的。
确定信赖域范围:
ρ = f ( x + Δ x ) − f ( x ) J ( x ) Δ x \rho = \frac{f(x+\Delta x) - f(x)}{J(x)\Delta x} ρ=J(x)Δxf(x+Δx)f(x)

  • 分子是实际函数的下降值
  • 分母是近似模型的下降值
  • 两个的比值 ρ \rho ρ接近1,是好的。

由是,我们可以写出L-M的迭代过程:
图源视觉SLAM14讲

  • 在上式中,将 D D D I I I,相当于把 Δ x \Delta x Δx 约束在一个半径为 μ \mu μ球中。也可以自定义为椭球,对梯度小的维度约束更大

上述步骤2中的两个式子,含有不等式,用拉格朗日乘子 λ \lambda λ将其转化为无约束问题:

min ⁡ Δ x k 1 2 ∣ ∣ f ( x k ) + J ( x k ) Δ x k ∣ ∣ 2 + λ 2 ∣ ∣ D Δ x ∣ ∣ 2    ⇓ 展开,核心还是计算增量的线性方程,取简化 D = I    ( H + λ I ) Δ x = g \min\limits_{\Delta {x_k}} \frac{1}{2}||f(x_k)+J(x_k)\Delta x_k||^2 + \frac{\lambda}{2}||D \Delta x||^2 \\\;\\\Downarrow 展开,核心还是计算增量的线性方程,取简化D=I \\\; \\ (H + \lambda I)\Delta x = g Δxkmin21∣∣f(xk)+J(xk)Δxk2+2λ∣∣DΔx2展开,核心还是计算增量的线性方程,取简化D=I(H+λI)Δx=g
不难看出, λ \lambda λ 小的时候H占据主导地位算法接近G-N,较大的时候算法接近最速下降法。

5. 总结

非线性优化的框架:

  • 线搜索: 固定搜索方向,然后寻找步长。含G-N, 最速下降法
  • 信赖域:固定搜索区域,寻找区域内的最优点,L-M法。

所有理论来自《数值优化》,只介绍了两种简单的。

  • 初始值的选取:不可随意,在视觉SLAM中用 ICP, PnP
  • Δ x \Delta x Δx 是多维的,几百上千几十万等,求解时要用矩阵论知识,QR,Cholesky分解等,它的系数形式确保了实时性

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

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

相关文章

在线 Javascript 代码编辑器,有代码提示功能

分享一个在线代码编辑器,有代码提示功能 github地址: https://github.com/microsoft/monaco-editor 在线预览:https://microsoft.github.io/monaco-editor/playground.html?sourcev0.40.0#example-creating-the-editor-hello-world 效果图…

7. Spring Boot 配置文件

目录 1. 配置文件作用 2. 配置文件格式 3. properties 配置文件说明 3.1 properties 基本语法 3.2 读取配置文件 3.3 缺点 4. yml 配置文件说明 4.1 properties 基本语法 4.2 读取配置文件 4.3 yml 配置不同的数据类型 布尔值 整数值 null 值 配置对象 配置集合 …

有状态的应用如何部署 1?

前面我们分享很多关于 K8S 的内容,有没有发现 pod 都是无状态,RS / RC 管理的 pod 也是无状态的,我们可以任意删除一个 pod,副本管理器又会马上给我们创建一个 pod 那么如果咱们的这个 pod 是有挂载持久卷的,那么我们…

java -- Stringbuild、Date和Calendar类

Stringbuild类 由于String类的对象内容不可改变,每次拼接都会构建一个新的String对象,既耗时,又浪费内存空间 这时需要通过java提供的StringBuild类解决这个问题 StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串…

详解python中的类、模块、包的概念和区别

目录 Python中的类 Python中的模块 Python中的包 三者的区别 Python中的类 在Python中,类(Class)是一种面向对象编程(Object-Oriented Programming, OOP)的概念,用于创建具有相似属性和行为的对象的模板…

索马里ECTN认证开船后办?都可以办的,

索马里ECTN认证开船后办?都可以办的,没有特别时间要求,可以在开船前办,也可以在开船后再办。因为索马里ECTN货物跟踪单看上去像是一份“证书”的文件,主要作用是用于目的港清关,所以很多客户习惯把它称为EC…

Mybatis使用collection映射一对多查询分页问题

场景&#xff1a;页面展示列表&#xff0c;需要查询多的字段&#xff0c;和一的字段。并且还要分页。 这时候直接想到的是手写sql。 /*** 标签*/private List<BasicResidentTags> tags;原来的sql 。 <!--一对多映射--><resultMap id"many" type&qu…

(2)Mission Planner概述

文章目录 前言 2.1 什么是Mission Planner 2.2 历史 2.3 支持 2.4 浏览文档 前言 Mission Planner 是 ArduPilot 开源自动驾驶仪项目的全功能地面站应用程序。本页包含 Mission Planner 的背景信息和本网站的组织结构。 2.1 什么是Mission Planner Mission Planner 是用于…

Nginx动静分离、资源压缩、负载均衡、黑白名单、防盗链等实战

一、前言 Nginx是目前负载均衡技术中的主流方案&#xff0c;几乎绝大部分项目都会使用它&#xff0c;Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 二、…

搭建微服务基础环境

创建使用会员微服务模块-service consumer 3.1需求分析 浏览器向service consumer请求某个数据&#xff0c;service consumer会去向service provider请求数据&#xff0c;然后将service provider返回的数据返回给浏览器。 添加数据同理。 3.2思路分析 创建Module&#xff0…

全光谱对眼睛视力好不好?全光谱对眼睛的影响

什么是全光谱&#xff1f;全光谱指的是光谱中包含紫外光、可见光、红外光的光谱曲线&#xff0c;并且在可见光部分中红绿蓝的比例与阳光近似&#xff0c;显色指数Ra接近于100的光谱。与普通LED相比&#xff0c;全光谱LED光谱更加连续&#xff0c;色域更广泛。简单来说&#xff…

c语言结构体知识系统详解

本篇文章带来结构体相关知识与结构体内存对齐的规则详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#xff01;&…

广州华锐互动:水利数字孪生智能管理系统的特色

水利数字孪生智能管理系统是一种基于数字孪生的新型水利管理工具&#xff0c;它通过将现实世界中的水利设施和设备数字化&#xff0c;并在虚拟环境中进行模拟和分析&#xff0c;为水利管理者提供更加直观、精准的决策支持。该系统具有以下亮点&#xff1a; 首先&#xff0c;水利…

你有英语成绩或证书吗?申请中国人民大学与加拿大女王大学金融硕士是否需要英语?

随着经济全球化的发展&#xff0c;英语的重要性也愈发明显。英语作为世界通用程度较高的语言&#xff0c;在传播本国文化及国际交往中起着不可替代的作用。中国综合国力的巨大提升&#xff0c;让世界开始认真倾听来自中国的声音。这样的现实背景之下&#xff0c;我们强调中国文…

Python(四十五)二层循环中的break和continue

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

HBase Compaction 原理与线上调优实践

作者&#xff1a;vivo 互联网存储技术团队- Hang Zhengbo 本文对 HBase Compaction 的原理、流程以及限流的策略进行了详细的介绍&#xff0c;列举了几个线上进行调优的案例&#xff0c;最后对 Compaction 的相关参数进行了总结。 一、Compaction 介绍 HBase 是基于一种 LSM-…

数据结构:手撕图解七大排序(含动图演示)

文章目录 插入排序直接插入排序希尔排序 选择排序选择排序堆排序 交换排序冒泡排序快速排序hoare版挖坑法前后指针法快速排序的递归展开图快速排序的优化三数取中法 快速排序的非递归实现 归并排序 插入排序 插入排序分为直接插入排序和希尔排序&#xff0c;其中希尔排序是很值…

python面试题(一)

如果无聊&#xff0c;可以查看这篇文章~ 使用python做一些奇奇怪怪的事情&#xff1f;_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131906360 问&#xff1a;什么是Python的GIL&#xff08;全局解释器锁&#xff09;&#xff1f;它对…

如何以毫秒精度,查看系统时间以及文件的创建时间

用 cmd 查看系统的时间&#xff1a; powershell -command "(Get-Date -UFormat %Y-%m-%d %H:%M:%S).toString() . ((Get-Date).millisecond)" 用 XYplorer 查看文件的精确创建时间&#xff08;含30天试用&#xff09;&#xff1a; XYplorer - File Manager for …

基于拉格朗日-遗传算法的最优分布式能源DG选址与定容(Matlab代码实现)

目录 1 概述 2 数学模型 2.1 问题表述 2.2 DG的最佳位置和容量&#xff08;解析法&#xff09; 2.3 使用 GA 进行最佳功率因数确定和 DG 分配 3 仿真结果与讨论 3.1 33 节点测试配电系统的仿真 3.2 69 节点测试配电系统仿真 4 结论 1 概述 为了使系统网损达到最低值&a…