梯度下降法
参考网址:
(60条消息) 高斯牛顿法详解_我只是一只自动小青蛙的博客-CSDN博客
信赖域狗腿(dogleg)方法_LSEC小陆的博客-CSDN博客
高斯牛顿(Gauss Newton)、列文伯格-马夸尔特(Levenberg-Marquardt)最优化算法与VSLAM_weixin_30463341的博客-CSDN博客
LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)_三眼二郎-CSDN博客_lm算法
从上倒下为梯度下降法的前世今生已经未来的演化:
最速下降法(一阶梯度法)
牛顿法(二阶梯度法)
高斯牛顿法
列文伯格法
马夸尔特法
梯度下降主要用于slam中的非线性优化,实际上就是对一个最小二乘问题的求解,这也是上述几种方法的用途.
问题
最速下降(一阶梯度法)
最速下降法(一阶梯度法)就是保留泰勒展开的一阶项用来近似非线性函数**F ( x )**,即:
$$
F(xk+Δxk)≈F(xk)+J(xk)TΔxk
$$
$$
Δxk=−J(xk)
$$
**缺点:**由于仅保留一阶的雅可比矩阵,该方法过于贪心,容易走出锯齿线,反而增加迭代次数。
牛顿法和阻尼牛顿法(二阶梯度法)
$$
H(x
k
)Δx
k
=−J(x
k
)
$$
**牛顿法的缺点:**海塞矩阵H计算量太大
阻尼牛顿法(可以看成是牛顿法与最速法的结合)
阻尼牛顿法就是在使用牛顿法获得增量方向后,进一步对最优步长进行搜索:
高斯牛顿法(仅用于最小二乘)
原理(不对优化目标函数进行泰勒展开,我们对优化目标函数中的一部分,即f(x)进行一阶泰勒展开)
增量方程:
$$
H(x
k
)Δx
k
=g(x
k
)
$$
算法流程:
1 | 1.给定初始值X0 |
缺点:
由于是通过雅各比矩阵做的JH(海瑟矩阵)的近似,因此会遇见奇异矩阵与病态矩阵,可能出现算法不收敛.
L-M方法,阻尼牛顿法
列文伯格-马夸尔特方法的思想
针对高斯牛顿法的不足,L-M方法做了两点改进:
在求解增量Δ xk 时,对其设置了信赖区域
在求得增量Δ xk对其近似效果进行了量化,并根据量化结果对信赖区域进行调整,
再从新计算增量Δ x k,直到近似效果量化结果达到阈值。
增量方程
$$
(H+λD
T
D)Δx
k
=g(x
k
)
$$
近似程度的量化
$$
ρ=
(f(xk+Δx k)−f(x k ))/(J(x k)TΔxk)
$$
- 当ρ接近1时,近似效果好;
- 当ρ太小时,实际减小的值远小于近似函数减小的值,近似效果差,需要缩小近似范围μ
- 当ρ较大时,实际减小的值大于近似函数减小的值,近似效果差,需要增大近似范围μ
算法流程: