范数是数学中一种用来衡量长度或距离的函数,不同类型的范数可以看作对距离或者长度在不同层面上的拓展。
一族标准的范数就是 $L_p$范数
$$\|x\|_p = \left( \sum_{i=1}^{n} |x_i|^p \right)^{1/p}$$
其中 $p$表示缩放次数,进而分为常见的 $L_1$和 $L_2$范数,又分别称为曼哈顿范数和欧几里得范数,也就表示我们熟悉的曼哈顿距离和欧几里得距离。曼哈顿距离表示沿着坐标方向的所有距离求和,而欧几里得距离就表示直线距离。$L_\infty$则表示取所有分量中最大的作为距离。
范数与代价
在实践中,我们能够观察到概率分布和范式存在很强的相关性,这似乎与某个叫Bregman 散度的数学概念有关,从形式和原理上决定了两者在代价函数领域存在交叠。从应用角度看,我们经常用范数的p次方来定义代价函数,从某种意义上,这个平方只是在进行距离方向的消除,而代价本身也能从某种意义上理解成与目标的距离。代价函数同样也能看作是最大似然估计中由变量分布自然而然带来的数学关系,所以距离和概率“意外地”在代价函数的领域发生重合。
$$p(e) \propto \exp\left( -\frac{|e|^p}{b} \right) \implies \text{代价函数} = \|e\|_p^p$$
经过更详细的整理,我们可以发现p等于1的范数构成了满足拉普拉斯分布的变量的代价函数,而 $p$等于2的范数平方构成了满足高斯分布的代价函数。我们可以同样从范数的角度推理得到满足其他分布的代价函数,泛化到一般 $p$时,对应的是“广义正态分布”。
马氏范数
$L_2$范数 $∥e∥^2_2=e^Te $假设所有方向的误差“同等重要”。但在实际中:
- 不同传感器的噪声协方差不同(IMU 的加速度计和陀螺仪噪声不同)。
- 不同方向的测量精度不同(x 方向精度高,y 方向精度低)。
马氏范数的思想:用协方差矩阵的逆作为权重,让不同方向的误差按其不确定性加权。
定义
$$\|e\|_{\Sigma^{-1}}^2 = e^T \Sigma^{-1} e$$
注意到其中存在一个 $\Sigma^{-1}$,该项就是误差协方差的逆构成的信息矩阵,其对协方差大的项能够降低权重,而协方差小的就提升权重,实现更智能的权重调控。
马氏距离
$$d_M(x, y) = \sqrt{(x - y)^T \Sigma^{-1} (x - y)}$$
几何理解
L2 范数:∥e∥22=eTe∥e∥22=eTe,等值线是圆(所有方向同等权重)。
马氏范数:∥e∥Σ−12=eTΣ−1e∥e∥Σ−12=eTΣ−1e,等值线是椭圆。
- 椭圆的长轴方向:Σ−1Σ−1 特征值小的方向(不确定性大,权重小)。
- 椭圆的短轴方向:Σ−1Σ−1 特征值大的方向(不确定性小,权重大)。
几何意义:马氏范数把“球形误差”拉伸成“椭球形误差”,让不同方向的误差按其不确定性加权。
概率来源
马氏范数直接来自多维高斯分布的最大似然:
$$p(e) = \frac{1}{(2\pi)^{n/2} |\Sigma|^{1/2}} \exp\left( -\frac{1}{2} e^T \Sigma^{-1} e \right)$$
取负对数:
$$-\log p(e) = \frac{n}{2} \log(2\pi) + \frac{1}{2} \log |\Sigma| + \frac{1}{2} e^T \Sigma^{-1} e$$
$$-\log p(e) \propto \frac{1}{2} e^T \Sigma^{-1} e$$
马氏范数平方的定义
$$\|e\|_{\Sigma^{-1}}^2 = e^T \Sigma^{-1} e$$
负对数似然与马氏范数的关系
$$-\log p(e) = \frac{1}{2} \|e\|_{\Sigma^{-1}}^2 + \text{常数}$$
最大似然估计等价于最小化马氏范数平方
$$\max p(e) \iff \min \|e\|_{\Sigma^{-1}}^2$$
所以,马氏范数平方 = 多维高斯分布的负对数似然(忽略常数)。
Huber 范数
马氏范数针对 $L_2$没有权重的问题进行了优化,但是并没有解决 $L_2$对外点敏感的问题。一点突然的扰动会对代价产生很大的影响。反观 $L_1$鲁棒性很高,只不过在原点不可导。为了解决外点敏感的问题,Huber范数通过规定了一个分段函数
$$\rho_H(e) = \begin{cases} \frac{1}{2} e^2 & |e| \le \delta \\ \delta |e| - \frac{1}{2} \delta^2 & |e| > \delta \end{cases}$$
通过在 $\delta$处分类讨论,使得大于 $\delta$的误差导数被约束在符号函数上,最终反映为常数。而当误差等于阈值的时候,代价函数连续可导且导数也连续。
Huber 的几何直觉
- 小误差:抛物面(L2)。
- 大误差:V 形(L1)。
- 整体形状:靠近原点像抛物面,远离原点像 V 形。
在VIO/BA问题中,马氏范数用来解决残差的可信度加权,然后鲁棒核用来处理外点的影响。鲁棒核有 Huber、Cauchy 等多种形式,本仓库实际采用的是柯西(Cauchy)核:视觉项用 $\tfrac12\ln(1+\|r\|^2)$,IMU 项用 $50\ln(1+\|r\|^2/100)$。两者最本质的区别在大误差下的行为——Huber 的代价线性无界增长,而柯西核会饱和到有限值。
