最小机器问题分枝限界法_干货|状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...

本文介绍了SLAM(Simultaneous Localization And Mapping)中的状态估计问题,特别是非线性最小二乘问题的背景和解决方法。通过对经典SLAM模型的阐述,解释了如何从最大后验概率问题转换为最大似然估计,进而形成最小二乘问题。文章提到了四种常用的解法,适合入门学习者参考。
摘要由CSDN通过智能技术生成

7eafb667f3f90a3fe81ec70714128860.gif

干货分享栏目旨为用户分享视觉SLAM技术干货。

578741d55eb01dcea768296245db7d18.png 02032acd011ae3511a72b88208424be0.png

文章推荐语:本文对SLAM的状态估计问题中常见的最小二乘问题解法作了整理,作为入门学习笔记。状态估计尤其是无约束非线性最小二乘问题是SLAM前端和后端中经常遇到的问题。

原文出处:知乎

原文作者:yikang

原文连接:https://zhuanlan.zhihu.com/p/114820251

状态估计中的最小二乘问题来源

根据经典的SLAM模型:

运动方程: a1b13900-1758-eb11-8da9-e4434bdf6706.svg

观测方程: a2b13900-1758-eb11-8da9-e4434bdf6706.svg

其中x为相机位姿,u为运动输入,w为噪声; a5b13900-1758-eb11-8da9-e4434bdf6706.svg 为在位姿 a6b13900-1758-eb11-8da9-e4434bdf6706.svg 处对路标 a8b13900-1758-eb11-8da9-e4434bdf6706.svg 进行观测后,对应到图像上的像素位置,v为噪声。

我们通常假设噪声w,v服从高斯分布:

 a9b13900-1758-eb11-8da9-e4434bdf6706.svg , aab13900-1758-eb11-8da9-e4434bdf6706.svg ,即噪声分布的均值为0,协方差矩阵为R,Q。

在SLAM的一般情况下,我们可以获得相机观测数据和运动输入数据,然后根据数据对相机(也即机器人本体)进行位姿估计,将以上过程表示为数学形式即:

abb13900-1758-eb11-8da9-e4434bdf6706.svg

可见,求最大后验概率问题经过贝叶斯法则,变成了求最大化似然概率和先验概率的乘积:

acb13900-1758-eb11-8da9-e4434bdf6706.svg

进一步当我们连先验概率都不知道时,问题就变成了求解最大似然估计:

aeb13900-1758-eb11-8da9-e4434bdf6706.svg

这就得到了状态估计问题的最终数学形式,下面考虑求解此最大似然估计。

根据观测模型: a2b13900-1758-eb11-8da9-e4434bdf6706.svg ,因为噪声服从高斯分布,所以:

b0b13900-1758-eb11-8da9-e4434bdf6706.svg

对上式的概率密度函数取负对数:

b1b13900-1758-eb11-8da9-e4434bdf6706.svg

考虑到对数函数的单调性,求原函数的最大值转化为求负对数最小值,并且注意到上式右边第一项与x无关,因此对状态的最大似然估计转换为了最小化右侧的二次型项。即:

b2b13900-1758-eb11-8da9-e4434bdf6706.svg

其实该式就是最小化误差项的二次型,现在给出误差的定义:

b4b13900-1758-eb11-8da9-e4434bdf6706.svg

b6b13900-1758-eb11-8da9-e4434bdf6706.svg

当考虑实际中批量处理的数据时,由于各个时刻的输入和观测相互独立,所以:

b7b13900-1758-eb11-8da9-e4434bdf6706.svg

再次利用负对数将乘积变为求和,求对批量数据的最小化估计误差即是求批量数据的最大似然估计,结合上式和 b9b13900-1758-eb11-8da9-e4434bdf6706.svg 式,可以得到:

bab13900-1758-eb11-8da9-e4434bdf6706.svg

这样我们就由SLAM的状态估计,得到了最小二乘问题。通过上面简短的介绍,应该对什么事SLAM的 状态估计,以及如何将状态估计转换为最小二乘问题有了了解。

2865543df376c7c71614bcbb049841cb.png

非线性最小二乘问题及四种常用解法

来看一个这样的最小二乘问题: beb13900-1758-eb11-8da9-e4434bdf6706.svg 如果  c1b13900-1758-eb11-8da9-e4434bdf6706.svg  不是简单的线性函数,那么此最小二乘问题就变为了非线性最小二乘问题,对于不方便求解的非线性最小二乘问题我们一般采用迭代的方式进行计算,思路是:从一个初始值出发,不断优化当前的优化变量,使得目标函数下降。显然初始值给的越好,优化效果会越好。步骤为: 1.给定某初始值  c4b13900-1758-eb11-8da9-e4434bdf6706.svg 2.对于第k次迭代,寻找一个增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  ,使得  c6b13900-1758-eb11-8da9-e4434bdf6706.svg  达到最小值 3.若  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  足够小,则停止迭代 4.否则,另  c9b13900-1758-eb11-8da9-e4434bdf6706.svg  ,返回第2步。 根据上面的求解思路,求解导函数为零的问题变成了一个不断寻找下降增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  的过程。 下面就来看看寻找增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  的四种方法! 1、最速下降法 在  a6b13900-1758-eb11-8da9-e4434bdf6706.svg  处将目标函数进行泰勒展开: d2b13900-1758-eb11-8da9-e4434bdf6706.svg 上式中的  d4b13900-1758-eb11-8da9-e4434bdf6706.svg  是F函数的一阶导数,也叫雅克比矩阵;  d5b13900-1758-eb11-8da9-e4434bdf6706.svg  是F的二阶导数,也叫海塞矩阵。 我们选择保留一阶导数,忽略二阶导数时,增量可取为步长为  d7b13900-1758-eb11-8da9-e4434bdf6706.svg  的反向的梯度,这样就可以保证函数下降: ddb13900-1758-eb11-8da9-e4434bdf6706.svg 这种求解增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  的方法就称为最速下降法。 2、牛顿法 如果我们保留此式  d2b13900-1758-eb11-8da9-e4434bdf6706.svg  的二阶导数,就可以得到增量方程: e0b13900-1758-eb11-8da9-e4434bdf6706.svg 对右侧式子求关于  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  的导数,并令它为0,可以得到: e2b13900-1758-eb11-8da9-e4434bdf6706.svg 这样也求得了增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  ,这种方法就叫做牛顿法。 3、高斯牛顿法 这里我们直接对  c1b13900-1758-eb11-8da9-e4434bdf6706.svg  进行泰勒展开(注意不是目标函数F,而是f,这也是和牛顿法的区别): e5b13900-1758-eb11-8da9-e4434bdf6706.svg 根据前面的思路,我们想寻找增量  c5b13900-1758-eb11-8da9-e4434bdf6706.svg  ,使得目标函数最小,为了求增量需要解如下的最小二乘问题: e7b13900-1758-eb11-8da9-e4434bdf6706.svg 对上式右侧求关于  e8b13900-1758-eb11-8da9-e4434bdf6706.svg  的导数,并且令其为零: e9b13900-1758-eb11-8da9-e4434bdf6706.svg 得到的上式就是关于增量  e8b13900-1758-eb11-8da9-e4434bdf6706.svg  的线性方程组,又称高斯牛顿方程。此求解方法即高斯牛顿法。 4、LM法(列文伯格-马夸尔特法) 在高斯牛顿法中采用的近似泰勒展开,只能在展开点附近有较好的近似效果。于是我们考虑给  e8b13900-1758-eb11-8da9-e4434bdf6706.svg 添加一个范围(信赖区域),并认为在此区域内近似有效,超出区域则会出问题。 下面定义一个指标  eeb13900-1758-eb11-8da9-e4434bdf6706.svg  描述近似的好坏: efb13900-1758-eb11-8da9-e4434bdf6706.svg 如果  eeb13900-1758-eb11-8da9-e4434bdf6706.svg  接近1则显然近似是好的,否则,近似是不佳的。在高斯牛顿法基础上加上信赖区域,求解的最小二乘问题就变成了: e7b13900-1758-eb11-8da9-e4434bdf6706.svg f4b13900-1758-eb11-8da9-e4434bdf6706.svg 其中  f6b13900-1758-eb11-8da9-e4434bdf6706.svg  是信赖区域半径;D是系数矩阵,若D为单位阵,则相当于把增量  e8b13900-1758-eb11-8da9-e4434bdf6706.svg  约束在一个球内,马夸尔特提出取为非负数对角阵,实际中常用  f8b13900-1758-eb11-8da9-e4434bdf6706.svg  的对角元素平方根。 利用拉格朗日乘子法,把约束项放到目标函数中,构造拉格朗日函数: f9b13900-1758-eb11-8da9-e4434bdf6706.svg 对拉格朗日函数求关于增量  e8b13900-1758-eb11-8da9-e4434bdf6706.svg  的导数,并令为零: fcb13900-1758-eb11-8da9-e4434bdf6706.svg 这样就得到了求解增量  e8b13900-1758-eb11-8da9-e4434bdf6706.svg  的方程,此方法就称为LM法,即列文伯格-马夸尔特法。 5、四种方法的优劣对比 下面总结以上四种方法的优劣对比: 1.最速下降法:直观上将本算法十分简单,直接按照梯度的反方向下降即可;缺点是过于贪心,容易呈锯齿状下降,从而增加迭代次数。 2.牛顿法:相对而言也非常直观,同时由于引入了二阶导数,可以处理一阶导为0的情况;但缺点是二阶导数具有非常大的计算量。 3.高斯牛顿法:在牛顿法的基础上进行了一定程度的简化,使用  f8b13900-1758-eb11-8da9-e4434bdf6706.svg  代替海塞矩阵,避免了二阶导数的计算;缺点在于  f8b13900-1758-eb11-8da9-e4434bdf6706.svg  很容易病态,导致无法得到正确的结果。 4.LM法:通过引入阻尼项使得  f8b13900-1758-eb11-8da9-e4434bdf6706.svg  不那么容易病态,并且可以通过调整阻尼完成在梯度法和牛顿法之间切换;缺点不太清楚。 往期推荐 干货丨双目视觉图像获得三维点云(含Pangolin/OpenCV基本指令讲解) 干货丨卡尔曼滤波的深入理解与算法实现 干货丨增强型视觉SLAM关键帧选取策略与高效语义分析卷积神经网络 干货丨吐血整理,你想要的知乎大牛分享+微信公众号都在这了!

3bf8fe16a88d2d0dd8b6debc35c0d6cb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值