当前位置: 代码迷 >> 综合 >> 最小二乘法(1):概念和概况
  详细解决方案

最小二乘法(1):概念和概况

热度:28   发布时间:2023-10-01 02:57:55.0

最小二乘法的概念

最小二乘法要关心的是对应的cost function是线性还是非线性函数,不同的方法计算效率如何,要不要求逆,矩阵的维数

一般都是过约束,方程式的数目多于未知的参数数目。

最小二乘法的目标:求误差的最小平方和,根据cost function的对应有两种:线性和非线性(取决于对应的残差(residual)是线性的还是非线性的)。

最小二乘法(1):概念和概况

公式推导:

  • 而非线性最小二乘没有closed-form,通常用迭代法求解。在每次迭代的过程使用一个线性化的方程代替计算。

有牛顿法,牛顿高斯法,LM, 其实可以分为trust region 和 linear line search

 

非线性最小二乘法的方法有

迭代法,即在每一步update未知量逐渐逼近解,cost function在下降,可以用于各种各样的问题。

  • 梯度下降(最速下降法)是迭代法的一种,可以用于求解最小二乘问题

最小二乘法(1):概念和概况

上面的x0是泰勒展开式的点, α是 步长(一个实数) , d→ 单位方向(一个向量),即 |d→|=1

显然当d的方向和f′(x0)方向相反的时候,cos180=?1,整体取到最小值。这就是为什么取的是梯度的反方向原因。

当然上面的步长一般也是可以求得,怎么求步长也是一门学问。

下面的都是从牛顿法引申出来的,记住牛顿法求得是稳定点f′(x)=0f′(x)=0,导数为0的不一定是最小值,梯度下降法求得是局部最小值,从计算上看

  • 牛顿法 泰勒展开式到二阶,公式参考参考文献1.
  • 高斯-牛顿法 (公式参考参考文献1.)
    是另一种经常用于求解非线性最小二乘的迭代法(一定程度上可视为标准非线性最小二乘求解方法)
  • Levenberg-Marquardt
    的迭代法用于求解非线性最小二乘问题,就结合了梯度下降和高斯-牛顿法,使用信赖阈。
  • 最小二乘法(1):概念和概况
  • LM算法实现

  • LM伪代码说明
  • 代码实现:参考文献1(Matlab,c++)
  • 总结

    所以如果把最小二乘看做是优化问题的话,那么梯度下降是求解方法的一种,x=(ATA)?1ATbx=(ATA)?1ATb是求解线性最小二乘的一种,高斯-牛顿法和Levenberg-Marquardt则能用于求解非线性最小二乘

  • LM算法相对于高斯牛顿算法和梯度下降的优缺点

参考文献:

1.https://www.cnblogs.com/shhu1993/p/4878992.html

2.https://www.codelast.com/%E5%8E%9F%E5%88%9B%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E7%9A%84%E7%90%86%E8%AE%BA%E4%BE%9D%E6%8D%AE/