vSLAM学习笔记——高斯牛顿法


高斯牛顿法

高斯牛顿法的思想是将 f ( x ) f(x) f(x)进行一阶的泰勒展开:
f ( x + Δ x ) ≈ f ( x ) + J ( x ) T Δ x f(x+\Delta x)\approx f(x)+J(x)^T\Delta x f(x+Δx)f(x)+J(x)TΔx
当前目标是寻找增量 Δ x \Delta x Δx,使得 ∣ ∣ f ( x + Δ x ) ∣ ∣ 2 ||f(x+\Delta x)||^2 f(x+Δx)2达到最小。为了求 Δ x \Delta x Δx,我们需要解一个线性的最小二乘问题:
Δ x ∗ = arg ⁡ min ⁡ Δ x 1 2 ∥ f ( x ) + J ( x ) T Δ x ∥ 2 \Delta x^*=\arg \min_{\Delta x}\frac{1}{2}\lVert f(x)+J(x)^T\Delta x\rVert ^2 Δx=argΔxmin21f(x)+J(x)TΔx2
对上述目标函数对 Δ x \Delta x Δx求导,并令其导数为零:
J ( x ) f ( x ) + J ( x ) J ( x ) T Δ x = 0 J(x)f(x)+J(x)J(x)^T\Delta x=0 J(x)f(x)+J(x)J(x)TΔx=0
可以得到如下方程组:
J ( x ) J ( x ) T ⏟ H ( x ) Δ x = − J ( x ) f ( x ) ⏟ g ( x ) \underbrace{J(x)J(x)^T}_{H(x)}\Delta x=\underbrace{-J(x)f(x)}_{g(x)} H(x) J(x)J(x)TΔx=g(x) J(x)f(x)
该方程式关于变量 Δ x \Delta x Δx线性方程组,称为增量方程,也可以称为高斯牛顿方程或者正规方程。将上式左边系数定义为 H H H,右边定义为 g g g,则上式变为:
H Δ x = g H\Delta x=g HΔx=g
此处对比牛顿法可见,高丝牛顿法用 J J T JJ^T JJT作为牛顿法中二阶 H e s s i a n Hessian Hessian矩阵的近似,从而省略了计算 H H H的过程。

算法步骤

  1. 给定初始值 x 0 。 x_0。 x0
  2. 对于第k次迭代,求出当前的雅克比矩阵 J ( x k ) J(x_k) J(xk)和误差 f ( x k ) f(x_k) f(xk)
  3. 求解增量方程: H Δ x k = g H\Delta x_k=g HΔxk=g
  4. Δ x k \Delta x_k Δxk足够小,则停止。否则,令 x k + 1 = x k + Δ x k x_{k+1}=x_k+\Delta x_k xk+1=xk+Δxk,返回第 2 2 2步。

讨论

为了求解增量方程,需要求解 H − 1 H^{-1} H1,因此要求 H H H为正定矩阵。但实际过程中可能出现 J J T JJ^T JJT为奇异矩阵或者病态的情况,此时增量的稳定性较差,导致算法不收敛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小岳在线debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值