最小二乘法

Least Squares Method

最小化误差平方和 来求解参数
最小二乘法是一切误差最小化问题的基础,是 SLAM、机器学习、数据拟合、参数估计的核心数学工具。

基础知识

目标函数:

minxi=1n(yif(x,ti))2=minxi=1nri(x)2

其中:

类型 误差特性 解法
线性最小二乘 误差关于参数是线性的 解析解(直接计算)
非线性最小二乘 误差关于参数是非线性的 迭代法(数值优化)

一、线性最小二乘法(解析解)

微积分的角度

线性代数的角度

向量投影
b=C+Dt
Ax=b,如果方程无解
则求解 ATAx^=ATb 得到方程的最优近似解 x^
使得 E||Axb||2 取得最小值

概率论的角度

e=E[Y(a+bX)]2

b0=Cov(X,Y)D(X) a0=E(Y)b0E(X)

minE[Y(a+bX)]2=E[Y(a0+b0X)]2=DYCov2(X,Y)D(X)

二、非线性最小二乘法(迭代-数值优化)

非线性最小二乘法 无法直接求解析解,必须使用数值迭代法

  1. 初始化参数 x0
  2. 计算当前残差 r(x) 和雅可比矩阵 J(x)
  3. 构造线性方程,计算步长 Δx
  4. 判断是否收敛(如步长足够小,残差变化足够小)
  5. 更新参数 xx+Δx
  6. 重复步骤 2 ~ 5 直到收敛

一阶泰勒展开(线性化)

r(x+Δx)r(x)+J(x)Δx

其中:J(x)雅可比矩阵

J(x)=r(x)x

高斯-牛顿法(Gauss-Newton)

通过线性化,将优化转化为如下问题:

minΔxr(x)+J(x)Δx2

解得:

(JTJ)Δx=JTr(x)

这是一个 线性方程组 ,解出 Δx ,然后更新:

xk+1=xk+Δx

不断迭代,直到收敛。

Levenberg-Marquardt (LM) 法(更稳定)

高斯-牛顿法可能遇到:

(JTJ+λI)Δx=JTr(x)

特点:

Dogleg 法(结合 GN 与梯度下降)

适用于稀疏大规模问题,结合两种步长,提升收敛效率。

三、实际应用

非线性最小二乘法库: g2o Ceres Solver

min{xi}(i,j)Czijh(xi,xj)Ωij2

其中:

核心任务:利用非线性最小二乘法优化整张图,找到最一致的位姿和地图。