《 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)=yi−M(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=1∑m(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是一个小的正数 在∣∣x−x∗∣∣<σ 区间内满足F(x∗)<F(x) 其中σ是一个小的正数
有了定义后,我们该怎么判断是否是局部最小值呢?我们清楚在局部最小值在小领域内必定有导数等于0.然而导数为零的也可能是局部最大值或者是鞍点(既不是最大值也不是最小值但导数为零),导数等于零处称为驻点。所以我们还需要寻找一个充分条件来判断局部最小值。
假设目标函数F是一个光滑可微的函数,那么他就可以进行泰勒展开
F ( x