看SLAM视觉十四讲的时候了解到了信赖域法(Trust Region)的其中一种叫Dogleg,然而上网找了一圈,发现并没有较为详细的推导,自己整理了一下网上的资源,然后详细的推了一下:
首先L-M法是G-N法与最速下降法的混合形式,通过调整阻尼因子来在这两种方法之间切换,而狗腿法类似,只不过它是通过改变信赖域来实现的。这里可以分为两个问题:
- 如何判断是使用G-N法还是最速下降法的增量?
- 如果确定了是使用哪个方法,那么它对应的增量是多少?
- 狗腿法的增量为多少?
首先关于第二个问题,如果学过最速下降法和G-N法,那么可以知道,他们对应的增量分别为:
G-N法为: 最速下降法为:
这里需要注意的是 :最速下降法的增量的方向,也就是的值,并不是雅克比矩阵的转置,这里我绕了很久,发现,十四讲的书上的雅克比矩阵其实是的雅克比矩阵,并不是f(x)的雅克比矩阵,如果我们将f(x)的雅克比矩阵计算出来为,那么F(x)的雅克比矩阵实际上是,推导如下:
回到上面两个增量,这里的为多少呢?推导如下:
然后我们将和相乘,发现最速下降法的增量,在网上很多地方都会将它命名为。
另外G-N法的增量,网上很多地方将它命名为。
以上,我们解决了之前提出的第二个问题,也就是这两个方法的增量为多少:
最速下降法:(也可以叫做或者)
G-N法:(也可以叫做或者)
然后来解决剩下两个问题,这两个问题其实可以合起来,也就是问:狗腿法的增量和G-N法、最速下降法的增量有什么关系?
狗腿法“人为地”定义了利用信赖域来选择狗腿法的增量为多少(或者说狗腿法每一步的迭代步长),我在网上看到了两种方法,本质都是一样的,但是实施起来稍微有点不同:
方法一:
这里的三种情况可以对应如下的三个图(上面的表示信赖域半径):
利用上面的判断标准来得出狗腿法对应的迭代步长。
方法二:
这里tau的选取方式如下:
需要注意的是第三个情况,这种情况的值为delta,我们可以将等式两边同时求2范数的平方,并且将tau-1看做,于是可以写成:
解这个2元1次方程就可以得出,再求tau。
至此,通过以上方法可以求出狗腿法对应的步长(或叫)。
然后计算增益比,增益比的计算我见过分母上使用一阶近似,或者二阶近似,至于怎么选取我并不是很懂。但是我看网上别人的大都采用二阶近似。当使用计算出之后,我们根据如下的判断标准来调整信赖域的半径:
这里。然后不断地循环迭代。
以上的内容是参考别人的博客加上自己的理解和整理,参考地址如下: