文章概述
对于最小二乘问题,求解方法主要有梯度下降法、牛顿法、高斯牛顿法、LM法,按照这些方法的排序来看,后面一种方法可以说是前面一种方法的改进,每种方法都改进了它前面方法的一些缺点。
最速下降法(也叫梯度下降法)--最简单暴力的方法
问题:我们能求出每一个x处的导数J(函数下降速度与方向), 怎样求这个函数的最小值?
核心思想:沿着函数变小的方向移动,
导数J代表了函数的变化趋势,因此只要顺着函数值变小趋势的方向移动自变量就能迭代得到函数最小值了。
缺点:步长不好确定
往函数最小值方向移动的步长需要人为确定,步长取得太大则容易在最低点附近来回波动,甚至不收敛。取得太小则收敛速度慢
改进思路:利用其他信息来确定步长
想办法确定每一步的步长,使函数技能比较快速的下降,又不会出现不收敛的情况。
牛顿法--计算量大,但是收敛速度快且精确的方法
问题:求F(x0 + dx) 的最小值。注意自变量是dx
核心思想:把F(x0 + dx)泰勒展开成二次函数求最值(注意这里dx是自变量)。
缺点:二阶导数H计算量大
改进思路:避免使用二阶导数H,是否有其他可用信息。
高斯牛顿法--一种近似型解法,用线性函数近似二次曲线
问题:求F(x0 + dx) 的最小值。注意自变量是dx
核心思想:把F(x0 + dx)泰勒展开成一次函数求最值(注意一次函数必须有限制条件才能求到最值),这样可以避免求H矩阵。利用限制条件F(x0 + dx)>= 0(针对SLAM问题,因为SLAM中原函数F(x)代表误差大小)
缺点:
1、JTJ只有半正定性,若JTJ为奇异矩阵,则会导致算法不收敛。
2、步长取太大也可能导致算法不收敛
LM法--在近似型解法的基础上添加上了可信区间
问题:求F(x0 + dx) 的最小值。注意自变量是dx
核心思想::把F(x0 + dx)泰勒展开成一次函数求最值,利用函数在每个迭代点处的线性度来指导更多的使用梯度下降法还是高斯牛顿法
缺点:速度有所降低