非线性优化详解

1. 目的:根据之前的数据求解当前的最优最准确的状态估计

我们需要解决的就是根据之前的状态和当前的输入数据,比如运动数据,当前时刻的图像,来估计当前的一个位姿,slam中状态主要有两种方法,一种为增量式的滤波类方法,如卡曼滤波,另一种为批量式的非线性优化,我们主要介绍非线性优化。

首先我们的目的是需要求解一个minF(x),在slam状态估计中,就是求一个最优的状态估计,F(x)为e误差的一个平方和,十四讲中用二范数表示||e||,其中e是观测值和模型计算的误差

2. 非线性最小二乘

m i n ∣ ∣ F ( x ) ∣ ∣ = 1 / 2 ∣ ∣ f ( x ) ∣ ∣ 2 min||F(x)|| = 1/2||f(x)||^2 minF(x)=1/2f(x)2

2.1 一阶梯度法即最速下降法

由于是非线性的,且导数计算复杂,所以要通过迭代法去找到F(x)的一个最小值,也就是导数逼近与0的一个点,
但是我们应该每次迭代多大呢?迭代的数选取不合适,就很可能找不到最优值。所以我们需要通过计算求每次迭代的数。所以我们的一阶梯度法即最速下降法和二阶梯度法就出来了。
首先将F(x)进行泰勒展开
F ( x i + △ x k ) ≈ F ( X K ) + J ( x k ) T △ x k + 1 / 2 △ x k T H ( x k ) △ x k F(x_i+\bigtriangleup x_k)\approx F(X_K)+J(x_k)^{T} \bigtriangleup x_k+1/2\bigtriangleup x_k^{T}H(x_k)\bigtriangleup x_k F(xi+xk)F(XK)+J(xk)Txk+1/2xkTH(xk)xk
一阶梯度法就是只保留一阶梯度,即雅克比矩阵那一项
显然当我们的** △ x k = − J ( x k ) \bigtriangleup x_k=-J(x_k) xk=J(xk)时,F(x)必然会下降 **
雅克比矩阵
J ( x k ) = ∣ ∂ X 1 ∂ x 1 ∂ X 1 ∂ x 2 ∂ X 1 ∂ x n ∂ X 2 ∂ x 2 ∂ X 2 ∂ x 2 ∂ X 2 ∂ x n ∂ X n ∂ x n ∂ X n ∂ x 2 ∂ X n ∂ x n ∣ J(x_k) = \begin{vmatrix} \frac{\partial X_1}{\partial x_1}& \frac{\partial X_1}{\partial x_2} & \frac{\partial X_1}{\partial x_n}\\ \frac{\partial X_2}{\partial x_2}& \frac{\partial X_2}{\partial x_2} & \frac{\partial X_2}{\partial x_n}\\ \frac{\partial X_n}{\partial x_n}& \frac{\partial X_n}{\partial x_2} & \frac{\partial X_n}{\partial x_n}\\ \end{vmatrix} J(xk)=x1X1x2X2xnXnx2X1x2X2x2XnxnX1xnX2xnXn

2.2 二阶梯度法-牛顿法

看完上面应该大概了解了基本的思想。就是找出每次需要迭代的数的大小。从而实现二范数的最小值。

海塞矩阵

高斯牛顿法

注意高斯牛顿法是将f(x)进行泰勒展开,而不是F(x),f(x)代表的是误差
f ( x + △ x ) ≈ f ( x ) + J ( x ) T △ x f(x+\bigtriangleup x)\approx f(x)+ J(x)^T\bigtriangleup x f(x+x)f(x)+J(x)Tx

同样得到
△ x ∗ = a r g m i n 1 / 2 ∣ ∣ f ( x ) + J ( x ) T △ x ∣ ∣ 2 \bigtriangleup x^*=argmin1/2||f(x)+J(x)^T\bigtriangleup x||^2 x=argmin1/2f(x)+J(x)Tx2
∣ ∣ f ( x ) + J ( x ) T △ x ∣ ∣ 2 ||f(x)+J(x)^T\bigtriangleup x||^2 f(x)+J(x)Tx2展开并对 △ x \bigtriangleup x x求导,得:
J ( x ) f ( x ) + J ( x ) J T ( x ) △ x = 0 J(x)f(x)+J(x)J^T(x)\bigtriangleup x=0 J(x)f(x)+J(x)JT(x)x=0
**解这个方程就能求出 △ x \bigtriangleup x x了。**也就找到了最优的增量。
缺点: J ( x ) J ( x ) T J(x)J(x)^T J(x)J(x)T可能为奇异矩阵或病态的情况,此时增量的稳定性差,会导致算法的不收敛。

LM列文伯格马夸尔特方法

LM给增量添加了一个范围,成为信赖域,具体看slam十四讲吧,懒得打了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值