计算机视觉和机器学习里面有大量的最小二乘问题,例如相机校正,视觉里程计,vSLAM等。最小二乘问题可以认为是无约束非线性优化的一个特例。可以使用一般化的方法求解,然而由于他的形式的特殊性,可以采用一些性能更好的算法。

更多一般性方法可以参考这篇文章:无约束非线性优化算法

参考:

[1] Numerical Optimization. Nocedal, Jorge, Wright, S.
[2] Computer vision: models, learning and inference. Simon J.D. Prince
[3] 最优化理论与方法, 袁亚湘
[4] Convex Optimization.  Stephen Boyd, Lieven Vandenberghe
[5]

最小二乘问题

最小二乘问题的目标函数定义,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题                                    

其中,计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题, 并且假设 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题。每一个计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题称为残差(residual),通常可以写作,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

此差值衡量了模型(计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题)与观测(计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题)的差异。样本数有m个,残差可以写成m维向量。

                                  计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

在求解非线性最优化的时通常需要对目标函数求一阶,二阶导数。

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题的雅克比矩阵,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

梯度及Hessian矩阵为

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

线性最小二乘

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题为线性时,该问题称为线性最小二乘问题。对于线性问题,

残差向量可以写作,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题,

目标函数,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

一阶导数及二阶导数为,

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

对这个凸函数求极值,只需令一阶导数为0。

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

对于上面这个公式,可以通过Cholesky分解,QR分解及SVD分解来求解。

非线性最小二乘

非线性最小二乘的目标函数为非线性函数,有两个经典的算法高斯牛顿法,莱文伯格-马夸特法,前者基于线性搜索,后者基于信赖域。更多关于线性搜索和信赖域的内容可参考上一篇。

传送门: 无约束非线性优化

GAUSS-NEWTON

高斯牛顿法从牛顿法演变而来,在无约束非线性优化这篇文章中提到的牛顿法是基于线性搜索(Line Search)的算法,每一次迭代需要计算搜索方向计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                            计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

牛顿法的主要局限在二阶导数是否正定对称上。Gauss-Newton法使用计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题近似二阶导数计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题,即

                                          计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

代入公式(12)计算搜索方向计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                            计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

这样省掉了二阶导数的计算。

公式(6)加号右边的部分,   

                                           计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

将上面的求和部分近似为0,也就是说要么计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题非常小,要么计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题非常小。前者非常小,意味着观测与模型的误差小,后者小,意味着残差函数接近线性。在实际情况中,这两种情况非常常见。

换一个角度考虑,求计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题实际上可以等价于最优化下面这个线性最小二乘问题。

                                            计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

因此,可以通过线性最小二乘法求解每次迭代的下降方向。

LEVENBERG–MARQUARDT

与高斯牛顿法类似,LM算法同样使用了对Hessian矩阵的近似。不同的是LM算法使用信赖域而不是线性搜索。因此,相当于在高斯牛顿法的基础上增加了一个约束,即

                                     计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题为信赖域的半径。信赖域中的二次函数为,

                                     计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

LM算法也叫"damped Gauss-Newton method",思路是在高斯牛顿法计算的计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题公式的基础上,增加一个衰退参数计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

Gauss-Newton:                                      计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题 

LM:                                                      计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

  • 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题时,协方差矩阵正定,保证了计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题是下降方向。
  • 如果计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题非常大,可以得到,

                        计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

       这相当于梯度下降的一小步。也就是说,当迭代的位置远离最优点时,LM算法相当于梯度下降。

  • 如果计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题非常小,那么计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题。当迭代位置离最优点很近时,LM算法等价于GN算法。

可以看到衰退参数计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题即定义了下降方向,也定义了步长,因此LM算法不需要进行LineSearch。计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题本身代表了信赖域。

无约束非线性优化这篇文章提到信赖域算法需要一个判定条件计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                           计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

分子为实际下降量,分母为预测下降量。

  • 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题 小,说明模型计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题预测的下降量高于模型计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题实际的下降量,需要缩小信赖域。
  • 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题 大,说明模型计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题预测的下降量低于实际模型计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题的下降量,可以采用此信赖域。

计算预测下降量 ,

                                 计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

                                                            计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题的初值应该和计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题相关,比如说可以设

                                计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题为用户设定参数。

LM算法的伪代码

计算机视觉大型攻略 —— 程序猿数学(2) 数值优化(二)最小二乘问题

上一篇:无约束非线性优化

 

相关文章:

  • 2021-08-23
  • 2021-08-26
  • 2021-07-27
  • 2021-08-25
  • 2021-04-18
  • 2021-12-25
  • 2021-08-01
猜你喜欢
  • 2021-10-13
  • 2022-01-14
  • 2021-04-28
  • 2021-06-08
  • 2022-12-23
  • 2021-09-11
  • 2021-08-21
相关资源
相似解决方案