LM优化

378 阅读3分钟

 这里先介绍优化的一些基本概念

解决最小二乘问题的终极目标就是要找到一个自变量b,使得此处的F(b)最小,我们把这个b叫做全局最小点。然而这并不是能偶很容易办到的事情。
首先,对于复杂的F(b)进行求导不一定能成功。即使可以求导,得到的也只是极值,没有很好的办法证明他同时也是最值。如果直接让F(b)=0,也不一定有普适的求解公式。基于以上问题,人们提出了局部最小值和迭代求解的概念。
局部最小值的思路是要求目标函数值在某一个区域内为最小即可。用数学语言描述如下(从这里以后把b替代成习惯性的x)

在∣∣x−x∗∣∣<σ   区间内满足F(x∗)<F(x)   其中σ是一个小的正数

有了定义后,我们该怎么判断是否是局部最小值呢?我们清楚在局部最小值在小领域内必定有导数等于0.然而导数为零的也可能是局部最大值或者是鞍点(既不是最大值也不是最小值但导数为零),导数等于零处称为驻点。所以我们还需要寻找一个充分条件来判断局部最小值。

这里要用到泰勒展开

假设目标函数F是一个光滑可微的函数,那么他就可以进行泰勒展开

​编辑

 已知在目标点处J=0,那么上式可以化简为:

编辑

 x*要是局部极小值,则需要

编辑

所以我们可以得出结论

编辑

 就是说海塞矩阵必须为正定二次型矩阵,才能判断驻点为局部最小值处。所以结论是:

编辑

 总之,我们要做两件事,1找让函数下降的方向,2.在这个方向上给自变量一个变化的步长,让函数最大程度的下降。

假设我们从初始点x0这点做下降操作,我们对这一点处附近进行泰勒展开:

​编辑

根据下降的要求我们很容易得到寻找下降方向的一个标准

只 要 满 足 h T J < 0 , h 即 为 下 降 方 向 只要满足h^TJ<0,h即为下降方向

实际上,这个方向就是该函数在这点梯度的反方向,是下降最快的方向(对于多元函数是求梯度,先求偏导,然后把点带入偏导组成的向量就是该点的梯度,再给向量乘以-1就是反方向了,不用归一化处理,乘以-1后就是梯度反方向了,下面就是找步长)。

参考论文的证明,

​编辑

这个表示,x给了一个增量ah, 其变化率,显然当θ=PI时,这个变化最大,就是梯度的反方向

θ就表示方向h和一阶导数或者多元函数的梯度F`(x)之间的夹角。

下面的推导是基于F(x)=1/2 f(x)*f(x)的一般形式,在slam中,误差函数的2范数显然是需要加入协方差项的,即e(x+hlm)*Σe(x+hlm),其他的推导相同

LM算法的核心思想是在高斯牛顿法中加入一个阻尼因子来决定迭代时下降的更激进还是更保守。

​编辑

1.μ>0, 保证了hlm是下降的方向

2.如果μ很大, JTJ直接省略,变成了最速下降

​编辑

3.如果μ很小,μI省略,近似成了高斯-牛顿

这个阻尼因子与ρ有关,如下,他表示实际的变化和近似的变化的比值,

如果ρ是很大,则表示近似的不够,减小阻尼u,即下一次增大步长Δx,向高斯-牛顿方法靠近

编辑

分子可以带入求解,分母的计算如下, hlm就是增量Δx ,L(0)就是F(x)本身

编辑

​编辑

 如果ρ小了甚至是负数,则增大阻尼u,减小步长,即x变化量Δx太大了,要小点, 更接近最速下降

其收敛的三个条件是:

1F的一阶导数很小,小于一定的阈值,即到了驻点,导数为0,这里是很接近0了,所以收敛

​编辑

​编辑

​编辑

  1. x的增量小于一定阈值

​编辑

3.达到迭代次数

​编辑

最后,我们看下论文里给出的伪代码:

编辑

 这个τ的取值是,

​编辑

μ的初始值的选择 

​编辑

参考:

METHODS FORNON-LINEAR LEASTSQUARES PROBLEMS 2nd Edition,  April 2004
K. Madsen, H.B. Nielsen, O. Tingleff

《 METHODS FOR NON-LINEAR LEASTSQUARES PROBLEMS》论文学习_wincent嘻嘻哈哈的博客-CSDN博客

高斯-牛顿优化算法 & L-M优化算法逐行推导 - 知乎