- 最小二乘基本思想
- Ceres库与最小二乘优化
给定一组观测数据,使构建的模型的输出值与观测值的残差的平方最小
残差指的是一个,代价函数指的是一系列的残差之和。
不同残差正负可能抵消,使用绝对值计算不方便,采用平方可以更好地计算
损失函数中有观测值和损失的计算方式
- 最优化步长的选择方法
进行拟合时一般会先构建对应的数学模型
信任区域法:定区间,取极值
信赖域方法利用一个模型函数(通常是二次的)在被称为信赖域的搜索空间的子集上近似目标函数。如果模型函数成功地使真实目标函数最小化,则信任域被扩展;反之,则信任域被收缩
利用信赖域算法求解无约束的非线性最小二乘问题_含matlab代码
% 流程图中的f为原始函数,对应代码中的Diff
% 流程图F指的是残差,对应代码中的f
a.信赖域算法是在一个球形区域搜索,在这个球形区域的中心点进行二阶泰勒近似
最优化的目标是使得fai(x(k))-f(x(k))最小
b.二阶泰勒近似其实就是一个二次规划问题,可以直接求取极值,得到了子问题的最优解
matlab中进行二次规划的代码
线性搜索法:定方向,定步长
首先找到一个下降方向,目标函数将沿该下降方向减少,然后计算一个步长,该步长决定沿该方向移动多远。下降方向可以用多种方法计算,如梯度下降法、牛顿法和拟牛顿法。步长可以精确或不精确地确定。 - 最优化方法
最速下降法:收敛速度慢
牛顿法:移动方向不一定是下降方向
L-M法(Levenberg-Marquardt法)莱文伯格·马夸特:全局优化,收敛速度快,相比牛顿法,公式中多了一个阻尼系数(大于1),在迭代过程中对阻尼系数进行更新。
LM算法流程图为:
其中,fk为原始函数,F(x(k+1))为残差值
- 总结
信赖域法中计算hessian的严格数学表达式,LM算法中用雅可比的转置乘上雅可比来近似hessian矩阵
信赖域设定区域,通过二次规划求极值,通过该极值判断损失增长还是减少,更新区域大小,当残差变化小于阈值,得到最优值。
LM算法通过正规方程计算出的d,判断对损失增长还是减少情况,更新阻尼系数,当步长变化满足小于阈值,则认为收敛,得到最优值
信赖域方法在姿势估计中得到的精度和Levenberg_Marquardt算法不相上下,但是收敛速度却不如LM - 参考文献
LM算法的matlab代码及流程图
Levenberg-Marquardt算法浅谈