因此,LM算法可以看作给变化量Δx添加一个信赖区域来限制Δx的大小,并认为在信赖区域里面近似是有效的,否则近似不准确。
确定信赖区域一个好的办法是通过比较近似模型和实际模型的差异来确定,如果差异小,就增大范围;如果差异太大,就缩小范围。考虑实际模型和近似模型变化量的比值
(23)式(23)可以通过ρ的值来判断泰勒近似的好坏,其中分子是实际模型的变化量,分母是近似模型的变化量。当ρ接近1的时候,表明近似模型较好;如果ρ较小,则实际模型的变化量小于近似模型的变化量,则认为近似模型较差,需要缩小近似范围。反之,当ρ较大时,说明实际模型变化量更大,需要放大近似范围。经典LM算法可以表示如下:
(1) 给定初始迭代值x0(坐标向量初值可由伪卫星给出,旋转向量初值由视觉VIO提供)及调节因子μ0:μ0=max([hii]),其中hii是H0的对角线元素。
(2) 对于第k次迭代,求解优化问题。
(3) 计算ρ。如果ρ>0,则认为近似可行,令xk 1=xk Δxk;若ρ>4/5, 则μk 1=2μk;若ρ>1/5,则μk 1=0.5μk。
(4) 判断算法是否收敛。如果不收敛,跳回步骤(2),否则结束。
当μk较小时,说明Hk占主导地位,说明二次近似在该范围内是比较好的,LM方法更接近于高斯牛顿法;另一方面,当μk较大时,LM算法更接近一阶梯度下降算法,这说明二次近似不够好。LM算法的求解方式,可以避免线性方程组的矩阵非奇异和病态等问题,提供更稳定、更准确的解法。
在经典LM算法中,从信赖域法角度分析,μk可以看作是每次迭代约束区域的半径,其实是一个球形的区域,该约束认为只有在球内才是有效的。
Jf为f的一阶雅克比矩阵,这就默认了各参数分量的约束是等权的。H近似等于Hessian矩阵,为了更加高效地约束Δxk的变化,变形如下