一、非线性最小二乘问题
先考虑简单的问题:1.当很简单时:令,将得到极值点或鞍点,比较这些解即可。
2.当复杂时(为n元函数):难求,或很难解,此时使用迭代方式来求解。
迭代的方式为:
- 给定某个初始值。
- 对于第k次迭代,寻找一个增量,使得达到极小值。
- 若足够小,则停止。
- 否则,令,返回2。
这里需要确定增量的方法(即梯度下降策略):一阶的或二阶的。首先需要对其进行泰勒展开得到: 若只保留一阶梯度:,增量的方向为:.(通常还需要计算步长),该方法称为最速下降法。
若保留二阶梯度:,则得到(令上式关于的导数为零):该方法称为牛顿法。
最速下降法和牛顿法虽然直观,但使用当中存在一些缺点:
- 最速下降法由于过于贪婪可能导致迭代次数的增多
- 牛顿法迭代次数少,但需要计算复杂的Hessian矩阵
因此,可以通过Gauss-Newton和Levenberg-Marquadt来回避Hessian的计算。
二、理解Gauss-Newton,Levenburg-Marquadt等下降策略
Gauss-Newton
一阶近似:
平方误差变为:令关于导数为零:
记为:
G-N用J的表达式近似了H。
步骤如下:
- 给定初始值。
- 对于第k次迭代,求出当前的雅可比矩阵和误差。
- 求解增量方程:。
- 若足够小,则停止。否则,令。
Levenberg-Marquadt
Gauss-Newton简单实用,但当中无法保证H可逆(二次近似不可靠)。
而Levenberg-Marquadt方法一定程度上改善了它。
G-N属于线搜索方法:先找到方向,再确定长度;L-M属于信赖区域方法,认为近似只在区域内可靠。
在L-M中考虑近似程度的描述即实际下降/近似下降。若太小,则减小近似范围;若太大,则增加近似范围。
LM的流程如下:
- 给定初始值,以及初始优化半径。
- 对于第k次迭代,求解:其中是信赖域的半径。
- 计算。
- 若,则;
- 若,则;
- 如果大于某个阈值,认为近似可行。令。
- 判断算法是否收敛。如不收敛则返回2,否则结束。
在信赖域内的优化,利用拉格朗日乘子转化为无约束:仍参照高斯牛顿法展开,增量方程为:在Levenberg方法中,取D=I,则: LM相比于GN,能够保证增量方程的正定性,即认为近似只在一定范围内成立,如果近似不好则缩小范围;从增量方程上来看,可以看成一阶和二阶的混合,参数控制着两边的权重,如果为0,则为,即采用二阶方法牛顿法;如果非常的大,则采用一阶方法最速下降法。
三、BA
首先,误差是什么?如何表示。BA中待优化的变量是位姿和路标点,如何求误差函数关于位姿和路标点的导数?李代数扰动模型是什么?雅可比矩阵式什么?在BA中具体由怎样的形式?
旋转矩阵群与变换矩阵群:具有连续光滑性质的群叫做李群,存在问题:对加法不封闭,无法求导。
- 对R对应的李代数加上小量,求相对于小量的变化率(导数模型);
- 对R左乘或右乘一个小量,求相对于小量的李代数的变化率(扰动模型):
四、图优化与g2o
重投影误差:
优化特征的空间点位置:
文章出处登录后可见!