《 METHODS FOR NON-LINEAR LEASTSQUARES PROBLEMS》论文学习

本文深入探讨了非线性最小二乘问题在机器人技术中的应用,介绍了牛顿法、高斯牛顿法、梯度下降法、LM算法和狗腿算法等经典方法。重点讲解了这些方法如何处理误差函数,寻找下降方向和步长,以及如何判断局部最小值。LM算法和狗腿法作为混合方法,结合了牛顿法和梯度下降法的优点,适用于不同迭代阶段的需求。文章最后提到了算法的迭代停止条件和代码实现的计划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《 METHODS FOR NON-LINEAR LEASTSQUARES PROBLEMS》论文学习

在传感器误差纠正、SLAM感知、轨迹生成与优化等机器人技术中,最优化理论是极其基本又重要的理论。根据朴素贝叶斯定理,机器人的状态估计问题一般可以转换为求最大似然概率的问题,而最大似然概率问题又可以转换到最小二乘问题上。本篇论文探讨了解决非线性最小二乘问题的一些经典优化方法,例如牛顿法、高斯牛顿法、梯度下降法、LM算法、狗腿算法等。这是一篇比较综合且理解起来不难的论文。我就直接通过这篇论文来入门最优化理论吧。当然后续要系统的看一些经典的书籍

一、基本概念

首先介绍什么叫最小二乘问题

这个问题在高中数学都有学过,最经典的例子就是曲线拟合。我们需要找出一条合适的曲线来拟合给定的坐标,衡量的标准是每个点到曲线的距离平方加起来最小。我们用数学语言描述它:

假 设 拟 合 曲 线 函 数 为 M ( b , x ) = b 1 e b 2 x + b 3 e b 4 x , 其 中 b = [ b 1 , b 2 , b 3 , b 4 ] 为 一 组 参 数 假设拟合曲线函数为M(b,x) = b_1e^{b_2x} + b_3e^{b_4x} ,其中 b=[b_1,b_2,b_3,b_4]为一组参数 线M(b,x)=b1eb2x+b3eb4x,b=[b1,b2,b3,b4]

误 差 函 数 为 f i ( b ) = y i − M ( b , x ) i , 距 离 平 方 和 表 示 为 Σ f i ( b ) 2 误差函数为f_i(b) = y_i - M(b,x)_i, 距离平方和表示为 \Sigma f_i(b)^2 fi(b)=yiM(b,x)i,Σfi(b)2

我们把衡量标准用数学语言描述出来,只要距离平方和越小,拟合效果就越好。通过函数表达式,我们发现曲线拟合问题实质上就是找到参数b的取值使得衡量函数的值最小。通过曲线拟合的例子我们引出最小二乘问题的定义。

F ( b ) = 1 2 ∑ i = 1 m ( f i ( b ) ) 2 F(b) = \frac{1}{2} \sum_{i=1}^m(f_i(b))^2 F(b)=21i=1m(fi(b))2

b ∗ = a r g m i n F ( b ) b^* = argminF(b) b=argminF(b)

其 中 F ( b ) 称 为 目 标 函 数 , f ( b ) 称 为 误 差 函 数 , b ∗ 称 为 目 标 值 其中F(b)称为目标函数,f(b)称为误差函数,b^*称为目标值 F(b)f(b)b

通过上式我们知道我们的任务就是要找到目标b值,它对应的目标函数最小。我们很自然的想到求一阶导数等于0,求解b。考虑到求导后的式子的美观,所以才在F(b)前加了一个系数项1/2。

非线性和线性最小二乘问题的区别?

这里的线性与非线性指的是误差函数f(b)与b的关系,在上面的例子中显然是非线性的。所以是非线性最小二乘问题。

如果我们用多项式去拟合

f ( b ) = y − ( b 1 x + b 2 x 2 + b 3 x 3 + . . . . ) f(b) = y - (b_1x+b_2x^2+b_3x^3+ ....) f(b)=y(b1x+b2x2+b3x3+....)

显然这里的f(b)与b就是一个线性关系。这就变成了线性最小二乘问题。

本篇文章主要探讨非线性最小二乘问题

关于最小值与局部最小值

解决最小二乘问题的终极目标就是要找到一个自变量b,使得此处的F(b)最小,我们把这个b叫做全局最小点。然而这并不是能偶很容易办到的事情。
首先,对于复杂的F(b)进行求导不一定能成功。即使可以求导,得到的也只是极值,没有很好的办法证明他同时也是最值。如果直接让F(b)=0,也不一定有普适的求解公式。基于以上问题,人们提出了局部最小值和迭代求解的概念。

局部最小值的思路是要求目标函数值在某一个区域内为最小即可。用数学语言描述如下(从这里以后把b替代成习惯性的x)

在 ∣ ∣ x − x ∗ ∣ ∣ < σ     区 间 内 满 足 F ( x ∗ ) < F ( x )     其 中 σ 是 一 个 小 的 正 数 在||x-x^*||<\sigma~~~区间内满足F(x^*)<F(x)~~~ 其中\sigma是一个小的正数 xx<σ   F(x)<F(x)   σ

有了定义后,我们该怎么判断是否是局部最小值呢?我们清楚在局部最小值在小领域内必定有导数等于0.然而导数为零的也可能是局部最大值或者是鞍点(既不是最大值也不是最小值但导数为零),导数等于零处称为驻点。所以我们还需要寻找一个充分条件来判断局部最小值。

假设目标函数F是一个光滑可微的函数,那么他就可以进行泰勒展开

F ( x

Levenberg-Marquardt-Fletcher算法是一种用于非线性最小二乘问题的迭代优化算法。该算法通过在每次迭代中结合高斯牛顿法和梯度下降法的优点,来求解非线性最小二乘问题。 该算法的基本思想是通过不断调整模型参数来提高目标函数的拟合度。在每一轮迭代中,算法根据当前参数估计计算目标函数的梯度矩阵和雅可比矩阵,然后使用这些矩阵来更新参数估计。更新参数的过程是通过调整一个称为 "衰减因子" 的参数,来平衡高斯牛顿法和梯度下降法对参数的调整力度。 具体地说,算法从初始参数值开始,计算目标函数的误差平方和和梯度矩阵。然后,根据衰减因子的大小来判断是使用高斯牛顿法还是梯度下降法。如果衰减因子较大,则使用梯度下降法进行参数调整;如果衰减因子较小,则使用高斯牛顿法进行参数调整。通过不断迭代调整参数,算法逐渐收敛到最优解。 Levenberg-Marquardt-Fletcher算法具有全局收敛性、快速收敛速度和较好的数值稳定性等优点。它在解决非线性最小二乘问题中广泛应用,比如曲线拟合、参数估计等领域。但是,该算法对初始参数的选择敏感,需要借助先验知识或试验来确定初始参数。 总之,Levenberg-Marquardt-Fletcher算法是一种强大的迭代优化算法,可以用于解决非线性最小二乘问题,通过不断调整模型参数来提高目标函数的拟合度和精度。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值