《视觉SLAM十四讲》学习笔记-非线性最小二乘问题

非线性最小二乘问题:

minx⃗ 12f(x⃗ )22 min x → 1 2 ‖ f ( x → ) ‖ 2 2

迭代解步骤为:
1) 给定初值 x⃗ 0 x → 0 ;
2) 对 k k 次迭代,寻找增量xk, 使得 f(x⃗ k+x⃗ k)22 ‖ f ( x → k + △ x → k ) ‖ 2 2
3) 若 x⃗ k △ x → k 足够小,则停止迭代;
4) 否则令 x⃗ k+1=x⃗ k+x⃗ k x → k + 1 = x → k + △ x → k ,返回2).

牛顿法

为方便讨论,将最小问题在 x x 附近泰勒展开:

f(x+x)22f(x)22+Jx+12xHx

式中 J J Jacobi矩阵,而 H H Hessian矩阵
如果只保留一阶梯度,而增量方向为:

x⃗ =J(x⃗ ) △ x → ∗ = − J ⊤ ( x → )

上式若加上一个步长 λ λ , 则为最速下降算法.

若保留到二阶梯度,则增量方程为:

x⃗ =argminf(x⃗ )22+J(x⃗ )x⃗ +12x⃗ Hx⃗  △ x → ∗ = arg ⁡ min ‖ f ( x → ) ‖ 2 2 + J ( x → ) △ x → + 1 2 △ x → ⊤ H △ x →

对上式求导并令其为0,则增量的解为:
Hx⃗ =J H △ x → = − J ⊤

上试称为 牛顿法。牛顿法需要求解二阶Hessian矩阵,在求解规模较大时非常困难。

Gauss-Newton

Gauss-Newton的思想是将 f(x⃗ ) f ( x → ) 进行一阶泰勒展开:

f(x⃗ +x⃗ )f(x⃗ )+J(x⃗ )x⃗  f ( x → + △ x → ) ≈ f ( x → ) + J ( x → ) △ x →

Gauss-Newton的目标是寻找一个 x⃗  △ x → ,使得 f(x⃗ +x⃗ )2 ‖ f ( x → + △ x → ) ‖ 2 最小。所以需要解一个线性最小二乘问题:
x⃗ =argminx⃗ 12f(x⃗ +Jx⃗ )2 △ x → ∗ = arg ⁡ min △ x → 1 2 ‖ f ( x → + J △ x → ) ‖ 2

将右边平方项展开并令其导数为0,则可得到:
2Jf(x⃗ )+2J(x⃗ )J(x⃗ )x⃗ =0⃗  2 J ⊤ f ( x → ) + 2 J ( x → ) ⊤ J ( x → ) △ x → = 0 →

解得方程组为:
J(x⃗ )J(x⃗ )x⃗ =J(x⃗ )f(x⃗ ) J ( x → ) ⊤ J ( x → ) △ x → = − J ( x → ) ⊤ f ( x → )

此为Gauss-Newton方程。左边系数记为 H H ,右边记为 g⃗  g → ,变换为:
Hx⃗ =g⃗  H △ x → = g →

可见 Gauss-Newton用 J(x⃗ )J(x⃗ ) J ( x → ) ⊤ J ( x → ) 作为二阶Hessian矩阵的近似

Levenberg-Marquadt法

Levenberg-Marquadt方法:给 x⃗  △ x → 添加信赖区域(trust region),信赖区域通过下式确定:

ρ=f(x⃗ +x⃗ )f(x⃗ )J(x⃗ )x⃗  ρ = f ( x → + △ x → ) − f ( x → ) J ( x → ) △ x →

于是第 k k 次迭代公式变为:
minxk12f(xk)+J(xk)xk2,  s.t.  Dxk2μ

其中 μ μ 为信赖区域的半径, D D 若为单位矩阵 I I ,则 x⃗  △ x → 将约束在一个球中; 实际上常将 D D 取成一个非负数对角阵。

为解L-M问题,用Lagrange乘子转化为无约束问题:

minx⃗ k12f(x⃗ k)+J(xk)xk2+12λDx⃗ 2 min △ x → k 1 2 ‖ f ( x → k ) + J ( x k ) △ x k ‖ 2 + 1 2 λ ‖ D △ x → ‖ 2

类似于Gauss-Newton展开可得:
(H+λDD)x⃗ =g ( H + λ D ⊤ D ) △ x → = g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值