G2o,GTSAM,Ceres,Tensorflow优化器的方法比较

  • 首先是一些背景知识:
    • 最速梯度下降法(GD)和牛顿法可以用来优化所有种类的函数。
    • 牛顿高斯和基于牛顿高斯的LM法只能用来优化非线性最小二乘。\sum (Ax+b)^2
    • SGD是最速梯度下降法的改进,也就是每次迭代随即选取一些样本进行优化。
    • 一般大型优化问题不会用二阶的牛顿法。
  • Ceres是针对所有种类的函数的优化,所以只能用最速梯度下降法。
  • G2o是求解的一个标准的最小二乘
    • \underset{x}{min}\left \| Ax+b \right \|^2_\Sigma =(Ax+b)^T\Sigma (Ax+b)
  • GTSAM准确的说不是解的优化方程。而是先把一个概率图的联合概率的信息矩阵和信息向量表示出来\Omega, \xiexp(x^T\Omega x+\xi x))。但具有物理意义的是均值和协方差。所以通过信息矩阵和协方差矩阵的换算计算出均值。这个换算里面有求逆,等于是在解方程。
  • x^T\Omega x+\xi x(Ax+b)^T\Sigma (Ax+b)可以相互变换。概率图可以通过分解来简化矩阵。G2O的非线性优化中也可以通过消元来简化矩阵。所以两个方法基本是等价的。但是概率图具有一定物理意义,更容易增量扩展。
  • Tensorflow用来优化神经网络,也就是线性函数嵌套一个非线性方程的函数。f( Ax+b)所以使用SGD。但是Tensorflow限定于神经网络似的函数,所以不能用Tensorflow来优化普通函数或者做SLAM。

你可能感兴趣的:(建图和定位,G2o,GTSAM,Tensorflow,Ceres)