考虑系统
$$
\ tag 1
H \ delta x = -g
$$
其中$ H $和$ g $是粗麻布和渐变形式为$ f(x)= e(x)^ Te(x)$的某些成本函数$ f $。函数$ e(x)= z- \ hat {z}(x)$是误差函数,$ z $是观测(测量),$ \ hat {z} $将估计的参数映射到测量预测。

在许多SLAM算法的每次迭代中都会遇到这种最小化的情况,例如,可以将$ H $视为捆绑调整Hessian。假设$ x =(x_1,x_2)^ T $,并让$ x_2 $是我们要边缘化的一些变量。许多作者声称,这种边缘化等于解决较小的班轮系统$ M \ delta x_1 = -b $,其中$ M $和$ g $是通过对(1)应用Schur补码来计算的,即if
$$ H =
\开始{pmatrix}
H_ {11}和H_ {12} \\
H_ {21}和H_ {22}
\ end {pmatrix}
$$
然后
$$
M = H_ {11} -H_ {12} H_ {22} ^ {-1} H_ {21}
$$

$$
b = g_1-H_ {12} H_ {22} ^ {-1} g_2
$$

我听不懂为什么那等于边缘化...我了解高斯边缘化的概念,并且我知道如果我们使用规范表示法(使用信息矩阵),则在边缘化中出现了舒尔补数,但是我看不到链接与线性系统。

编辑:我了解舒尔的补码是如何在用$ a,b $高斯变量对$ p(a,b)$进行边际化或条件化的过程中出现的,如Josh Vander Hook提供的链接中所示。我得出了相同的结论,但是使用规范表示法:如果我们以规范形式表示高斯$ p(a,b)$,则$ p(a)$是高斯,其信息矩阵是该矩阵的Schur补。 $ p(a,b)$等的信息矩阵。现在的问题是,我不了解舒尔补语在捆绑调整的边际化中如何出现(作为参考,在最近的这些文章中:c-klam(如果您需要,请参见第3页)想要看的东西)和这些(称为边缘化的部分)。在这些论文中,单束调整(BA)迭代的执行方式与我最初在问题中描述的方式类似。我觉得边缘化之间存在简单的联系我所缺少的高斯和BA中的边际化,例如,可以说优化$ f $(一次迭代)等效于在密度为$$ e ^ {-\ frac {1} {2之后,绘制随机变量}(x- \ mu)^ T \ Sigma ^ {-1}(x- \ mu)} $$其中$ \ Sigma $是$ f $的Hessian $ H $的倒数,而$ \ mu $是真值f或$ x $(或该值的近似值),而边缘化此密度等于在捆绑中使用Schur的补数?我真的很困惑...

评论

您是在问为什么schur补语不属于MV高斯的边缘化?还是您问为什么捆绑调整类型优化中会出现相同的形式?

基本上,问题在于它为什么以及如何在BA中出现。我编辑了问题以弄清楚。

感谢您的澄清!我现在明白了。我已经更新了我的答案,希望其他人也能有所帮助。在这一点上,我认为我们已经将其击败了。如果您还有其他问题,建议您提交一个新问题。

#1 楼

请参阅演练

Schur补语有助于完成闭式导出,但不是必需的。这只是高斯和协方差矩阵的一个很好的方便属性。


在这些论文中,单束调整(BA)迭代的执行方式与我最初在问题中描述的方式类似。


不断出现边际/舒尔补数的原因是所有目标函数,噪声模型和(在某种意义上)优化方法都是相同的。

所有问题都试图找到一个向量$ x $可使观测值$ z = h(x)+ \ eta $的可能性最大化,其中$ \ eta $是一些高斯噪声。 $ h(x)$通常不是线性的,但我们对其进行线性化处理,以使$ h(x)\大约h(x)+ H_x(ax)$其中(抱歉表示),$ H $是雅可比行列式。 br />

我觉得边缘化高斯与我所缺少的BA边缘化之间存在简单的联系。


每个人和他们的母亲都认为观测值$ z $中的噪声是高斯噪声。如果构造高斯噪声项,则会发现类似$ e ^ {(zh(\ hat {x}))^ T \ Sigma ^ {-1}(zh(\ hat {x}))} $(分母取模)

但是,这不是唯一的表述。我们还可以将误差(观测值和状态估计值的差异)最小化。仔细观察发现,使观察的可能性最大化等效于找到向量$ x $,该向量可使误差$ \ eta = zh(x)$最​​小。

,因此,将均方误差$最小化(\ eta ^ T \ eta)$与找到$ x $相同,这会使观测值$ z $的可能性最大化。因此,最小化均方误差和最大化高斯观测似然性会产生相同的目标函数。*

如果替换线性近似,则需要最小化

$$ J = (zh(x)+ H_x(ax))^ T(zh(x)+ H_x(ax))$$

如果将其相乘,并通过求导数来使其最小化,则会得到上面显示的解决方案。在给定高斯噪声的状态向量的任何ML估计中,这都是相同的。据我所知,各种估算方法的差异总结如下。


EKF仅执行一个优化步骤,并且仅使用最后的测量值和当前状态近似值
其他方法(例如IteratedEKF)使用解决方案的许多迭代,但仅使用最新的度量值。
如果您负担得起使用多个度量值的费用,则您到达的是更大的状态(该状态的一个副本)每个时间步的向量,以及观察值的堆叠向量)。 BA会在这个更大的状态上进行优化,但也称为迭代加权最小二乘。更一般地说,这些是批估计器。
在计算机视觉世界中,有一个很好的地方,那就是巨大的状态向量和观察向量具有独立的分量(因为相机无法始终看到世界的所有部分)。利用此结构可以找到传统上称为束调整的函数。
如果您希望放弃高斯噪声假设并评估更大的可能空间,则可以使用基于采样的方法。但是,几乎所有基于采样的方法我都知道样本$ x $(状态),并使用观察值对每个$ x $运行上述估计量之一,然后找到您抽取的样本正确的后验概率。


例如,可以说优化ff(一次迭代)等效于按照密度绘制随机变量...


在这里,你有点不舒服。我们正在绘制样本,这是不正确的,但是通过尝试使误差最小化,我们实际上是在使高斯概率最大化,这是正确的。这就是BA的误差最小化目标,高斯噪声模型(以及由此产生的边缘化(即schur补语))和一般的slam框架之间的关系。它们是相同的,只是跨不同学科通过不同方法发现的。研究不好吗?


* Kinda。在这个推导中确实如此,但是我们确实假设观测噪声到达那里是高斯的。起点不同,而不是路径不同。


评论


$ \ begingroup $
非常感谢您的回答!但是,您的链接无法回答我的问题,为澄清起见,我编辑了该问题,并添加了两篇论文参考资料,这给了您个人资料,您可能已经很熟悉:)
$ \ endgroup $
–灰
16年1月16日在9:14



$ \ begingroup $
我已经更新了答案。对于目前缺少链接,我深表歉意。我可以链接自己的论文,但这是自命不凡的,因此,我将尝试查找一些原始链接(或者也许有人可以插入其中)。
$ \ endgroup $
–乔什·范德·胡克(Josh Vander Hook)
16年1月16日在16:52

$ \ begingroup $
顺便说一句,关于EKF仅执行一个优化步骤的部分令我有些惊讶。这是否意味着如果我从用于状态更新的卡尔曼方程式开始,我就能得出与高斯-牛顿方程式相同的方程式?
$ \ endgroup $
–灰
16年1月17日在11:43

$ \ begingroup $
是的,一次测量和一次更新就更好了。当您重复这些步骤,并且至关重要的是重新线性化系统时,差异就会出现。
$ \ endgroup $
–乔什·范德·胡克(Josh Vander Hook)
16年1月17日在20:39

#2 楼

以下内容主要基于Frank Dellaert和Michael Kaess撰写的“用于机器人感知的因子图”,并附加了注释:

提醒一下,边缘化是关于具有联合密度$ p(x,y) $超过两个变量$ x $和$ y $,我们想将其边缘化或“消除变量”,在这种情况下,我们可以说$ y $:

\ begin {equation}
p(x)= \ int_ {y} p(x,y)
\ end {equation}

对其余变量$求出密度$ p(x)$ x $。

现在,如果密度为均值$ \ boldsymbol {\ mu} $和协方差$ \ mathbf {\ Sigma} $的协方差形式,则划分如下:

\ begin {equation}
p(x,y)= \ mathcal {N}(
%均值
\ begin {bmatrix}
\ boldsymbol \ mu_ {x } \\
\ boldsymbol \ mu_ {y}
\ end {bmatrix},
%协方差
\ begin {bmatrix}
\ mathbf \ Sigma_ {xx} ,\ mathbf \ Sigma_ {xy} \\
\ mathbf \ Sigma_ {yx},\ mathbf \ Sigma_ {yy}
\ end {bmatrix}

\ end {等式}

边际化很简单,因为边际化后,相应的子块$ \ mathbf {\ Sigma} _ {xx} $已经包含$ x $的协方差$ y $,即

\ begin {equation}
p(x)= \ mathcal {N}(
%Mean
\ boldsymbol \ mu_ { x},
协方差
\ mathbf \ Sigma_ {xx}

\ end {equation}

但是,在非线性最小二乘公式中,我们没有协方差
$ \ mathbf {\ Sigma} $,但是我们可以通过以下属性进行估算:

\ begin {equation}
\ mathbf {\ Sigma} = \ mathbf {H} ^ {-1}
\ end {equation}

其中$ \ mathbf {H} $是高斯-牛顿系统中的粗麻布(用$ \ mathbf {J} ^ {T} \ mathbf {J} $近似),恰好发生在当我们试图通过Schur的补码反转Hessian时,我们实际上是:


将$ \ mathbf {H} $取反:以$ \ delta \ mathbf {x} $求解$ \ mathbf {H} = delta \ mathbf {x} = \ mathbf {b} $$

同时执行边缘化以同时删除旧状态。边缘化的$ \ mathbf {H} $(在Schur补码之后)将等效于$ \ mathbf {\ Sigma} _ {xx} ^ {-1}。$

高斯中Schurs补数的推导-Newton

从高斯牛顿系统$ \ mathbf {H} \ delta \ mathbf {x} = \ mathbf {b} $,我们可以得出旧州的边际化$ \ mathbf {x} _ {2} $代数。让我们将系统分解为:
\ begin {equation}
%H
\ begin {bmatrix}
\ mathbf {H} _ {11}和\ mathbf {H} _ {12} \\
\ mathbf {H} _ {21}和\ mathbf {H} _ {22}
\ end {bmatrix}
%x
\开始{bmatrix}
\ delta \ mathbf {x} _ {1} \\
\ delta \ mathbf {x} _ {2}
\ end {bmatrix}
=
%b
\ begin {bmatrix}
\ mathbf {b} _ {1} \\
\ mathbf {b} _ {2}
\ end {bmatrix }
\ end {equation}
如果将块矩阵和向量相乘,我们得到:
\ begin {equation}
%Line 1
\ mathbf { H} _ {11} \ delta \ mathbf {x} _ {1}
+ \ mathbf {H} _ {12} \ delta \ mathbf {x} _ {2}
= \ mathbf { b} _ {1} \\
%第2行
\ mathbf {H} _ {21} \ delta \ mathbf {x} _ {1}
+ \ mathbf {H} _ {22} \ delta \ mathbf {x} _ {2}
= \ mathbf {b} _ {2}
\ end {equation}
现在,如果我们想将美元边缘化\ mathbf {x} _ {2} $,我们只需将上面的第二个等式重新排列为wrt $ \ mathbf {x} _ {2} $像这样:
\ begin {align}
%第1行
\ mathbf {H} _ {21} \ delta \ mathbf {x} _ {1}
+ \ mathbf {H} _ {22} \ delta \ mathbf {x} _ {2}
&= \ mathbf {b} _ {2} \\
%第2行
\ mathbf {H} _ {22} \ delta \ mathbf {x} _ {2}
&= \ mathbf {b} _ {2}-\ mathbf {H} _ { 21} \ delta \ mathbf {x} _ {1} \\
%第三行
\ delta \ mathbf {x} _ {2}
&= \ mathbf {H} _ { 22} ^ {-1} \ mathbf {b} _ {2}-\ mathbf {H} _ {22} ^ {-1} \ mathbf {H} _ {21} \ delta \ mathbf {x} _ {1 } \\
\ end {align}
将上面的$ \ delta \ mathbf {x} _ {2} $代入$ \ mathbf {H} _ {11} \ delta \ mathbf {x} _ {1} + \ mathbf {H} _ {12} \ delta \ mathbf {x} _ {2} = \ mathbf {b} _ {1} $,并重新排列术语,使它是$ \ delta \ mathbf {x} _ {1} $得到:
\ begin {align}
%第1行
\ mathbf {H} _ {11} \ delta \ mathbf {x} _ {1} + \ mathbf {H} _ {12}
(\ mathbf {H} _ {22} ^ {-1} \ mathbf {b} _ {2}
-\ mathbf {H} _ {22} ^ {-1} \ mathbf {H} _ { 21} \ delta \ mathbf {x} _ {1})
&= \ mathbf {b} _ {1} \\
%第2行
\ mathbf {H} _ {11 } \ delta \ mathbf {x} _ {1}
+ \ mathbf {H} _ {12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {b} _ {2}
-\ mathbf {H} _ {12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {H} _ {21}
\ delta \ mathbf {x} _ {1 }
&= \ mathbf {b} _ {1} \\
%第3行
(\ mathbf {H} _ {11}-\ mathbf {H} _ {12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {H} _ {21})\ mathbf {x} _ {1}
&= \ mathbf {b} _ {1}-\ mathbf {H} _ {12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {b} _ {2}
\ end {align}
我们最后得到了Schur补语$ \ mathbf {H} $中$ \ mathbf {H} _ {22} $中的百分比:
\ b egin {align}
\ mathbf {H} / \ mathbf {H} _ {22}:=
\ mathbf {H} _ {11}
-\ mathbf {H} _ { 12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {H} _ {21} \\
\ mathbf {b} / \ mathbf {b} _ {2}:=
\ mathbf {b} _ {1}-\ mathbf {H} _ {12} \ mathbf {H} _ {22} ^ {-1} \ mathbf {b} _ {2}
\ end {align}
如果您想将$ \ delta \ mathbf {x} _ {1} $边缘化,您可以按照上述相同的步骤进行操作,但要加上$ \ delta \ mathbf {x} _ {1} $,留给读者练习;)

评论


$ \ begingroup $
感谢Partha Ghosh,但是对于机器人技术,我们很幸运能够启用MathJax支持,因此最好将这些公式作为文本而不是大图来使用,而无需进一步说明。使用MathJax,您可以轻松创建下标,上标,分数,平方根,希腊字母等,并允许您在机器人技术问答中添加内联和块元素数学表达式。对于快速教程,请看一下如何使用MathJax在此处格式化数学表达式?
$ \ endgroup $
– Mark Booth♦
16-2-27在19:08