这一章没有看的很明白,先做笔记,往后理解更深了再回来补充修改。

由于噪声的存在,运动方程和观测方程的等式必定不是精确成立的,只能近似成立。所以,与其假设数据必须符号方程,不如讨论如何在有噪声的数据中进行准确的状态估计。

状态估计的方法:

  1. 增量/渐进(incremental)法:即滤波器,持有一个当前时刻的估计状态,然后用新的数据来更新它
  2. 批量(batch)法:把一批数据攒起来一起处理。SFM(structure from motion)就是这样,被称为传统三维重建,特点是把数据采集回来,然后离线处理。

关于贝叶斯法则、似然、后验、先验

直接求后验分布是很难的(知果求因,知道定位和建图求观测数据),但是求一个状态最优估计,使得在该状态下的后验概率最大化,则是可行的。即把最大后验概率问题通过以下方式转化为最大似然概率问题:
第6讲 非线性优化 - 图1
但是没有先验(我们不知道机器人位姿或地图情况),所以直接求解最大似然估计MLE(Maximize Likelihood Estimation):
第6讲 非线性优化 - 图2
直观的讲,似然是指“在现在的位姿下,可能产生怎样的观测数据”。由于我们知道观测数据,所以最大似然估计可以理解为:“在什么样的状态下(位姿、建图)(未知),最可能产生现在观测到的数据(已知)”。这就是最大似然估计的直观意义。

1. 最小二乘的引出

我觉的知道如何引出解决方法是很重要的,这也有利于面试。

问题:如何求最大似然估计:

  1. 建立观测模型: 第6讲 非线性优化 - 图3
  2. 转化为高斯形式:
    1. 假设噪声项符合正态分布第6讲 非线性优化 - 图4,则观测数据的条件概率:
      第6讲 非线性优化 - 图5(vk的均值为0,h()的方差为0)
    2. 对于正态分布或者说高维高斯分布,可以写成展开形式(因子乘指数):
  3. 进行负对数处理:
    1. 对于有指数的高斯分布求最大值(最大似然估计)是比较难的,但是高斯分布在负对数下有较好的数学形式,对高斯分布进行负对数处理,乘法变成加法,求最大值变为求最小值
    2. 负对数化后的等式称为马氏距离,等价于最小化噪声项(即误差z-f(x))的一个二次型。其中第6讲 非线性优化 - 图6叫做信息矩阵,即高斯分布协方差矩阵的逆
  4. 每个点的负对数结果累加,求最小值:如上操作,再把每个点的负对数化结果相加起来,就得到了一个最小二乘问题(Least Square Problem,书式6.13),它的解等价于状态的最大似然估计。

后面讲了非线性最小二乘的方法,可以通过P127页的方式将求解导函数为0的问题变成一个不断寻找下降增量第6讲 非线性优化 - 图7的问题。后面又讲了一阶梯度法(最速下降法,沿着反向梯度的方向前进,在一阶线性的近似下,目标函数必定会下降)和二阶梯度法(牛顿法)。还讲了高斯牛顿法和列文伯格-马夸尔特方法。没有彻底搞懂,需要补充的知识:矩阵求导、向量求导、最小二乘法、雅可比矩阵、最优化

2. 梯度法

对于F(x),我们对它进行泰勒展开,保留一阶和二阶项:

其中J(x)为F(x)关于x的一阶导数(也叫梯度,雅克比jacobian矩阵),H则为二阶导数(海塞hessian矩阵)。

2.1 一阶梯度(最速下降法)

顾名思义,只保留一阶导数项,那么令增量为反向的梯度,即可保证梯度下降。这只是个方向,我们还需要指定一个步长(可根据一定的条件计算,比如线性搜索,不予讨论)则这种方法称为最速下降法。

特点:最速下降法相邻的两个方向是正交的(垂直的),所以有齿状型下降的感觉。会在极小点反复横跳,反而增加迭代次数。

2.2 二阶梯度(牛顿法)

保留一阶和二阶导数项,则得增量方程。对等式右侧关于第6讲 非线性优化 - 图8求导并令其为0,得到:
第6讲 非线性优化 - 图9
求解这个线性方程,就得到了增量(包括了方向,x是矢量),该方法又称为牛顿法。

特点:第6讲 非线性优化 - 图10由H和J求得,要计算一阶梯度和二阶海塞矩阵,并且还要对海塞矩阵H求逆,计算量很大。

总结:梯度法事实上就是用一个一次或二次函数近似原函数(通过泰勒展开的方式),然后用近似函数的最小值来猜测原函数的极小值。

3. 高斯牛顿法

3.1 从牛顿法到高斯牛顿法

对于第6讲 非线性优化 - 图11,当理论最优值为0的时候,这个优化问题就变成了函数求解问题:
第6讲 非线性优化 - 图12
这样就从求minF(x) 到求minf(x),从求平方和外面的泰勒展开到求平方和里面的泰勒展开

3.2 高斯牛顿法流程

本质上是一阶梯度法,用泰勒一阶展开近似f(x),再利用展开式的平方进行求导,得到海塞矩阵的替代解:
第6讲 非线性优化 - 图13
得到增量方程又称正规方程(normal equation):
第6讲 非线性优化 - 图14

特点:用第6讲 非线性优化 - 图15作为二阶海塞矩阵的近似,从而忽略了H的计算,减少计算量。
缺点:要求JJT正定,这个条件通常不会满足,导致迭代不收敛等。高斯牛顿法采用的二阶泰勒展开只在展开点附近有较好的近似效果,一旦步长较大,近似实际上已经失效了

4. 列文伯格-马夸尔特方法(LM法)

高斯牛顿法采用的二阶泰勒展开只在展开点附近有较好的近似效果,于是我们给增量条件一个范围,称为信赖区域。在这个范围内,近似是有效的,超出这个范围近似可能会出问题。

用一个指标第6讲 非线性优化 - 图16来表示实际模型和近似模型之间的差异。
如果第6讲 非线性优化 - 图17太小,说明实际减少的值小于近似减少的值,则认为近似比较差,需要缩小近似范围。
如果第6讲 非线性优化 - 图18太大,说明实际减少的值大于近似减少的值,则可以放大近似范围,同时缩小优化半径,使得优化更精确。

特点:LM算法可在一定程度上避免线性方程组的系数矩阵的非奇异和病态问题,提供更稳定、更准确的增量

什么是Ceres?

Ceres是谷歌的C++优化库,是一个广泛使用的最小二乘问题求解库。

什么是g2o?

在slam领域广发使用的优化库g2o(General Graphic Optimization),是基于图优化的库。图优化是一种将非线性优化与图论结合起来的理论。

需要补充的知识

矩阵求导、向量求导、最小二乘法、雅可比矩阵、最优化方法、ceres用法、g2o用法、课后习题