非线性优化

参考: 卡尔曼滤波(一) - 耀礼士多德 - 博客园 (cnblogs.com)

参考:相机模型 - 耀礼士多德 - 博客园 (cnblogs.com)

卡尔曼滤波模型有两条方程:

1. 运动方程:xk = f(xk-1,uk) + wk 。 uk是系统控制量,有可能是常数、wk 是过程噪声服从高斯分布

2. 观测方程:Zk,j = h(yj,xk) + vk,j 。 观测方程。vk,j  是测量噪声

Vk ~ N(0, Qkj) : Vk 服从 均值为0 , 协方差矩阵为Qkj 的高斯分布,下标为kj ,因为每个时刻k,测到每个点j,都对应一个Q


 对于【观测方程】,可以以一张照片的【针孔模型】为例:

如果测量无误差,即vk,j = 0,有:

Zkj = K(Ryj + tk)

Zkj 为点在照片上的坐标,可以由Zkj = s * zk,j  , zk,j 为像素的索引,s为像素的长或宽

K是内参矩阵

R是旋转矩阵

tk是平移向量

yj是已知点,或者叫【路标】、【控制点】(可以由GPS,全站仪等设备给出)

(Rkyj + tk) = Ty, T是欧氏矩阵,表示相机位姿。

那么,xk = T,也就是说,相机的【位姿】就是要估计和优化的对象。


 估计Tk,通常有两种方法:

1. 使用卡尔曼滤波。特点:不用采集所有数据,每次都估计【最后一个T】,用于实时估计

2. 使用【批(batch)】处理法。类似于平差,最小二乘整体求参,能得出【每个T】,用于采集后估计。


 假设从1到N,有:

1. 机器人【位姿】x = { x1,......xn }

2. 已知点【坐标】y = { y1,......yn }


 贝叶斯公式

 P(A | B), 在B事件已发生的情况下,发生A事件的概率。

那么:P(A | B) = P( B |A ) *P ( A ) / P( B )

由来:P(A∩B) = P(A) * P(B | A) = P(B) * P( A | B) , P(A∩B)  = AB同时发生的概率 :

1. AB同时发生的概率= A发生的概率 * A已发生的情况下B发生的概率

2. AB同时发生的概率= B发生的概率 * B已发生的情况下A发生的概率


 P( x,y | z, u )的意思是,在已知观测数据 z ( 点在相片上的位置 )、u(可能是常数)时,控制点坐标  & 相机位姿的概率分布函数。

(如果没有u,就写成 P( x,y | z))

使用【贝叶斯公式】:

 (是不是因为z,u是实际得到的,所以概率为1???)

关于先验后验

 

 

 

 


argmax 函数,当我们有另一个函数y=f(x)时,若有结果x0= argmax(f(x)),则表示当函数f(x)取x=x0的时候,得到f(x)取值范围的最大值

 


(x,y)*MAP =  argmax P(x,y | z, u) 翻译:

1  .  第一个等号,当  【位姿、路标是(x,y)*MAP   】时, 概率分布函数P取得最大值。

2  .  第二个等号,在什么样的 位姿、路标下,最有可能得到这样的观测数据

 后验概率最大化下,求得位姿


 Zk,j = h(yj,xk) + vk,j 

因为 :Vk ~ N(0, Qkj)

所以: P(Zk,j yj,xk)  = N( h(yj,xk) , Qkj)

翻译:

1. P(Zk,j yj,xk) , 在位姿为Xk, 控制点坐标为yj的情况下,控制点在照片位置Zk,j  的概率

2. Zk,j  的 均值是h(yj,xk) , 其方差和Vk 方差一样,等于Qkj

k时刻,j点在照片中的位置:Zk,j  = [ukj,vkj] T

 


 

任意维度的高斯概率分布函数 z ~ N ( μ , ∑) ,  z、μ , ∑,都是矩阵形式

(7 封私信 / 80 条消息) 多维高斯分布是如何由一维发展而来的? - 知乎 (zhihu.com)

高位高斯分布的推算,还用到:

1. 主成分分析:测绘线性代数(四):数学期望、协方差、PCA - 耀礼士多德 - 博客园 (cnblogs.com)

2. 主成分分析,主要目的是【去相关】,然后就可以用相互独立的观测量推算高维高斯分布,到最后【回代】就可以了。

高维高斯概率分布密度函数


 

按照【高维高斯概率分布密度函数】的理解:

 ∑  = Qkj

 要求得P( z )的最大值时,对应的Xk ,翻译:

1. 求得什么样的Xk ,使得 z = z的概率最大。

2. 求得什么样的位姿,使得得到观测值Z 的概率最大。


对【高斯概率分布密度函数】,进行变换:

 

 

 a = e > 0

所以 ln(P(x)) 是单调递增(红色)

求P(x)最大化,相当于对 ln(P(x)) 求最大化

 对 ln(P(x)) 求最大化,相当于对 - ln(P(x)) 求最小化

 

 【要求得P( z )的最大值时,对应的X 】(数学语言:x = argmax(P(z))),转化为:

1 .用高斯概率分布密度函数解析,求得 - ln(P(x)) 最小化时,对应的X,数学语言 Xk  = argmin( - ln(P(x)))

2 . 对于上式,1 / 2 * ln( (2π)Ndet(∑)) ,和X 无关  ,因此,转化为:

3. 用高斯概率分布密度函数解析,求得 (x - μ)T-1(x - μ) 最小时,对应的X ,这里的∑对应的是Qkj

4. 最终问题为,求得位姿 X, 使得(x - μ)T(Qkj)-1(x - μ) 最小,数学语言 xk = argmin [  (x - μ)TQkj(x - μ)  ]

5. 最终结果,求得位姿 Xk  = argmin[ (zk,j - h(yj,xk) T (Qkj)-1   (zk,j - h(yj,xk)   ]

  


 (zk,j - h(yj,xk) ) T (Qkj)-1   (zk,j - h(yj,xk) )  

 令:

en*1 =  zk,j - h(yj,xk)  =  [e1,e2,e3...] T

  E1*1 =  (zk,j - h(yj,xk) ) T (Qkj)-1   (zk,j - h(yj,xk) )   = eT  (Qkj)-1 e

(E 就是一个二次型,由e12 、e22 、e32 组成)

记住:最终问题为,求得位姿 Xk ,使得E最小

 (答案: Xk = (HT-1H)-1HT-1y,測量平差中的加权最小二乘法)

注意:H是h(yj,xk) 关于xk的系数矩阵,y是将xk 线性化后的常数列向量


简单线性系统:

模型:

xk = xk-1 + u+ wk    wk ~N(0,Qk)  :  wk 是误差,服从正态分布

Zk = xk + vk   Vk ~N(0,Rk)      :  Vk 是误差,服从正态分布

误差方程:

e1 = xk - xk-1 - u,  注意到,如果按照模型方程,wk应该写在括号左边,但是e和w是不同的概念,w相当于是一个象征,而e是可以最终回代计算出来的

e2 = xk - z

 假设有时间k = 1,2,3  ,  X0已知(注意),那么有:

x = [ x0,x1,x2,x3 ]

z = [ z1,z2,z3 ]

u = [ u1,u2,u3 ]

还有对应的协方差阵 Q1,Q3,Q3, R1,R2,R3

 那么,其实就是要求得 x1, x2 ,x3 ,使得以下概率最大:

 

 

 (回顾上面的高维高斯分布)

 等价于:

 求得 x1, x2 ,x3 ,使得以下值最小:

 f =  ∑e1 TQk-1e1  + ∑e2 TRk-1e2 

 要求得这个结果:

1 . 其实就是解线性方程组的【加权最小二乘解】:

0 = xk - xk-1 - uk  

0 = xk - z

( 假设e = 0的解,实际上e不为0,当时强行解,就得到最贴合的 x = argmin( f ) 的解)

令: y = [uk , zk] T

 

 

 (注意,如果x0是已知的,那么H第一列应该去掉,同时 y1,1 = uk - x0

那么,原式子为:

e = y - HX   e~ N(0,∑) 

∑ = diag ( Q1,Q3,Q3, R1,R2,R3), diag()是使用Q1,Q3,Q3, R1,R2,R3 形成对角矩阵或对角分块矩阵

 注意:f也要重新写成矩阵形式

2 .  使用矩阵求导:  ∂f / ∂x = 0,得到f的极小值时的X4*1

 ∂f / ∂x = HT-1e  =  HT-1(y - HX) = 0  等价于 :HT-1HX    =  HT-1(  可以看成 Ax = b,直接高斯消元法解,没必要求逆浪费算力 )

3. 最终得到:X  = (HT-1H)-1HT-1

 


 迭代解法

一阶&二阶梯度法

假设观测方程:

Z = G(X) + U(Z为观测值)

可以转化为误差方程:

E = F(X) = G(X) + U - Z

目的:求得ΔX = argmin(F(X)),注意,整个目标,与要求概率Δx = argmax(P(z)),之间差了一个∑:

Δx = argmax(P(z)) 转化为 Δx = argmin( eT∑e),也就是Δx = argmin( F(X)TF(X))

 假设有误差方程:

ym*1  = F(X) (如果是泰勒一阶展开线性化后,就为  ym*1 = Am*nXn*1 + y0

 要求得X , 可以令 X = X0 + ΔX , X0可以通過其他手段,例如:估算,或从其他一个观测方程中得到近似值,属于【已知的常数】

 那么,原问题变为:

F(X) = F(X0 + ΔX)  

对F(X)进行泰勒二阶展开

F(X)  ≈ F(X0) + J(X)(X - X0) + 1 / 2 * (X - X0)TH(X) (X - X0)

因为 ΔX = X - X0

F(X)  ≈ F(X0) + J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX

ym*1 = [f1(X),f2(X),.....fm(X)]T

拿其中一条式子来拆分分析

J1 = [∂f1 / ∂x1 ,  ∂f1 / ∂x....∂f1 / ∂xn]   为 1 * n

ΔX = [Δx1 ,  Δx....Δxn]  为 n * 1

H1 为 n * n 

 

y≈  f1(X0) + J1ΔX + ΔXTH1(X) ΔX

整个式子分析

 F(X)  ≈ F(X0) + J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX

 J(X)为【雅可比矩阵】(一阶导数阵):

(对X进行偏导,然后式子再用X0代入,得到的其实是X0处的斜率)

 J为 m * n

 H(X)为【海塞矩阵】(多维函数二阶偏导):

H(X) 为分块矩,对角线上分别为一个Hn(X) ,每条方程的海塞矩阵

H(X) 为n * n * m 行和 n * n * n 列

 


 ΔX = argmin(F(X)) 方法一:

 F(X)  ≈ F(X0) + J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX

 ΔX =  argmin(F(X)) ≈  argmin(F(X0) + J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX)

 等价于 

  ΔX = argmin( J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX

 那么,对J(X)ΔX + 1 / 2 * ΔXTH(X) ΔX 求关于ΔX的导数,并令其为0,得到F(X)的极小值,得到

 J(X) + H(X) ΔX = 0 

 ΔX = H-1(X)J(X)

证明: ∂(XTA X) / X = 2AX

f(X) = XTA X , 是1*1的

 

 

 根据【函数对向量求导】: f(x) /  Xn*1 是 n * 1 的

 

 

 ∂(XTA X) / X =(A+AT)X

因为A是对称的,所以 ∂(XTA X) / X =(A+AT)X = 2AX

 

 (注意,实际很少使用这个,因为【海塞矩阵】比较不好求)


 

 X = argmin(F(X)) 方法二:

仅仅进行一阶展开:

 F(X)  ≈ F(X0) + J(X)(X - X0)

 求 ΔX =  argmin(F(X)) ,等价于求:

 ΔX =  argmin [ 1 / 2 (F(X0) + J(X)(X - X0) ) 2

 (之所以这样,是为了后面求导公式消去2)

 

 

 然后求关于ΔX导数,并令其为0

 

 

唯一要求是J列独立,那么  JJT才可逆, ΔX 唯一


 

证明:J列线性无关,JJT可逆

J列独立,  JΔX=  0 ,ΔX有非零解

(JΔX)TJΔX = 0 

ΔXJTJΔX = 0

ΔXTJTJΔX = 0 

ΔXJJTΔX = 0

JJTΔXJJTΔX = 0

JJTΔX = 0

因为ΔX有非零解,所以JJT列线性无关,列线性无关的方阵是可逆矩阵

 


 有时候J可能会病态,每次解算出的ΔX都大,导致X不容易收敛。

(J病态通常是控制点分布过于集中,导致多行近似线性相关)

 衡量ΔX 好坏的指标

ρ  = 误差函数实际下降的值  / 模型下降的值

ρ  = [ f(X + ΔX) - f(X) ] / JTΔX

ρ  越接近1 ,证明使用这个模型来算,与实际得出的结果越相符

改进版线性优化步骤

 

 

 注解:

1. Dn*n为系数矩阵,应该是对ΔXn*1进行加权用的,通常为 I,或者非负的其他对角阵(能不能用Σ求得权阵用呢?)

2. || Dn*n ΔXn*1||² 是一个距离平方,那么ΔX1²  + ΔX2² +ΔX3²  + ...≤ μ   (X如果是位姿,那么就是 1″,1mm之类的经验值,限制∑ΔXi² 不能太大)

 

有没有办法没有那么啰嗦?

条件极值杀手——拉格朗日乘数法 - 知乎 (zhihu.com)

准备知识:

此处的拉格朗日函数:

 

 对£进行关于ΔX的导数,并且∂£ / ∂ΔX = 0,得到:

(H +  λDTD)ΔX = g (g往上翻能看到)

解得ΔX


 

 

 

 

 

 

 

 

 

nm

posted on 2022-11-30 11:54  耀礼士多德  阅读(8)  评论(0编辑  收藏  举报