最小二乘拟合基础
在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
这个形式特别重要,因为:
- 它统一了“拟合”问题的写法不再是“一个个方程怎么解”,而是“让总误差最小”。
- 方便求导后面要用牛顿法、Gauss-Newton、LM,本质上都要对这个残差向量 F(X) 求 Jacobian。
- 适合处理超定系统
有 N 个数据点,但未知量只有 3 个参数。通常 N\gg 3 ,这不是“解方程组”,而是“找最优参数”。
Comments