计算机视觉和机器学习里面有大量的最小二乘问题,例如相机校正,视觉里程计,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]
最小二乘问题
最小二乘问题的目标函数定义,
其中,, 并且假设 。每一个称为残差(residual),通常可以写作,
此差值衡量了模型()与观测()的差异。样本数有m个,残差可以写成m维向量。
在求解非线性最优化的时通常需要对目标函数求一阶,二阶导数。
的雅克比矩阵,
梯度及Hessian矩阵为
线性最小二乘
当为线性时,该问题称为线性最小二乘问题。对于线性问题,
残差向量可以写作,
,
目标函数,
一阶导数及二阶导数为,
对这个凸函数求极值,只需令一阶导数为0。
对于上面这个公式,可以通过Cholesky分解,QR分解及SVD分解来求解。
非线性最小二乘
非线性最小二乘的目标函数为非线性函数,有两个经典的算法高斯牛顿法,莱文伯格-马夸特法,前者基于线性搜索,后者基于信赖域。更多关于线性搜索和信赖域的内容可参考上一篇。
传送门: 无约束非线性优化
GAUSS-NEWTON
高斯牛顿法从牛顿法演变而来,在无约束非线性优化这篇文章中提到的牛顿法是基于线性搜索(Line Search)的算法,每一次迭代需要计算搜索方向,
牛顿法的主要局限在二阶导数是否正定对称上。Gauss-Newton法使用近似二阶导数,即
代入公式(12)计算搜索方向,
这样省掉了二阶导数的计算。
公式(6)加号右边的部分,
将上面的求和部分近似为0,也就是说要么非常小,要么非常小。前者非常小,意味着观测与模型的误差小,后者小,意味着残差函数接近线性。在实际情况中,这两种情况非常常见。
换一个角度考虑,求实际上可以等价于最优化下面这个线性最小二乘问题。
因此,可以通过线性最小二乘法求解每次迭代的下降方向。
LEVENBERG–MARQUARDT
与高斯牛顿法类似,LM算法同样使用了对Hessian矩阵的近似。不同的是LM算法使用信赖域而不是线性搜索。因此,相当于在高斯牛顿法的基础上增加了一个约束,即
为信赖域的半径。信赖域中的二次函数为,
LM算法也叫"damped Gauss-Newton method",思路是在高斯牛顿法计算的公式的基础上,增加一个衰退参数,
Gauss-Newton:
LM:
- 时,协方差矩阵正定,保证了是下降方向。
- 如果非常大,可以得到,
这相当于梯度下降的一小步。也就是说,当迭代的位置远离最优点时,LM算法相当于梯度下降。
- 如果非常小,那么。当迭代位置离最优点很近时,LM算法等价于GN算法。
可以看到衰退参数即定义了下降方向,也定义了步长,因此LM算法不需要进行LineSearch。本身代表了信赖域。
无约束非线性优化这篇文章提到信赖域算法需要一个判定条件,
分子为实际下降量,分母为预测下降量。
- 小,说明模型预测的下降量高于模型实际的下降量,需要缩小信赖域。
- 大,说明模型预测的下降量低于实际模型的下降量,可以采用此信赖域。
计算预测下降量 ,
的初值应该和相关,比如说可以设
为用户设定参数。
LM算法的伪代码
上一篇:无约束非线性优化