从零认识最小二乘法

一般的理解,最小二乘法是以误差的“平方和”最小为目标去计算最优近似解的方法。但要理解其本质,我们还需要从最大似然估计说起。

一、最大似然估计(Maximize Likelihood Estimation, MLE)

首先我们来认识一下似然函数,似然函数是统计模型中关于参数的函数,被记为,是给定联合样本,求解关于参数值的函数。其表达式如下:

这里等式右边是一个概率密度函数,但似然函数和概率密度函数不同之处在于似然函数是在给定联合样本的取值,求解参数值为 的概率,是关于 [公式] 的函数。所以我们说它们的结果在数值上相等,但条件是不同的。

 最大似然估计则是基于似然函数,估计最大概率导致联合样本出现对应的参数 [公式]

 

 因此,我们从最大似然估计的思想应该可以感受到它和最小二乘的共同之处:概率最大即误差最小,且二者都是基于已知样本信息求解模型参数的过程。

 

二、MLE 与最小二乘的关系 

我们先抛出结论:如果模型的测量误差服从正态分布,那么最大似然估计问题等价于最小二乘问题。

从公式上去证明:

 该式等价于最小化误差项的一个二次型,也就是最小二乘。因此我们求得最小二乘解 ,即求得了正态分布最大概率对应的 [公式] 。因此,如果模型的测量误差服从正态分布,那么最大似然估计问题等价于最小二乘问题。

 

 

三、正态分布与最小二乘的关系

上面我们证明了,如果模型的测量误差服从正态分布,最大似然估计等价于最小二乘。同样的,我们还可以从另一个角度去思考:最小二乘解一定是最优解吗?进一步我们可以了解到最小二乘的本质。

假设我们用4把体重称去测量一个人的体重,得到的结果如下表所示。不假思索,我们会对其求平均,将平均值作为最终测量结果。可是这样做一定是最优的结果吗?

 

 我们先不着急给出答案。我们知道误差越小,越接近于真实值。因此当有多组测量结果时,我们可以相信误差的绝对值之和越小,越接近于真实值。

但绝对值的计算并不便于我们做运算比如求导(绝对值求导通常需要分段求导)。因此,最小二乘思想的提出者阿德里安.马里.勒让德就将其变换为了误差的平方和最小。他认为总的误差平方和最小时,对应的x 就是最接近于真实值的 ,其结果和取绝对值是一致的。此时表达式变为: 

 

 为了求得上式的最小值,常规做法则是对上式求导,有:

 

 

因此我们发现最小二乘思想求解的结果正是其算术平均值。因此到了这里我们对于最小二乘应该有了更本质的认识,那就是平均数思想。

可是,任何问题求解平均值都能得到最优解吗?换句话说,最小二乘法用于解任何问题都work 吗?对此,高斯也曾对勒让德的说法提出过质疑,并做了很多演算和分析,后面他发现当且仅当误差分布{ }满足下面这个函数分布时,求解平均值就是最优解。它就是著名的正态(高斯)分布

 

 同样的,当我们上升到多维问题时,即多维正态分布时,该结论仍有效。

 

因此我们说,当测量误差服从正态分布,最小二乘解就是最优解;同时最小二乘法所能解决的问题也即是测量误差服从正态分布的问题。恰恰,如果误差是由各种随机的、独立的因素造成的,通常都满足正态分布,这也是世界上大多数误差的来源。因此最小二乘法被广泛使用。

另一方面,最小二乘问题属于一种状态估计问题,但它无需像其他状态估计问题一样,使用如贝叶斯法则等概率统计方法去求解最大概率,取而代之的是通过解算线性方程或者迭代优化的方式去逼近其最优估计值。这就是我们接下来要讲到的“线性最小二乘估计”和“非线性最小二乘估计”。

 

四、 线性最小二乘估计

 我们已经知道,最小二乘即是构建最小化误差的平方和,并使得观测值与估计值之间的误差最小的方法,如下式:

 转换为矩阵形式:

 

 

五、非线性最小二乘估计

 

 因此,对于解非线性最小二乘问题,我们通常分为以下步骤:

最后我们发现,求解导函数为0的问题,变成了不断寻找下降增量 的问题。而在这个过程中,问题就在于如何找到每次迭代的增量?这也是我们接下来要重点介绍的几种非线性优化算法的求解目标。

 

5.1 梯度下降法

梯度下降法,也叫做最速下降法。首先我们需要理解“梯度”是指向函数值增长最快的方向。因此梯度下降法的直观思想,就是沿着与梯度相反的方向前进,逐渐找到梯度最小的顶点。换句话说,就是将非线性问题的局部做线性(一阶)近似,一步步降低目标函数的误差,最终找到最佳近似解。

已知最小二乘问题为:

 

通常我们完成迭代后,并不代表我们就一定找到了最优解。由于步长 的设置属于经验值,如果步长过小,会导致迭代很多次后,都未达到坡谷;如果步长设置过大,也容易导致锯齿状路线,甚至出现误差逐渐增大(发散)的现象。因此要找到合适的步长通常需要不断的调试。然而,接下来我们介绍的牛顿法一定程度上弥补了这种缺点,但它也带来了新的问题。 

 5.2 牛顿法

5.3  梯度下降法 vs 牛顿法

 牛顿法相比梯度下降法,使用了二阶近似,对于很多现实问题而言,它的收敛速度更快,这也是它相比于梯度下降法的优点。下图是一个直观感受,现实问题是非线性的,绿线是梯度下降法,它每次通过线性拟合,走了一个大弯到达终点;而牛顿法是二阶拟合,更符合最优下降路径。

 

 但牛顿法的问题是求解二阶导海塞矩阵的困难,特别是当目标函数的规模较大时。因此为了规避二阶导的计算,拟牛顿法、高斯牛顿法等被提了出来。当然对于解决最小二乘问题,高斯牛顿法无疑更实用。

 

5.4 高斯牛顿法 

 

 

 

5.5 列文伯格-马夸尔特法(LM算法)

列文伯格-马夸尔特算法简称LM 算法,又叫阻尼牛顿法。它主要针对高斯牛顿法存在的两个弊端进行了优化:

  •  LM 法接近于梯度下降法的推导

 

通常,LM 开始时会给定一个偏小的阻尼系数,即默认偏向于使用高斯牛顿进行迭代,只要迭代顺利,便不断减小阻尼系数。相反,如果计算出来的误差发散,则说明模型在当前位置附近不满足二次分布,因此便会增大阻尼系数,逐步切换为梯度下降进行迭代,直到误差逐渐减小,又不断减小阻尼系数,重新偏向高斯牛顿进行迭代。最后,当误差下降到某个阈值范围内,或迭代达到设定的次数后,停止迭代。

因此LM 算法的优化框架如下:

 

可见,LM 法一定程度上规避了高斯牛顿法以及梯度下降法各自的缺点,如高斯牛顿法的非奇异问题、梯度下降法的锯齿路线问题等,并融合了它们的优点,提供了更稳定更准确的增量 。因此LM 算法在解决非线性最小二乘问题上是应用最为广泛,也最叫好的算法。

当然除了以上描述的各类非线性优化算法外,还有不少其他求解增量的优化算法,以及为了提高性能和实用性的改进扩展算法,在此便不再赘述。其核心学科为《数值优化》,感兴趣的同学可以去查阅相关书籍了解更多的优化算法。

六、关于初始值与增量方程

基于以上内容,我们了解到几种常见的非线性优化迭代算法的基本原理,但对于迭代的初始值没有做过多讲解。那么初始值是可以随机选取的吗?当然不是。

无论是什么非线性优化问题,初始值的提供都应该有科学依据才行。如果初始值的设置不合理,就容易陷入局部最小值,特别是当目标函数过于复杂的时候,这是非线性优化的通病。因此初始值的提供显得尤为重要。例如对于SFM,我们会使用本质矩阵分解、PnP或ICP 等方式获取姿态关系的初始值;对于摄像机标定,我们也会通过一些矩阵分解方法如Cholesky分解去求解内参数的初始值。得到合理的初始值之后,再带入非线性优化迭代算法获取最优解。

 

 

おすすめ

転載: blog.csdn.net/hltt3838/article/details/120673358