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

news2024/11/16 7:22:23

"天之道也"

    • 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法。

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

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

相关文章

el-upload上传图片和视频,支持预览和删除

话不多说&#xff0c; 直接上代码&#xff1a; 视图层&#xff1a; <div class"contentDetail"><div class"contentItem"><div style"margin-top:5px;" class"label csAttachment">客服上传图片:</div><el…

【spring】spring bean的生命周期

spring bean的生命周期 文章目录 spring bean的生命周期简介一、bean的创建阶段二、bean的初始化阶段三、bean的销毁阶段四、spring bean的生命周期总述 简介 本文测试并且介绍了spring中bean的生命周期&#xff0c;如果只想知道结果可以跳到最后一部分直接查看。 一、bean的…

创建维基WIKI百科和建立百度百科有何不同?

很多企业有出口业务&#xff0c;想在互联网上开展全球性网络营销&#xff0c;维基百科往往被认为是开展海外营销的第一站。其作用相当于开展国内网络营销的百度百科&#xff0c;经常有些企业给小马识途营销顾问提供的词条内容就是百度百科的内容&#xff0c;可事实上两个平台的…

无人机影像配准并发布(共线方程)

无人机影像 DEM 计算四个角点坐标&#xff08;刚性变换&#xff09; 像空间坐标&#xff08;x,y,-f&#xff09; 像空间坐标畸变纠正 deltax,deltay 已知(x,y)&#xff0c;求解(X,Y, Z)或者(Lat,Lon) 这里的Z是DEM上获取的坐标和Zs为相机坐标的高程&#xff0c;如果均为已…

水文章——推荐一个视频播放器和一个图片查看器

视频播放器——PotPlayer http://www.potplayercn.com/ 图片查看器——JPEGVIEW https://www.bilibili.com/video/BV1ZY411P7fX/?spm_id_from333.337.search-card.all.click&vd_sourceab35b4ab4f3968642ce6c3f773f85138

PHP数组转对象和对象转数组

PHP数组转对象和对象转数组 <?php function array_to_object($arr){$obj new stdClass();foreach ($arr as $key > $val) {if (is_array($val) || is_object($val)) {$obj->$key array_to_object($val);} else {$obj->$key $val;}}return $obj; } function o…

pdf怎么转换成word 文档?这几种方法收藏一下

pdf怎么转换成word 文档&#xff1f;PDF和Word是我们平时工作和学习中最常用的两种文档格式。PDF文档格式通常用于电子书籍、合同、申请表等需要保持原样式的文档。而Word文档则通常用于编辑和修改。但是&#xff0c;有时我们需要将PDF文档转换为可编辑的Word文档&#xff0c;以…

【Docker】在Docker大火的背后,究竟隐藏着未来科技发展的哪些大趋势

这里写目录标题 在docker大火的背后是什么新科技的发展呢&#xff1f;1.容器化技术的普及2.云原生应用的兴起3.边缘计算的发展4.容器编排和管理平台的演进5.混合云和多云架构的普及 docker三大特性轻量化可移植性可扩展性 docker被谁抢了风头呢1.风头被Kubernetes (K8S)抢了2.缺…

日撸代码300行:第54天(基于 M-distance 的推荐)

代码来自闵老师”日撸 Java 三百行&#xff08;51-60天&#xff09;“&#xff0c;链接&#xff1a;日撸 Java 三百行&#xff08;51-60天&#xff0c;kNN 与 NB&#xff09;_闵帆的博客-CSDN博客 算法是基于M-distance的推荐&#xff0c;通过用户评分矩阵对用户进行电影推荐。…

如果你在选型低代码平台,可以从这5个角度去分析抉择

研究低代码平台已有3年&#xff0c;也算是个低代码资深用户了&#xff0c;很多企业面临低代码选型上的困难&#xff0c;选平台容易&#xff0c;换平台难。下面基于个人理解给大家做一份千字的注意事项&#xff01;希望对大家在选型低代码方面有一定帮助。最终&#xff0c;正确且…

[AWD靶场搭建]

文章目录 [AWD靶场搭建]前言AWD平台搭建靶机搭建Cadinal添加靶机 连接Asteroid大屏默认ssh账号密码参考 [AWD靶场搭建] 前言 觉得好玩搭建了一下AWD靶场&#xff0c;使用了vidar-team编写的 Cardinal AWD平台搭建 这里我是在kali搭建的&#xff0c;所以我下载了这个压缩包&…

centos7搭建k8s环境并部署springboot项目

之前看了很多文章&#xff0c;都是部署后一直报错&#xff0c;百度解决后下次又忘了&#xff0c;这次决定把从头到尾的过程记录下来方便下次再看&#xff0c;部署参考文章尚硅谷Kubernetes&#xff08;k8s&#xff09;视频学习笔记_尚硅谷k8s笔记_溯光旅者的博客-CSDN博客 1、…

13年测试老鸟,接口性能测试总结整理,据说这是全网最全的...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试按照不同…

支持多种通信方式和协议方便接入第三方服务器或云平台

2路RS485串口是一种常用的通信接口&#xff0c;可以支持Modbus Slave协议&#xff0c;并可接入SCADA、HMI、DSC、PLC等上位机。它还支持Modbus RTU Master协议&#xff0c;可用于扩展多达48个Modbus Slave设备&#xff0c;如Modbus RTU远程数据采集模块、电表、水表、柴油发电机…

GAN论文精读

标题:Generative Adversarial Nets 摘要: 简写:作者提出了一个framework通过一个对抗的过程&#xff0c;在这里面会同时训练两个模型。 第一个模型为生成模型G&#xff0c;是用来抓住整个数据的分布 第二个模型为辨别模型D&#xff0c;是用来估计一个样本是否从G中产生。 …

BD Biosciences通过使用Liquid UI优化SAP QM,节省了80%的处理时间,提高了 95% 的数据准确性

背景 BD 生物科学公司成立于 1897 年&#xff0c;致力于改善患者的治疗效果&#xff0c;并在一个多世纪的时间里始终坚持这一理念&#xff0c;现已涉足诊断、生物科学以及各种医疗设备和仪器系统。 挑战 手动验证数据 原因&#xff1a;使用非自动程序演示和验证数据&#xff0c…

FRR+VPP

安装 三者的结合&#xff0c;实际上编译安装好就行了&#xff0c;不需要做任何代码上的修改&#xff0c;只需要安装和配置&#xff0c;然后你就有了一台路由器。 FRRouting使用frr-8.5.2版本&#xff0c;VPP使用23.06版本&#xff0c;DPDK和lcpng是VPP的插件&#xff0c;安装…

【CAS6.6源码解析】源码构建时-默认service配置不生效解决方案

CAS6的源码提供了默认的HTTPSandIMAPS-10000001.json配置用于授权所有的https和imaps服务&#xff0c;但是当添加JsonServiceRegistry模块启动后&#xff0c;会发现service是没有被注册的&#xff0c;是由于json路径引起的错误&#xff0c;可以把路径修改为绝对路径以解决此问题…

在idea中添加try/catch的快捷键

在idea中添加try/catch的快捷键 在idea中添加try/catch的快捷键 ctrlaltt 选中想被try/catch包围的语句&#xff0c;同时按下ctrlaltt&#xff0c; 出现下图 选择try/catch即可。

QTDAY3

闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器事件处理函数 #include <QTime> //时间类 #include <QString> #include <QPushButton> #include <QTextToSpeech> #include …