SLAM中非线性优化

这里是笔记,详细请查看链接
线性最小二乘
非线性最小二乘

基础知识

<UD分解>
P : n 阶 正 定 的 对 称 矩 阵 P:n阶正定的对称矩阵 P:n
对矩阵P进行上三角-对角分解:
U : 上 三 角 阵 U:上三角阵 U:
D : 对 角 阵 D:对角阵 D:
P = U D U T P = [ P 11 P 12 . . . P 1 n P 21 P 22 . . . P 2 n . . . . . . . . . . . . P n 1 P n 2 . . . P n n ] , U = [ U 11 U 12 . . . U 1 n U 21 U 22 . . . U 2 n . . . . . . . . . . . . U n 1 U n 2 . . . U n n ] ( U i i = 1 , ( i = 1 , 2 , 3 , . . , n ) ) , D = [ D 11 D 12 . . . D 1 n D 21 D 22 . . . D 2 n . . . . . . . . . . . . D n 1 D n 2 . . . D n n ] P=UDU^T \\ P=\left[\begin{matrix} P_{11}&P_{12}&...&P_{1n}\\ P_{21}&P_{22}&...&P_{2n}\\ ...&...&...&...\\ P_{n1}&P_{n2}&...&P_{nn}\\ \end{matrix}\right],U=\left[\begin{matrix} U_{11}&U_{12}&...&U_{1n}\\ U_{21}&U_{22}&...&U_{2n}\\ ...&...&...&...\\ U_{n1}&U_{n2}&...&U_{nn}\\ \end{matrix}\right](U_{ii}=1,(i=1,2,3,..,n)),D=\left[\begin{matrix} D_{11}&D_{12}&...&D_{1n}\\ D_{21}&D_{22}&...&D_{2n}\\ ...&...&...&...\\ D_{n1}&D_{n2}&...&D_{nn}\\ \end{matrix}\right] P=UDUTP=P11P21...Pn1P12P22...Pn2............P1nP2n...Pnn,U=U11U21...Un1U12U22...Un2............U1nU2n...Unn(Uii=1,(i=1,2,3,..,n)),D=D11D21...Dn1D12D22...Dn2............D1nD2n...Dnn
求解
P i j = D j j U i j U j j + D j + 1 , j + 1 U i , j + 1 U j , j + 1 + . . . + D n n U i n U j n = ∑ k = i + j n D k k U i k U j k + D j j U i j U j j ( 1 ≤ i ≤ n , i ≤ j ≤ n ) P_{ij}=D_{jj}U_{ij}U_{jj}+D_{j+1,j+1}U_{i,j+1}U_{j,j+1}+...+D_{nn}U_{in}U_{jn}\\ =\sum_{k=i+j}^nD_{kk}U_{ik}U_{jk}+D_{jj}U_{ij}U_{jj}(1\leq i \leq n,i\leq j \leq n) Pij=DjjUijUjj+Dj+1,j+1Ui,j+1Uj,j+1+...+DnnUinUjn=k=i+jnDkkUikUjk+DjjUijUjj(1in,ijn)

<QR分解>
A m × n : 为 列 满 秩 矩 阵 ( m ≥ n ) , r a n k ( A m × n ) = n A_{m×n}:为列满秩矩阵(m\geq n),rank(A_{m×n})=n Am×n:mn,rank(Am×n)=n
那末必有:
A m × n = Q m × n R n × n , Q m × n T Q m × n = I n × n , R n × n 为 上 三 角 阵 或 下 三 角 阵 A_{m×n}=Q_{m×n}R_{n×n},Q_{m×n}^TQ_{m×n}=I_{n×n},R_{n×n}为上三角阵或下三角阵 Am×n=Qm×nRn×n,Qm×nTQm×n=In×n,Rn×n
<Cholesky分解>
P : n 阶 正 定 对 称 矩 阵 P:n阶正定对称矩阵 P:n
总可以得到:
P = [ P 11 P 12 . . . P 1 n P 21 P 22 . . . P 2 n . . . . . . . . . . . . P n 1 P n 2 . . . P n n ] , Δ = [ δ 11 δ 12 . . . δ 1 n 0 δ 21 . . . δ 2 n . . . . . . . . . . . . 0 0 . . . δ n n ] P=\left[\begin{matrix} P_{11}&P_{12}&...&P_{1n}\\P_{21}&P_{22}&...&P_{2n}\\ ...&...&...&...\\P_{n1}&P_{n2}&...&P_{nn} \end{matrix}\right],\Delta=\left[\begin{matrix} \delta_{11}&\delta_{12}&...&\delta_{1n}\\0&\delta_{21}&...&\delta_{2n}\\ ...&...&...&...\\0&0&...&\delta_{nn} \end{matrix}\right] P=P11P21...Pn1P12P22...Pn2............P1nP2n...Pnn,Δ=δ110...0δ12δ21...0............δ1nδ2n...δnn
P = Δ Δ T = [ δ 11 δ 12 . . . δ 1 n 0 δ 21 . . . δ 2 n . . . . . . . . . . . . 0 0 . . . δ n n ] [ δ 11 δ 12 . . . δ 1 n 0 δ 21 . . . δ 2 n . . . . . . . . . . . . 0 0 . . . δ n n ] T P=\Delta \Delta^T =\left[\begin{matrix} \delta_{11}&\delta_{12}&...&\delta_{1n}\\0&\delta_{21}&...&\delta_{2n}\\ ...&...&...&...\\0&0&...&\delta_{nn} \end{matrix}\right]\left[\begin{matrix} \delta_{11}&\delta_{12}&...&\delta_{1n}\\0&\delta_{21}&...&\delta_{2n}\\ ...&...&...&...\\0&0&...&\delta_{nn} \end{matrix}\right]^T P=ΔΔT=δ110...0δ12δ21...0............δ1nδ2n...δnnδ110...0δ12δ21...0............δ1nδ2n...δnnT
可以得到:
P i j = δ i j δ j j + δ i , j + 1 δ i , j + 1 + δ i , j + 2 δ i , j + 2 + . . . + δ i , j + n δ i , j + n = ∑ k = j + 1 n δ i k δ j k + δ i j δ j j ( 1 ≤ i ≤ n , i ≤ j ≤ n ) P_{ij}=\delta_{ij}\delta_{jj}+\delta_{i,j+1}\delta_{i,j+1}+\delta_{i,j+2}\delta_{i,j+2}+...+\delta_{i,j+n}\delta_{i,j+n}=\sum_{k=j+1}^n\delta_{ik}\delta_{jk}+\delta_{ij}\delta_{jj}(1\leq i\leq n,i\leq j \leq n) Pij=δijδjj+δi,j+1δi,j+1+δi,j+2δi,j+2+...+δi,j+nδi,j+n=k=j+1nδikδjk+δijδjj(1in,ijn)
从而得到:
δ i j = { ( P i j − ∑ i + j n δ i k δ j k ) / δ j j i < j P j j − ∑ k = j + 1 n δ j k 2 i = j 0 i > j \delta_{ij}=\begin{cases} (P_{ij}-\sum_{i+j}^{n}\delta_{ik}\delta_{jk})/\delta_{jj} &i<j\\ \sqrt{P_{jj}-\sum_{k=j+1}^{n}\delta_{jk}^2}&i=j\\ 0&i>j\\ \end{cases} δij=(Piji+jnδikδjk)/δjjPjjk=j+1nδjk2 0i<ji=ji>j
<奇异值分解>
A : 当 为 n 阶 实 对 称 矩 阵 , 可 分 解 为 : A:当为n阶实对称矩阵,可分解为: A:n,
Q Q T = I , Q 为 标 准 正 交 阵 , Q 的 列 坐 标 为 特 征 向 量 QQ^T=I,Q为标准正交阵,Q的列坐标为特征向量 QQT=I,QQ
Γ : 为 特 征 值 构 成 的 对 角 矩 阵 \Gamma:为特征值构成的对角矩阵 Γ:
A = Q Γ Q T ( 特 征 值 分 解 E V D ) Γ = [ λ 1 . . . . . . . . . . . . . λ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . λ n ] A=Q\Gamma Q^T(特征值分解EVD) \\ \Gamma=\left[\begin{matrix} \lambda_1&...&...&....\\...&\lambda_2&...&....\\...&...&....&....\\...&...&...&\lambda_n\\ \end{matrix}\right] A=QΓQT(EVD)Γ=λ1............λ2...............................λn
A : 当 为 n 阶 实 矩 阵 , 可 分 解 为 : A:当为n阶实矩阵,可分解为: A:n
U U T = I , U 为 单 位 正 交 阵 , 左 奇 异 矩 阵 , U ∈ R m × m UU^T=I,U为单位正交阵,左奇异矩阵,U\in R_{m×m} UUT=I,U,URm×m
V V T = I , V 为 单 位 正 交 阵 , 右 奇 异 矩 阵 , V ∈ R n × n VV^T=I,V为单位正交阵,右奇异矩阵,V\in R_{n×n} VVT=I,V,VRn×n
Σ : 奇 异 值 , 除 了 对 角 元 素 , 其 他 元 素 为 0 , Σ ∈ R m × n \Sigma:奇异值,除了对角元素,其他元素为0,\Sigma \in R_{m×n} Σ:0,ΣRm×n
A = U Σ V T Σ = [ σ 1 0 . . . 0 0 0 σ 2 . . . 0 0 0 0 . . . 0 0 0 0 . . . σ n 0 ] m × n A=U\Sigma V^T \\ \Sigma=\left[\begin{matrix} \sigma_1&0&...&0&0\\0&\sigma_2&...&0&0\\ 0&0&...&0&0\\0&0&...&\sigma_n&0 \end{matrix}\right]_{m×n} A=UΣVTΣ=σ10000σ200............000σn0000m×n
求解
A A T = U Σ V T V Σ T U T = U Σ Σ T U T AA^T=U\Sigma V^TV\Sigma^TU^T=U\Sigma\Sigma^TU^T AAT=UΣVTVΣTUT=UΣΣTUT

线性最小二乘

方程:
m i n ∣ ∣ 期 望 − 样 本 ∣ ∣ 2 min||期望-样本||^2 min2
当系统方程为一次线性方程时:
m i n ∣ ∣ A x − b ∣ ∣ 2 = ( A x − b ) T ( A x − b ) = x T A T A x − 2 x T A T b + b T b min||Ax-b||^2=(Ax-b)^T(Ax-b)=x^TA^TAx-2x^TA^Tb+b^Tb minAxb2=(Axb)T(Axb)=xTATAx2xTATb+bTb
取最小值,也就是求导数为0的点:
∂ ∣ ∣ A x − b ∣ ∣ 2 ∂ x = 2 A T A x − 2 A T b = 0 A T A x = A T b x = ( A T A ) − 1 A T b \frac{\partial||Ax-b||^2}{\partial x}=2A^TAx-2A^Tb=0 \\ A^TAx=A^Tb \\ x=(A^TA)^{-1}A^Tb xAxb2=2ATAx2ATb=0ATAx=ATbx=(ATA)1ATb
<Cholesky分解求解:>
A T A = L T L , α = L x , β = A T b A^TA=L^TL,\alpha=Lx,\beta=A^Tb ATA=LTL,α=Lx,β=ATb
A T A x = A T b L T L x = A T b L T α = β L x = α A^TAx=A^Tb\\ L^TLx=A^Tb \\ L^T \alpha=\beta \\ Lx=\alpha ATAx=ATbLTLx=ATbLTα=βLx=α
<QR分解>
A = Q R A=QR A=QR
A T A x = A T b ( Q T R ) T ( Q T R ) x = ( Q T R ) T b R T R x = R T Q b x = R − 1 Q T b A^TAx=A^Tb\\ (Q^TR)^T(Q^TR)x=(Q^TR)^Tb \\ R^TRx=R^TQb\\ x=R^{-1}Q^Tb ATAx=ATb(QTR)T(QTR)x=(QTR)TbRTRx=RTQbx=R1QTb
实现

非线性最小二乘

F ( X ) : 目 标 函 数 F(X):目标函数 F(X):
m i n x F ( X ) = 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 2 min_{x}F(X)=\frac{1}{2}||f(x)||_2^2 minxF(X)=21f(x)22
只需找到: d F ( x ) d x = 0 \frac{dF(x)}{dx}=0 dxdF(x)=0的最小值的点,但有时候无法得到导数,我们使用迭代方法代替求导,步骤如下:

  1. 给定某个初值 x 0 x_0 x0
  2. 进行k次迭代,寻找一个 Δ x k \Delta x_k Δxk,使 ∣ ∣ f ( x k + Δ x k ) ∣ ∣ 2 2 ||f(x_k+\Delta x_k)||_2^2 f(xk+Δxk)22达到极小值
  3. Δ x k \Delta x_k Δxk足够小,停止迭代
  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步进行迭代

如何取定增量 Δ x k \Delta x_k Δxk

一阶梯度法
使用泰勒函数将目标函数 F ( x ) F(x) F(x) x k x_k xk一阶展开
J ( x k ) T = F ′ ( x ) : 在 x k 处 一 阶 导 数 也 称 雅 可 比 矩 阵 、 梯 度 J(x_k)^T=F'(x):在x_k处一阶导数也称雅可比矩阵、梯度 J(xk)T=F(x):xk
F ( x k + Δ x k ) ≈ F ( x k ) + F ′ ( x ) ( x + Δ x k − x ) = F ( x k ) + J ( x k ) T Δ x k F(x_k+\Delta x_k)\approx F(x_k)+F'(x)(x+\Delta x_k-x)=F(x_k)+J(x_k)^T\Delta x_k F(xk+Δxk)F(xk)+F(x)(x+Δxkx)=F(xk)+J(xk)TΔxk
Δ x k \Delta x_k Δxk
Δ x k = − λ J ( x k ) T \Delta x_k=-\lambda J(x_k)^T Δxk=λJ(xk)T
如何确定步长 λ \lambda λ
基本思想就是每次试一个步长,如果用该步长走的话,看函数值会不会比当前点下降一定的程度,如果没有,就按比例减小步长,再试,直到满足条件(根据泰勒展开式我们知道步长足够小时总会满足下降条件)。所以line search实际上是计算量比较大的,不过在以前数据量不大的情况下这都不是问题。
问题:计算量大
二阶梯度法
使用泰勒函数将目标函数 F ( x ) F(x) F(x) x k x_k xk二阶展开
H ( x k ) : 二 阶 导 数 , 海 塞 ( H e s s i a n ) 矩 阵 H(x_k):二阶导数,海塞(Hessian)矩阵 H(xk):(Hessian)
F ( x k + Δ x k ) ≈ F ( x k ) + F ′ ( x k ) ( x k + Δ x k − x k ) + F ′ ′ ( x ) ( x k + Δ x k − x k ) 2 2 = F ( x k ) + J ( x k ) T Δ x k + 1 2 Δ x k T H ( x k ) Δ x k F(x_k+\Delta x_k)\approx F(x_k)+F'(x_k)(x_k+\Delta x_k-x_k)+\frac{F''(x)(x_k+\Delta x_k-x_k)^2}{2}=F(x_k)+J(x_k)^T\Delta x_k+\frac{1}{2}\Delta x_k^TH(x_k)\Delta x_k F(xk+Δxk)F(xk)+F(xk)(xk+Δxkxk)+2F(x)(xk+Δxkxk)2=F(xk)+J(xk)TΔxk+21ΔxkTH(xk)Δxk
F ′ ( x k + Δ x k ) F'(x_k+\Delta x_k) F(xk+Δxk)关于 Δ x \Delta x Δx的一阶导数
F ′ ( x k + Δ x k ) = J ( x 0 ) T + 1 2 ( H Δ x + H T Δ x ) = J ( x 0 ) T + H Δ x = 0 F'(x_k+\Delta x_k)=J(x_0)^T+\frac{1}{2}(H\Delta x+H^T \Delta x)=J(x_0)^T+H\Delta x=0 F(xk+Δxk)=J(x0)T+21(HΔx+HTΔx)=J(x0)T+HΔx=0
H Δ x = − J H \Delta x=-J HΔx=J
问题:计算量大
最速下降法
什么时候不用欧氏距离
Δ n s d : 表 示 下 降 梯 度 \Delta_{nsd}:表示下降梯度 Δnsd:
∣ ∣ v ∣ ∣ : 范 数 , 当 ∣ ∣ v ∣ ∣ 是 欧 氏 范 数 时 , 与 最 一 阶 梯 度 下 降 法 等 价 | |v||:范数,当||v||是欧氏范数时,与最一阶梯度下降法等价 v:,v
Δ n s d = a r g m i n ( J ( x k ) T v ( ∣ ∣ v ∣ ∣ < 1 ) ) \Delta_{nsd}=argmin(J(x_k)^Tv(| |v||<1)) Δnsd=argmin(J(xk)Tv(v<1))
牛顿高斯法
将原函数在x处,进行一阶泰勒展开
f ( x + Δ x ) ≈ f ( x k ) + f ′ ( x k ) ( x k + Δ x k − x k ) = f ( x ) + J ( x ) T Δ x f(x+\Delta x)\approx f(x_k)+f'(x_k)(x_k+\Delta x_k-x_k)=f(x)+J(x)^T \Delta x f(x+Δx)f(xk)+f(xk)(xk+Δxkxk)=f(x)+J(x)TΔx
重新构造目标函数:
F ( x ) = Δ x ∗ = a r g m i n Δ 1 2 ∣ ∣ f ( x ) + J ( x ) T Δ x ∣ ∣ 2 F(x)=\Delta x^*=argmin_{\Delta}\frac{1}{2}||f(x)+J(x)^T\Delta x||^2 F(x)=Δx=argminΔ21f(x)+J(x)TΔx2
求极值点 F ′ ( x ) = 0 F'(x)=0 F(x)=0
J ( x ) f ( x ) + J ( x ) J T ( x ) Δ x = 0 J(x)f(x)+J(x)J^T(x)\Delta x=0 J(x)f(x)+J(x)JT(x)Δx=0
得到高斯牛顿方程
H ( x ) = J ( x ) J T ( x ) H(x)=J(x)J^T(x) H(x)=J(x)JT(x)
g ( x ) = − J ( x ) f ( x ) g(x)=-J(x)f(x) g(x)=J(x)f(x)
H ( x ) Δ x = g ( x ) H(x)\Delta x=g(x) H(x)Δx=g(x)
高斯牛顿寻找最优值

  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 ) Δ x k = g ( x ) H(x)\Delta x_k=g(x) H(x)Δxk=g(x)
  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步进行迭代

问题:H需要可逆,H不可逆时, J J T JJ^T JJT为奇异矩阵,增量的稳定性较差,导致算法不会收敛

阻尼牛顿法/列文伯格-马夸尔法/信赖区域法
在高斯牛顿法的基础上加上信赖区域即
F ( x ) = Δ x ∗ = a r g m i n Δ 1 2 ∣ ∣ f ( x ) + J ( x ) T Δ x ∣ ∣ 2 s t : ∣ ∣ D Δ x k ∣ ∣ 2 ≤ u F(x)=\Delta x^*=argmin_{\Delta}\frac{1}{2}||f(x)+J(x)^T\Delta x||^2\\ st:||D\Delta x_k||^2\leq u F(x)=Δx=argminΔ21f(x)+J(x)TΔx2st:DΔxk2u
构造拉格朗日函数
λ : 拉 格 朗 日 算 子 \lambda:拉格朗日算子 λ:
Γ ( Δ x k , λ ) = 1 2 ∣ ∣ f ( x ) + J ( x ) T Δ x ∣ ∣ 2 + λ 2 ( ∣ ∣ D Δ x k ∣ ∣ 2 − u ) \Gamma(\Delta x_k,\lambda)=\frac{1}{2}||f(x)+J(x)^T\Delta x||^2+\frac{\lambda}{2}(||D \Delta x_k||^2-u) Γ(Δxk,λ)=21f(x)+J(x)TΔx2+2λ(DΔxk2u)
Γ ′ ( Δ x k , λ ) = 0 \Gamma'(\Delta x_k,\lambda)=0 Γ(Δxk,λ)=0得到:
D T D = I D^T D=I DTD=I
( H + λ D T D ) Δ x k = g ( H + λ ) Δ x k = g (H+\lambda D^T D)\Delta x_k=g\\ (H+\lambda )\Delta x_k=g (H+λDTD)Δxk=g(H+λ)Δxk=g
阻尼牛顿法/列文伯格-马夸尔法/信赖区域法寻找最优值

  1. 给定某个初值 x 0 x_0 x0,以及初始优化范围 u u u
  2. 进行k次迭代,求解 ( H + λ ) Δ x k = g (H+\lambda )\Delta x_k=g (H+λ)Δxk=g
  3. 计算 p p p衡量近似程度的好坏 p = f ( x + Δ x ) − f ( x ) J T ( x ) Δ x p=\frac{f(x+\Delta x)-f(x)}{J^T(x)\Delta x} p=JT(x)Δxf(x+Δx)f(x)
  4. p > 3 / 4 , u = 2 u p>3/4,u=2u p>3/4,u=2u
  5. p < 1 / 4 , u = 0.5 u p<1/4,u=0.5u p<1/4,u=0.5u
  6. p > 设 置 的 阈 值 p>设置的阈值 p>,令 x k + 1 = x k + Δ x k x_{k+1}=x_k+\Delta x_k xk+1=xk+Δxk
  7. 判断算法收敛,不收敛返回第2步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值