一起研究ORB-SLAM(五)---数学基础(1)

转载自:一起研究ORB-SLAM(五)---数学基础(1) 

今天的是关于Orb-SLAM的数学基础,不要把里头的内容想的太过高深,其实只要用心,什么都不是事,这里只是介绍了最简单的数学基础,如有不对的,不清楚的,还请大家留言,多多指教。 
以往关于ORB-SLAM文章 
一起研究ORB-SLAM(一)---结构和入口 
一起研究ORB-SLAM(二)---Tracking线程 
一起研究ORB-SLAM(三)--LocalMapping和LoopClosing线程 
一起研究ORB-SLAM(四)--程序结构 


小莱姆:师兄,不想学数学,太抽象了,学不懂,看不懂! 
师兄:如果不学那我就不要你了,你自己看着办!! 

1.Hessian 矩阵 
函数F的二阶导数,映射到一个nxn 的一个矩阵,则该矩阵的每一个数值为该函数在该点的二阶导数,该矩阵称为Hessian矩阵


我想二阶导数大家都很清楚了,在罗嗦几句,关于二阶导数的几何意义: 
1.       斜率的变化情况 
2.       函数的凹凸性 
根据以上的二阶导数的性质,就可以得知一些事情: 
1.       hessian矩阵的每一个值,代表了函数图像的每一个点的主曲率的大小。 
2.       hessian的特征值反应好在该点附近的函数图像的凹凸性,特征值越大,凸性越强。 
  
Jacobian 
函数的一阶导数的,就是将函数映射到一个nxn阶矩阵,

根据一阶导数的性质,我们可以知道,他的每一个数值,表示了函数在这一点的梯度的数值, 
3         泰勒级数 
设函数F: R->R 是一个无限可微的函数,则可以的到如下的函数表述:

则该函数可以被称为,函数f在点a的泰勒级数,前提必须是Fa点必须的可微的。 
如果该泰勒级数有一个收敛半径r,并且|x-a|<r 则可以被人为函数在该点的数值为:

所以我们经常使用有限的序列进行函数的某点上的近似值的处理,如下公式,函数Fa点,使用a点的有限的泰勒级数进行估计。表达式如下:

则可以使用上述的表达式表示一个二阶的泰勒级数的展开式:

4         梯度下降 
梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。其迭代公式为  ,其中  代表梯度负方向,  表示梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标看做是ak+1的函数,然后求满足f(ak+1)的最小值的 即可。 
因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。 
缺点:
·             靠近极小值时收敛速度减慢。
·             直线搜索时可能会产生一些问题。
·             可能会之字形地下降。

5         牛顿法 
使用牛顿法不能区分,函数的极小极大和鞍点,接下来介绍一下牛顿法的: 
设函数F是二阶可微函数,首先我们假设最初的估计点x附近的最小点是ˉx ,换句话说,我们需要函数f在该点附近是半正定的,由于这个条件的存在,所以必须存在ˉx是函数F的一个根,即  F (¯x) = 0 ,所以我们可以假设x0是在ˉx的附近,则我们可以使用一阶泰勒级数描述函数F (¯x)的值,即:
小莱姆:一阶泰勒级数为啥会出现Hessian
师兄:前面的是F


由于F (¯x) = 0 所以:式子可以变成如下的形式:

所以这就导致了一个递归的出现:

所以我们就可以定义一个增量更新的式子:

所以可以通过反复使用牛顿方法进行线性系统的求解:

若是将函数表示为一个二次型的形式,如下所示:

若,A是对称,并且是半正定的,则该二次型的最小值可以表示为:

通过上式可以获得对应参数为:

所以若是函数F满足二次型,则在无限次的迭代过程中,函数必须集中在一点,产生最优的点。

6         高斯牛顿法 
在高维的情况下,Hessiam矩阵是非常难求的,所以牛顿法产生了极大的限制。 
所以设F满足下面等式:

,且d有二阶微分存在,并且Λ是一个mxm的矩阵,是一个对称且半正定的,所以我们需要求取他的最小值,所以可以通过方法可以将方程转化成最小二乘的形式,去估计模型的x值,

首先我们假设FX 式子中的1/2 所以可以变化为

F的二阶导可以表示为:

由于Hd是关于矩阵的Hessian 张量,所以当d(x)是非常小的时候,则可以表示为:

所以高斯牛顿的方法可以通过上面的牛顿的方法表示为:

7         Levenberg-Marquardt 
通过上面的方法,可以知道,使用牛顿类别的方法,很容陷入局部最小,或者鞍点的情况,所以就产生了另外一种算法,Levenberg-Marquardt,公式描述如下:

是不是就比高斯牛顿的方法,多了一个µIµ>0 ,就是这个参数,可以适应很多的情况的变化,若是µ值很小,怎该函数就是一个高斯牛顿发,若是该值趋近于无穷,则下面公式中α趋近于0哦,就是一个梯度下降算法。

  
  
 小莱姆:师兄,知不知道新播出的电视剧很好看啊! 
师兄:你知道莱姆酒是很好喝的!! 
小莱姆:。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值