目录
SLAM的优化方法是基础知识,尤其最小二乘法是所有优化的基础。接下来将对以下知识进行总结。
- 最小二乘法
- 非线性:最速下降法、牛顿法、高斯牛顿法(GN)、列文伯格-马夸尔特(LM)联系
- 线性:QR分解、乔姆斯基分解法求解(Cholesky)、奇异值分解(SVD)
一、最小二乘法引出
最小二乘问题通常可以表述为,通过搜集到的一些数据(获取得到的样本),对某一个模型进行拟合,并尽可能的使得模型结果和样本达到某种程度上的最佳拟合,在SLAM中亦可以看作为观测值和模型估计值之间的误差:
其中 x 为模型中参数所组成的向量,e 通常被称为残差向量(residual vector).
1、线性最小二乘与非线性最小二乘的关系
线性:直接对目标函数求导,令其等于零,以此求得极值,比较后得到全局最小值。
非线性:由于函数复杂无法直接写出导数形式,无法直接得到全局最小值。退而求其次,从一个初始估计值通过不断迭代寻找局部最小值,不断寻找梯度并下降。
2、梯度下降法
下降法每一步迭代中都主要包括两部分内容,分别是求解下降单位向量方向和合理的步长
。
对损失函数F(x)一阶泰勒展开:
寻找下降方向,满足:
目标:求解步长dx,
思路:将目标函数||f(x+dx)||2在x附近进行泰勒展开
保留一阶:最速下降法。梯度下降法值保留泰勒展开的一阶项(只有雅克比项J),
保留二阶:牛顿法。牛顿法保留到二阶项(有海森矩阵项H)。
二、非线性最小二乘(高斯牛顿、LM)
高斯牛顿和LM的增量方程
关联:
(H+λI)△x=b
当λ= 0时,L-M等于G-N;
当λ= ∞时,L-M等于一阶梯度下降
L-M的好处就在于:如果下降的太快,使用较小的λ,如果下降的太慢,使用较大的λ
区别:
梯度法:保留一阶(最速下降法、常说的梯度下降法)与保留二阶(牛顿法)是将目标函数||f(x+dx)||2在x附近进行泰勒展开。由于牛顿法需要求解二阶导,也就是hessian matrix,运算量大,不利于实现,所以通常在牛顿法的基础上用去掉二阶项,用一阶项来近似二阶导,从而保证了计算效率。
高斯-牛顿和LM法则主要是针对非线性最小二乘问题提出的解决方案。
一阶和二阶梯度法:
这里的J和H是||f(x)||^2关于x的一阶、二阶导数
高斯牛顿法:先对 f(x)进行一阶泰勒展开,然后再取平方
这里的J是 f(x)关于x的一阶导数,二阶矩阵Hessian用J^T*J作为H的近似
高斯-牛顿法:将非线性函数f(x)进行一阶泰勒展开(此处我们展开的只是函数F(x)而非目标函数),缺点:需要保证H矩阵为正定的,但是在实际中H矩阵很有可能是半正定的或者其他情况
LM法:基于信赖区域理论,是由于高斯-牛顿方法在计算时需要保证矩阵的正定性,于是引入了一个约束,从而保证计算方法更具普适性。
(1) GN:线搜索
将f(x)进行一节泰勒展开,最后求解线性方程H△x=b;
用JT*J近似H矩阵,省略H复杂的计算过程;
稳定性差,可能不收敛;
(2) LM:信赖区域;
求解线性方程(H+λI)△x=b;提供更稳定,更准确的增量
三、线性最小二乘
1、正规方程
最小二乘表达式为:
正规方程(Normal Equation)
将展开可以得到:
为了求解得到该方程的最优解(即最小值),我们可以求解其对于参数 x 的偏导数,并令其等于零:
化简后得到:
以上被称为最小二乘的正规方程(Normal Equation)。进一步求解可得到
:
2、参考文献:
1、《视觉SLAM十四讲》
2、博客:https://www.cnblogs.com/leexiaoming/p/7224781.html
3、视觉SLAM常见的QR分解SVD分解等矩阵分解方式https://blog.csdn.net/wangshuailpp/article/details/80209863