
在理解和控制动态系统(从飞行中的无人机到全球天气模式)的探索中,我们不断地与不确定性作斗争。估计一个系统的真实状态——它的位置、速度或方向——是具有挑战性的,因为我们的模型不完美,测量也有噪声。虽然线性系统可以通过经典的卡尔曼滤波器优雅地解决,但现实世界绝大多数是非线性的,这使得简单的方法失效。这种非线性扭曲了我们对不确定性的理解,使精确预测成为一项艰巨的任务。
本文通过引入一个强大而直观的概念——Sigma点,来解决非线性系统中的基本估计问题。我们将超越将世界线性化这一有缺陷的方法,转而学习一种更智能的方式来表示不确定性。通过这次探索,您将了解无迹卡尔曼滤波器(UKF),这是一种建立在Sigma点原理之上的革命性方法。在接下来的章节中,我们将首先深入探讨“原理与机制”,您将学习什么是Sigma点,无迹变换如何工作,以及为什么它能如此决定性地优于像扩展卡尔曼滤波器这样的传统方法。随后,“应用与跨学科联系”一节将展示该方法的多功能性,说明如何将其应用于跟踪机器人的方向、在曲面空间中导航,甚至解决科学和工程中庞大而复杂的系统问题。
真正理解世界,就是要理解它的不确定性。当我们发射火箭、追踪风暴,甚至只是在房间里走动时,我们都在基于不完美的信息做出预测。任何系统的状态——其位置、速度、温度——都无法以绝对的确定性知晓。相反,我们将其视为一团可能性的云,即一个概率分布。任何优秀的估计算法的目标都是追踪这团云如何演变,以及当我们从测量中获得新信息时它如何收缩。
想象一个世界,其中所有的因果关系都是简单而直接的——一个“线性”世界。在这个世界里,如果你用两倍的力推一辆小车,它的加速度就是原来的两倍。如果你对小车位置的不确定性是一团云,当它移动一秒钟后,新的云只是旧的云平移了一下,也许拉伸了一点。如果你的不确定性可以用一个完美的钟形曲线(高斯分布)来描述,那么在任何线性过程之后,它仍然是一个完美的钟形曲线。
这就是最初的卡尔曼滤波器所处的乐园。一个高斯分布仅由两个数值就可完全描述:它的中心(均值)和它的宽度(协方差)。在一个线性高斯世界中,你所需要做的就是追踪这个均值和协方差如何演变。用于预测和更新的贝叶斯公式是精确而简单的。高斯形状被永久地保持着。
但我们的世界并非线性。火箭的加速度非线性地取决于其剩余质量。传感器的电压可能是温度的对数函数。当你将一个漂亮、对称的高斯钟形曲线通过一个非线性函数时,它会被扭曲、偏斜和变形。它不再是高斯分布。它的均值和协方差不再是故事的全部。乐园已逝,我们被迫做出近似。
处理曲线最直接的方法是假装它是一条直线。这就是扩展卡尔曼滤波器(EKF)的核心思想。它用一系列直线段来近似非线性世界,取函数在当前最佳猜测(均值)处的斜率(雅可比矩阵)。
但这个简单的想法有一个致命的缺陷:它根本上是局部的,对函数的整体形状是盲目的。让我们考虑一个有力的、说明性的例子:一个由函数 给出的简单测量模型。假设我们对一个标量状态 的先验信念是一个以零为中心、方差为一的高斯分布,记为 。这意味着我们对 的最佳猜测是 ,但我们知道它很可能在 或 附近。
现在,我们得到了一个测量值 。EKF会怎么做?它在均值 处对 进行线性化。 的导数是 ,在 时为 。EKF看到的是一条完全平坦的直线。它得出结论,测量值 与状态 毫无关系。因此,它的卡尔曼增益——决定在多大程度上信任测量值的项——变为零。EKF完全忽略了测量值,其对 的信念保持不变,永远停留在 。
这显然是荒谬的。我们知道,如果 分散在零附近,那么 将永远是正数。我们期望看到的测量值的真实平均值 实际上是 。而EKF预测的平均值是 。它不仅仅是有点错误;它是根本性地错误,因为它的线性近似完全错过了函数的曲率。这种盲目性促使我们去寻找一种更智能的方式来处理非线性。
在这里,我们迎来了一个深刻的视角转变,这是无迹卡尔曼滤波器背后的核心思想:
近似一个概率分布比近似一个非线性函数更容易。
与其简化世界(函数),不如让我们对不确定性(分布)进行更好、更有代表性的描述。我们通过用一小组精心挑选的代表性点来取代我们连续的不确定性云来实现这一点。这些点被称为Sigma点。它们不是随机样本;它们是确定性选择的分布“骨架”,旨在捕捉其最重要的特征:均值和协方差。
对于一个具有 维状态的系统,标准的构造仅使用 个Sigma点。这个方法简单而优雅:
结果是一个小的、对称的点星座,当被适当地加权时,它们与我们原始的高斯分布具有完全相同的均值和协方差。想象一下,对于一个二维状态,你会在中心有一个点,另外四个点形成一个十字,总共五个点,它们可以代表整个二维钟形曲线。
一旦我们有了Sigma点,奇迹就发生了。这个过程被称为无迹变换(UT),如下所示:
让我们回到那个抛物线的寓言,,我们的先验信念是 。UT可能会选择三个Sigma点:(均值)、 和 。我们将它们通过 进行传播:
我们的新点云位于 。通过计算它们的加权平均值,无迹变换正确地推断出输出的均值为 。在EKF盲目无措的地方,UKF“看到”了函数的曲率,因为它的Sigma点冒险探索了远离均值的函数区域。
这不是一次性的技巧。分析研究表明,UKF的近似误差,或称偏差,显著小于EKF。对于一个方差为 的系统,EKF的偏差通常是 的量级,而UKF的偏差是 的量级。当不确定性 变小时,UKF的估计值收敛到真值的速度要快得多。
UKF的力量和优雅是不可否认的,但它们也伴随着代价和一系列实际挑战。
首先,计算成本。UKF避免了计算雅可比矩阵,如果系统动态复杂,这可能是一个巨大的优势。然而,它必须通过模型传播 个Sigma点。更重要的是,生成Sigma点需要对 的协方差矩阵进行矩阵分解(如Cholesky分解),这是一个随状态维度立方 扩展的操作。这与EKF的复杂度等级相同,但常数因子可能使其中一个在特定问题上更快。对于非常高维的系统, 次函数求值可能成为瓶颈。
其次,调优的艺术。Sigma点的放置及其权重取决于一组调优参数,通常称为 、 和 。虽然有标准的建议(例如,对于高斯分布, 是最优的),但这些选择对滤波器的稳定性至关重要。一个糟糕的选择可能导致协方差计算中出现负权重。一个外积的加权和只有在所有权重都为非负时,才能保证产生一个有效(半正定)的协方差矩阵。负权重可能导致计算出的协方差出现“负方差”,这在物理上是无意义的,并会导致滤波器灾难性地失败。参数上存在一些约束,比如对扩展参数 的最小值有要求,以确保权重的行为正常。
最后,数值鲁棒性是一个现实问题。在某些条件下——一个病态的协方差矩阵或糟糕的参数选择——Sigma点可能会失去其散布性并全部落在均值之上。这被称为Sigma点坍缩,它会使变换变得无用。一个鲁棒的实现必须包含检查,以检测协方差矩阵何时不再是正定的,或者点的几何散布何时在数值上变得微不足道。为了解决这些问题,已经开发了更高级的版本,如平方根无迹卡尔曼滤波器(SR-UKF)。这些版本不直接传播协方差矩阵,而是传播其矩阵平方根,这从本质上保证了协方差保持半正定,并且在数值上表现得更好。
归根结底,Sigma点的原理代表了巧妙的统计思维对暴力线性化的胜利。它告诉我们,通过选择一小组“聪明”的问题来询问我们的系统,我们可以为一个复杂且不确定的世界描绘出一幅更精确的图景。
现在我们已经熟悉了Sigma点和无迹变换的原理与机制,让我们开启一段旅程。我们将从简单的教科书问题的熟悉领域,进入到这些思想真正大放异彩的广阔而奇妙的领域。您会发现,无迹卡尔曼滤波器(UKF)的天才之处不仅在于其数学上的优雅,更在于其深刻的适应性。它是一把万能钥匙,能够解开我们对那些会让简单工具束手无策的系统的理解。我们将看到,这个单一而优美的思想如何让我们能够追踪机器人的方向,模拟天气,并理解那些(坦率地说)行为不尽如人意的传感器。
现实世界是一个混乱的地方。它很少像我们在学习中初次遇到的系统那样干净或行为良好。函数有尖角,噪声以复杂的方式与状态交织在一起,而且我们往往不只是被动的观察者,而是试图引导系统的主动参与者。正是在这片荒野中,UKF证明了它的勇气。
UKF的一个主要优点是它不要求系统函数是可微的。扩展卡尔曼滤波器(EKF)尽管具有历史重要性,但需要计算雅可比矩阵——一个局部线性化的过程。但如果我们的系统有一个“尖角”或突然的跳变怎么办?考虑一个传感器,它只告诉你一个量是正还是负,就像一个简单的阈值检测器。它的测量函数是一个阶跃函数,或 sign 函数,其导数要么是零要么是无穷大,这使得EKF束手无策。然而,UKF却不会感到任何恐慌。它只是简单地将Sigma点通过这个不连续的函数进行传播,并计算结果的统计数据。这种鲁棒性使其能够处理更广泛的现实世界传感器和系统,即使是那些行为有突变的系统。
此外,困扰我们测量和动态的噪声并不总是在方程末尾的一个简单、温和的加法项。有时,噪声的大小取决于状态本身——这种现象被称为乘性噪声。想象一下,试图测量一个旋转陀螺的速度;当陀螺的角度使其更难被看到时,测量可能会变得更嘈杂。在这些情况下,噪声不仅仅是一个事后的想法,而是系统结构的核心部分。在这里,UKF通过一种称为*状态增广*的技术提供了一个优雅的解决方案。我们只需扩展我们对“状态”的概念,使其包含噪声源本身。通过将噪声项放入我们的状态向量中,我们可以使用标准的UKF机制不仅估计系统的物理状态,还估计噪声的瞬时效应。这个聪明的技巧将一个看似复杂的非加性噪声问题转化为UKF可以轻松解决的标准估计任务。
状态增广这个思想是一个反复出现的主题,当我们考虑带有控制输入的系统时也会遇到。许多系统,从路上的汽车到工厂里的机械臂,并不仅仅是自行演变;它们正在被主动控制。UKF可以通过简单地将已知的确定性控制输入包含在每个Sigma点的函数评估中,来毫不费力地整合它。但如果控制本身是不确定的呢?如果发送给无人机电机的命令没有产生我们预期的精确推力怎么办?再次,我们可以增广我们的状态来包含这种不确定性。通过将不确定的控制视为另一个待估计的状态变量,UKF可以解释其影响,捕捉我们意图的行动与系统实际行为之间复杂的非线性耦合。这是现代机器人学和控制工程中的一项关键能力。
我们的数学工具通常是在平坦、舒适的欧几里得空间中发展起来的。但许多现实世界的问题发生在曲面上。试图在曲面世界中使用平坦世界的数学,就像试图用一张平面地图来导航地球一样——你在边缘和长距离上会遇到严重问题。
一个经典的例子是估计一个角度,比如罗盘航向或机器人的关节角度。角度存在于一个圆上,我们称之为 流形。想象一下,我们的滤波器估计一辆车正朝着略偏正北的方向行驶,角度为 弧度(约 ),但一个传感器读数说航向刚好越过了另一边的线,为 弧度(约 )。实际上,这两个角度非常接近——仅相差 弧度。然而,一个在欧几里得空间中运行的幼稚滤波器会计算出它们的差值为 ,这是一个巨大的误差,表明车辆几乎指向相反的方向!这种“环绕(wrap-around)”误差可能导致滤波器灾难性地发散。同样的问题也出现在平均Sigma点时:如果我们有一个Sigma点在 ,另一个在 ,简单的算术平均会得到一个接近零的结果,这与围绕 的真实点簇相去甚远。
解决方案是尊重空间的几何结构。我们必须教会我们的滤波器,角度的世界是圆形的。这意味着所有的减法和加法都必须“模 ”进行。对于计算新息(innovations),我们必须找到预测和测量之间的最短弧,这个任务非常适合 atan2 函数。对于平均Sigma点,我们必须使用循环统计学的方法来找到圆上的内在均值。通过整合这些原则,我们可以构建出能够在圆上导航而不会掉出边缘的滤波器。
这个概念可以优美地从二维圆扩展到三维旋转世界。估计无人机、卫星或虚拟现实头盔的姿态,涉及到在特殊正交群 上跟踪一个状态,这是所有可能的三维方向的流形。这只是角度问题的一个“成人版”。我们不能简单地相加或平均旋转矩阵。相反,我们在流形的一个局部“平坦”区域,即切空间中进行计算。连接弯曲的旋转流形和平坦的切空间的桥梁,是由李理论中两个优美的数学工具构建的:
一个流形UKF的操作方式是,在切空间中生成其Sigma点作为小向量,使用指数映射将它们作为真实旋转放置在流形上,通过系统动力学传播这些旋转,然后使用对数映射将结果带回到一个公共的切空间,以计算新的均值和协方差。这种抽象几何与实际估计之间美妙的相互作用,使我们能够为从导航航天器到在虚拟世界中跟踪我们自己运动的一切事物,构建强大而一致的滤波器。
UKF的强大功能是以计算成本为代价的。Sigma点的数量随着状态维度的增加而线性增长。对于只有少数几个状态的系统,这不是问题。但对于拥有数千甚至数百万变量的系统,如全球天气模型或国家电网,情况又如何呢?标准的UKF在计算上是不可行的。幸运的是,导致UKF诞生的同样创造性精神也提供了驯服这些巨人的方法。
许多大型系统表现出稀疏性:每个变量只与其少数邻居直接相互作用。巴黎的天气模型受里昂的天气状况强烈影响,但受东京天气的影响则非常微弱且间接。我们可以利用这种结构。我们可以使用稀疏线性代数例程,而不是使用密集矩阵代数,这些例程避免计算和存储所有的零,从而显著减少计算负荷和内存使用。在UKF内部,我们可以更聪明。在传播Sigma点时,我们可以分析系统函数的结构以避免冗余计算。如果一个Sigma点只扰动了某个输出分量不依赖的状态变量,那么就没有必要重新评估该分量。这些优化使我们能够将UKF应用于规模大得多的问题,同时产生与幼稚的密集实现完全相同的结果。
一个更优雅的方法是认识到,一个大系统的并非所有部分都同样具有挑战性。例如,在大气科学或经济学中的许多大规模模型,其结构大部分是线性的,只有少数关键的非线性相互作用。将强大但昂贵的UKF应用于整个系统将是浪费的。这就引出了边缘化或Rao-Blackwell化的混合滤波器的思想。其原理是“分而治之”。我们将状态划分为其庞大的线性部分和其微小的非线性部分。
这种混合方法,可以被看作是由一个单一的、低维度的UKF协调的一组线性滤波器,它提供了两全其美的方案:对于需要它的部分,有UKF的准确性;对于其余部分,有线性卡尔曼滤波器的速度。这证明了成熟的设计原则,使我们能够根据手头问题的内在结构来定制我们的估计工具,从而使棘手的问题变得易于处理。
从不连续的传感器到曲面空间和行星尺度的模型,Sigma点的旅程是卓越的。它展示了一个单一而强大的概念——确定性地对概率分布进行采样——如何能够被调整、扩展和混合,从而在广阔的科学和工程学科领域提供深刻的见解。这是一个美丽的例子,说明数学思维如何为复杂、动态和不确定的世界提供一把通用钥匙。