【最小二乘及非线性优化】

前言

\quad 最小二乘及非线性优化是SLAM技术的基础,在此梳理该问题相关基础知识,以加深理解。

最小二乘问题以及SLAM中的最小二乘

\quad 最简单的最小二乘问题可以表示为:
min ⁡ x F ( x ) = 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 2 (1) {\min_x} F(x) = \frac{1}{2}||f(x)||_2^2 \tag{1} xminF(x)=21f(x)22(1)

\quad 而在SLAM问题中,仅考虑其观测方程:
z k , j = f ( y j , x k ) + v k , j (2) z_{k,j} = f(y_{j}, x_{k}) + v_{k,j}\tag{2} zk,j=f(yj,xk)+vk,j(2)
\quad 其中, x k x_{k} xk表示系统状态, y j y_{j} yj表示路标点, v k , j v_{k,j} vk,j表示观测噪声, z k , j z_{k,j} zk,j表示系统观测。在已知系统观测的条件下,估计系统状态,即为求解条件概率 P ( x , y ∣ z ) P(x,y|z) P(x,yz), 根据贝叶斯公式:
P ( x , y ∣ z ) = P ( z ∣ x , y ) P ( x , y ) P ( z ) (3) P(x,y|z) = \frac{P(z|x,y)P(x,y)}{P(z)} \tag{3} P(x,yz)=P(z)P(zx,y)P(x,y)(3)
\quad 上式中的 P ( x , y ∣ z ) P(x,y|z) P(x,yz) 称之为后验概率,可以形象理解为在已知系统的结果(后)的条件下估计系统状态(先), P ( x , y ) P(x,y) P(x,y) 称为状态先验, P ( z ∣ x , y ) P(z|x,y) P(zx,y)称为似然,可以形象理解为估计系统处于何种状态下,最有可能得到如今的系统状态。
\quad 上式中,单纯的系统状态 z z z的概率与带估计变量 ( x , y ) (x, y) (x,y)无关,因此可以得出重要的结论:最大后验概率等价于最大化先验与似然的乘积。 而更进一步地,当系统缺乏先验时,则变成了 最大后验概率等价于最大似然估计 ,即对应上式中的 P ( z ∣ x , y ) P(z|x,y) P(zx,y)
\quad 普遍假设公式(2)中的噪声服从高斯分布,即 v k , j v_{k,j} vk,j ~ N ( 0 , Q k , j ) N(0, Q_{k,j}) N(0,Qk,j),则 z k , j z_{k,j} zk,j~ N ( f ( y j , x k ) , Q k , j ) N( f(y_{j}, x_{k}), Q_{k,j}) N(f(yj,xk),Qk,j)
\quad 对于一个高斯分布 x x x ~ N ( μ , Σ ) N(\mu, \Sigma) N(μ,Σ),其概率分布为:
P ( x ) = 1 ( 2 π ) N ∣ Σ ∣ e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) (4) P(x) =\frac{1}{\sqrt{{(2\pi})^N|\Sigma| }}exp(-\frac{1}{2}(x-\mu)^T \Sigma^{-1}(x-\mu)) \tag{4} P(x)=(2π)NΣ 1exp(21(xμ)TΣ1(xμ))(4)
\quad 为求解 P ( x ) P(x) P(x)的最大值,对其取负对数:
− l n ( P ( x ) ) = 1 2 l n ( ( 2 π ) N ∣ Σ ∣ ) + 1 2 ( x − μ ) T Σ − 1 ( x − μ ) (5) -ln(P(x))=\frac{1}{2}ln((2\pi)^N|\Sigma|)+\\ \frac{1}{2}(x-\mu)^T \Sigma^{-1}(x-\mu) \tag{5} ln(P(x))=21ln((2π)NΣ)+21(xμ)TΣ1(xμ)(5)
\quad ln(x)单调递增,由此P(x)最大值等价于其负对数最小值,且式(5)中第一项与x无关,由此:
( x k , y j ) ∗ = a r g m a x ( P ( z k , j ) )   = a r g m i n ( ( z k , j − f ( y j , x k ) ) T Q k , j − 1 ( z k , j − f ( y j , x k ) ) (6) (x_k, y_j)^* = argmax(P(z_{k,j} )) \\ \ = argmin((z_{k,j}-f(y_{j}, x_{k}))^T Q_{k,j}^{-1}(z_{k,j}-f(y_{j}, x_{k})) \tag{6} (xk,yj)=argmax(P(zk,j)) =argmin((zk,jf(yj,xk))TQk,j1(zk,jf(yj,xk))(6)
\quad 通常假设系统各个历史时刻的观测相互独立,因此多个系统状态的联合分布可以写作乘积形式,则该分布的负对数可以写作加和形式,令 e z , k , j = z k , j − h ( y j , x k ) e_{z,k,j} = z_{k,j}-h(y_{j}, x_{k}) ez,k,j=zk,jh(yj,xk)(即为估计误差),则各时刻历史状态的估计问题就转化为如下的最小二乘问题(即为最小化误差的加权二范数):
( x , y ) ∗ = a r g m i n ∑ j , k e z , k , j T Q k , j − 1 e z , k , j (7) (\mathbf{x, y})^* = argmin \sum_{j,k}e_{z,k,j}^T Q_{k,j}^{-1}e_{z,k,j} \tag{7} (x,y)=argminj,kez,k,jTQk,j1ez,k,j(7)

最小二乘求解

\quad 最小二乘问题的求解,复杂程度取决于 h ( y j , x k ) h(y_{j}, x_{k}) h(yj,xk)的复杂度。当 h h h是线性函数时,则简单地通过求导即可得到系统状态的有效估计;而当 h h h是一个非线性函数时,则需要利用非线性迭代求解,典型的方法包括一阶梯度法(最速下降法)、二阶梯度法(牛顿法)、Gauss-Newton、Levenberg-Marquardt 算法。

线性最小二乘求解

\quad 仍利用式(2)为例,当 f f f函数为线性函数时,可以将不同时刻的系统观测转化为矩阵形式: z = A x \mathbf{z} = \mathbf{Ax} z=Ax,此处 x \mathbf{x} x表示不同时刻批量系统状态向量, z \mathbf{z} z表示批量系统观测向量。此时最小二乘问题转化为:
x ∗ = a r g m i n ( ( z − A x ) T Σ − 1 ( z − A x ) ) (8) \mathbf{x}^* = argmin((\mathbf{z-Ax})^T \Sigma^{-1}(\mathbf{z-Ax})) \tag{8} x=argmin((zAx)TΣ1(zAx))(8)
\quad 此时,根据矩阵求导思路,易得:
2 A T Σ − 1 ( A x − z ) = 0 x ∗ = ( A T Σ − 1 H ) A T Σ − 1 z (9) 2\mathbf{A^T}\Sigma^{-1}(\mathbf{Ax-z}) = 0 \\ \mathbf{x^*}=(\mathbf{A^T \Sigma^{-1} H })\mathbf{A^T \Sigma^{-1} z} \tag{9} 2ATΣ1(Axz)=0x=(ATΣ1H)ATΣ1z(9)
\quad 关于矩阵求导相关讲解,可以参考:矩阵求导与矩阵微分

非线性最小二乘求解

\quad 当上文中的 f f f函数为非线性函数时,定义 r ( x ) = z − A x \mathbf{r(x) = z-Ax} r(x)=zAx,则最小二乘问题转化为: a r g m i n x F ( r ) = a r g m i n x ( r T Σ − 1 r ) argmin_x \mathbf{F(r)} = argmin_x(\mathbf{r^T \Sigma^{-1}r}) argminxF(r)=argminx(rTΣ1r),对于此类的最小二乘问题,通用方案都是通过Taylor将目标函数近似为线性函数,而后迭代计算求解。迭代过程如下图所示(取自高博SLAM十四讲):
在这里插入图片描述

一阶梯度法

\quad 一阶梯度法直接将 F ( r ) \mathbf{F(r)} F(r)展开为如下形式:
F ( r ) = F ( r ) + J F T ξ (10) \mathbf{F(r) = F(r) + {J_F}^T\xi} \tag{10} F(r)=F(r)+JFTξ(10)
\quad 此时,每次的迭代增量 ξ = − J F T \mathbf{\xi = - {J_F}^T} ξ=JFT,即向目标函数的逆梯度方向进行迭代,该方法也称为最速下降法。

二阶梯度法

\quad 如式(9),若保留 F ( e ) \mathbf{F(e)} F(e)的二阶展开项,形式如下:
F ( r ) = F ( r ) + J F T ξ + 1 2 ξ T H ξ (11) \mathbf{F(r) = F(r) + {J_F}^T\xi + \frac{1}{2} \xi^TH\xi } \tag{11} F(r)=F(r)+JFTξ+21ξTHξ(11)
\quad 为求解 ξ \xi ξ使上式极小,因此对 ξ \xi ξ求导,结果如下:
ξ = J F T + H ξ → H ξ = − J F T ξ (12) \mathbf{ \xi = {J_F}^T + H \xi \to H\xi = - {J_F}^T\xi} \tag{12} ξ=JFT+HξHξ=JFTξ(12)
\quad 二阶梯度法又称为牛顿法,但考虑到该方法每次求解过程中均需更新二阶导数H矩阵,计算复杂度较高

Gauss-Newton

\quad 不同于上述两种方法,Gauss-Newton对 r ( x ) \mathbf{r(x)} r(x)进行一阶Taylor展开: r ( x ) = r ( x ) + J r T ξ \mathbf{r(x) = r(x) + {J_r}^T\xi} r(x)=r(x)+JrTξ,此时目标函数为:
F ( r ) = ( r + J r T ξ ) T Σ − 1 ( r + J r T ξ ) = r T Σ − 1 r + 2 ξ T J r Σ − 1 r + ξ J r Σ − 1 J r T ξ (13) \mathbf{F(r)=(r+{J_r}^T\xi)^T \Sigma^{-1}(r+{J_r}^T\xi) }\\ \mathbf{=r^T\Sigma^{-1}r +2\xi^TJ_r \Sigma^{-1} r + \xi {J_r}\Sigma^{-1} {J_r}^T\xi }\tag{13} F(r)=(r+JrTξ)TΣ1(r+JrTξ)=rTΣ1r+2ξTJrΣ1r+ξJrΣ1JrTξ(13)
\quad ξ \xi ξ进行求导计算迭代增量:
J r Σ − 1 r + J r Σ − 1 J r T ξ = 0 → ξ ∗ = − ( J r Σ − 1 J r T ) − 1 J r Σ − 1 r \mathbf{J_r\Sigma^{-1}r +J_r\Sigma^{-1}{J_r}^T\xi= 0 \to \xi^* = -(J_r\Sigma^{-1}{J_r}^T)^{-1}J_r\Sigma^{-1}r} JrΣ1r+JrΣ1JrTξ=0ξ=(JrΣ1JrT)1JrΣ1r

Levenberg-Marquardt

\quad 高斯牛顿法中采用的Taylor展开仅能在展开点附近产生较好的近似。LM算法在此基础上,为增量 ξ \xi ξ添加了一个信赖区域 μ \mu μ,并定义了一个指标,用于衡量近似效果: ρ = r ( x + ξ ) − r ( x ) J r T ( ξ ) = 实 际 变 化 量 近 似 变 化 量 \rho=\frac{r(x+\xi)-r(x)}{{J_r}^T(\xi)}=\frac{实际变化量}{近似变化量} ρ=JrT(ξ)r(x+ξ)r(x)=,当 ρ \rho ρ过小时,则近似变化量远超实际变化量,需缩小信赖区域;反之, ρ \rho ρ过大时,则近似变化量不及实际变化量,需扩大信赖区域。
\quad 由此,LM方法中的最小二乘问题转化为:
m i n x ( r + J r T ξ ) T Σ − 1 ( r + J r T ξ ) ) s . t . ∣ ∣ D ξ ∣ ∣ 2 < μ (14) \mathbf{min_x(r+{J_r}^T\xi)^T \Sigma^{-1}(r+{J_r}^T\xi))} \\ s.t. \mathbf{{||D\xi||}^2 < \mu \tag{14}} minx(r+JrTξ)TΣ1(r+JrTξ))s.t.Dξ2<μ(14)
\quad 上式属于带有不等式约束的最优化问题,可以通过构造拉格朗日函数,统一为无约束的最优化问题:
m i n x ( r + J r T ξ ) T Σ − 1 ( r + J r T ξ ) ) + λ 2 ( ∣ ∣ D ξ ∣ ∣ 2 − μ ) (15) \mathbf{min_x(r+{J_r}^T\xi)^T \Sigma^{-1}(r+{J_r}^T\xi))}\\+\mathbf{\frac{\lambda}{2}({||D\xi||}^2 - \mu) } \tag{15} minx(r+JrTξ)TΣ1(r+JrTξ))+2λ(Dξ2μ)(15)
\quad 其中 λ \lambda λ表示拉格朗日乘子。此后求导过程与Gauss-Newton方法相同,得到迭代增量结果:
J r Σ − 1 r + J r Σ − 1 J r T ξ + λ D T D ξ = 0 → ξ ∗ = − ( J r Σ − 1 J r T + λ D T D ) − 1 J r Σ − 1 r \mathbf{J_r\Sigma^{-1}r +J_r\Sigma^{-1}{J_r}^T\xi + \lambda D^TD\xi= 0} \\ \to \mathbf{\xi^* = -(J_r\Sigma^{-1}{J_r}^T+ \lambda D^TD )^{-1}J_r\Sigma^{-1}r} JrΣ1r+JrΣ1JrTξ+λDTDξ=0ξ=(JrΣ1JrT+λDTD)1JrΣ1r

方案优缺点总结

  1. 一阶梯度法(最速下降法)是最直观的迭代算法,计算量最小,但在迭代后期,易在极小值附近左右横跳,导致迭代次数增加;
  2. 二阶梯度法(牛顿法)同样较为直观,但由于每次迭代都要计算Hessian矩阵,计算量较大;
  3. Gauss-Newton法可以视为牛顿法的改进,利用 J J T JJ^T JJT近似Hessian矩阵,计算量较小,但问题在于 J J T JJ^T JJT仅能保证半正定性质,可能存在奇异或病态问题;且当增量计算结果较大时,对目标函数的近似准确度下降,可能导致迭代无法收敛
  4. LM算法是高斯牛顿法的一种改进形式,通过增加信赖区域的方式,降低了病态问题出现的可能,整体迭代过程更为健壮,但迭代收敛速度一般比高斯牛顿法更慢。

\quad 在实际问题中,一般选择GN或者LM算法作为迭代方案,当问题接近病态时选择LM方案,其余时刻则选择GN方案。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值