最小二乘拟合基础

在SLAM中大量地使用高斯牛顿法等最小二乘拟合,比如原来的问题是:

y=\exp(ax^2+bx+c)

给定很多组观测 ​(x_i,y_i) ,去求参数

X=[a,b,c]^T

但真实数据通常有噪声,所以一般不可能存在一组 ​a,b,c ,让每个点都严格满足

y_i=\exp(ax_i^2+bx_i+c)

于是我们就会问:

“当前这组参数 ​X ,让每个样本偏差有多大?”

所以才“令”

f_i(X)=y_i-\exp(ax_i^2+bx_i+c)

这叫做残差。含义很直接:

  • ​y_i :真实观测值
  • ​\exp(ax_i^2+bx_i+c) :模型预测值
  • 两者之差:预测误差

把所有样本的误差堆起来,就得到残差向量

F(X)= \begin{bmatrix} y_1-\exp(ax_1^2+bx_1+c)\\ \vdots\\ y_N-\exp(ax_N^2+bx_N+c) \end{bmatrix}

然后最小化

\frac12\|F(X)\|^2

意思就是:

\frac12\sum_{i=1}^N \left(y_i-\exp(ax_i^2+bx_i+c)\right)^2

也就是最常见的最小二乘拟合


为什么一定要这样“令”?

因为这样做以后,问题就被写成了一个标准形式:

\min_X \frac12\|F(X)\|^2

这个形式特别重要,因为:

  1. 它统一了“拟合”问题的写法不再是“一个个方程怎么解”,而是“让总误差最小”。
  2. 方便求导后面要用牛顿法、Gauss-Newton、LM,本质上都要对这个残差向量 ​F(X) 求 Jacobian。
  3. 适合处理超定系统
    ​N 个数据点,但未知量只有 3 个参数。通常 ​N\gg 3 ,这不是“解方程组”,而是“找最优参数”。

Comments