try ai
科普
编辑
分享
反馈
  • 前向-后向平滑器

前向-后向平滑器

SciencePedia玻尔百科
核心要点
  • 平滑使用数据集中的所有观测值(包括过去和未来的信息)来提供比滤波(仅使用过去和现在的数据)更准确的状态估计。
  • 该算法通过两次递归传递来运行:一次是累积过去证据的前向传递(滤波),一次是整合未来证据的后向传递。
  • 它根本上依赖于状态空间模型的马尔可夫性质,该性质允许问题被分解为以当前状态为中心的两个条件独立的部分。
  • 前向-后向平滑器是期望最大化(EM)算法的关键组成部分,它使得在存在隐藏变量的情况下学习模型参数成为可能。

引言

在许多科学和工程领域,一个核心挑战是仅根据一系列带噪声或间接的测量来揭示一个随时间演变的隐藏过程。一种常见的方法是“滤波”,这是一种实时方法,它能在给定截至当前时刻所有证据的情况下,提供对当前状态的最佳估计。然而,如果我们能等到所有数据都收集完毕,就可以进行更准确的回溯性分析。这个过程被称为“平滑”,它利用相对于某个时间点的过去和未来的信息,以获得显著更精细的理解。前向-后向平滑器是优雅而高效地完成这项任务的经典算法。

在本文中,我们将全面探索前向-后向平滑器,它是现代估计理论的基石。第一章“原理与机制”将剖析该算法的核心逻辑,从其在隐马尔可夫模型中的概率基础,到其在离散和连续系统中的实现细节。我们将看到它如何巧妙地融合来自两个方向的证据,从而清晰地揭示隐藏的现实。随后,“应用与跨学科联系”一章将展示该算法的巨大影响,揭示同一个基本思想如何驱动高保真音频处理、赋能机器学习、推动行星天气预报,并连接看似迥异的科学领域。

原理与机制

想象一下,你是一名侦探,正在调查一桩持续数日的复杂案件。每天都会有一条新线索(yty_tyt​)出现,揭示案件的真实、隐藏状态(xtx_txt​)。你的任务是弄清楚每一步到底发生了什么。

你可以实时工作。第一天,你得到线索 y1y_1y1​ 并形成关于状态 x1x_1x1​ 的理论。第二天,你得到线索 y2y_2y2​,这有助于你更新关于 x2x_2x2​ 的理论,或许也让你稍微修正对 x1x_1x1​ 的看法。这种在线的、逐时更新你对当前状态信念的过程,使用的是截至此刻的所有证据,被称为​​滤波​​。在数学上,在时间 ttt,你试图确定的是概率分布 p(xt∣y1:t)p(x_t | y_{1:t})p(xt​∣y1:t​)。

但如果你等到一周结束,所有的证据 y1,y2,…,yTy_1, y_2, \dots, y_Ty1​,y2​,…,yT​ 都摆在你的桌上呢?你现在可以纵览全局了。来自周五的线索(yTy_TyT​)可能会极大地改变你对周一发生的事情(x1x_1x1​)的解读。这种使用全部证据(包括相对于目标时间点来自未来的信息)来提炼你对过去的理解的过程,被称为​​平滑​​。在这里,目标是为任何过去的时间 ttt 找到 p(xt∣y1:T)p(x_t | y_{1:T})p(xt​∣y1:T​)。因为使用了更多信息,平滑估计几乎总是比滤波估计更准确——不确定性更小。

这种区别不仅仅是学术上的。它就像实时跟踪你汽车位置的GPS(滤波)和电影视觉效果团队在后期跟踪视频文件中的物体以无缝插入CGI角色(平滑)之间的区别。一个是线上的、即时的;另一个是离线的、精确的。此外还有折衷方案,比如​​固定延迟平滑​​,即你估计一个固定的、短暂时间之前的状态(p(xt−L∣y1:t)p(x_{t-L} | y_{1:t})p(xt−L​∣y1:t​)),这能让你在不必等待所有未来数据的情况下,获得比滤波更精细的估计。

但是,我们如何才能优雅地融入未来的知识,而又不至于创建一个错综复杂的依赖网络呢?答案在于这些模型核心处一个极其简单的思想。

马尔可夫分离

我们所描述的系统,即隐马尔可夫模型(HMMs)或状态空间模型,建立在一个强大的假设之上:​​马爾可夫性质​​。简单来说,它指出在给定现在的情况下,未来独立于过去。要确定系统下一步走向何方(xt+1x_{t+1}xt+1​),你只需要知道它现在在哪里(xtx_txt​)。你不需要知道它如何到达那里的全部历史。

这个性质创建了一个清晰的“因果链”结构,我们可以将其可视化。状态 xtx_txt​ 形成一条主干,每个状态发出自己的观测值 yty_tyt​。

loading

仔细看这个图。如果你想知道过去的观测值(y1,…,yt−1y_1, \dots, y_{t-1}y1​,…,yt−1​)如何与未来的观测值(yt+1,…,yTy_{t+1}, \dots, y_Tyt+1​,…,yT​)相关联,你会发现它们之间的每一条路径都必须经过状态 xtx_txt​。这意味着如果我们知道状态 xtx_txt​,那么过去和未来的观测值就变得条件独立了。状态 xtx_txt​ 作为一个完美的摘要,一个信息的瓶颈。它将过去与未来“屏蔽”开来。

这种“马尔可夫分离”是解锁平滑的关键。它允许我们将“给定所有数据 y1:Ty_{1:T}y1:T​ 来推断 xtx_txt​”这一问题分解为两个独立的、可管理的部分:

  1. 过去和现在的观测值(y1:ty_{1:t}y1:t​)告诉我们关于 xtx_txt​ 的什么信息?
  2. 未来的观测值(yt+1:Ty_{t+1:T}yt+1:T​)告诉我们关于 xtx_txt​ 的什么信息?

通过应用贝叶斯法则,我们发现平滑分布正比于两个项的乘积,一个前向看,一个后向看:

p(xt∣y1:T)∝p(xt∣y1:t)⏟前向传递(滤波)×p(yt+1:T∣xt)⏟后向传递(未来似然)p(x_t | y_{1:T}) \propto \underbrace{p(x_t | y_{1:t})}_{\text{前向传递(滤波)}} \times \underbrace{p(y_{t+1:T} | x_t)}_{\text{后向传递(未来似然)}}p(xt​∣y1:T​)∝前向传递(滤波)p(xt​∣y1:t​)​​×后向传递(未来似然)p(yt+1:T​∣xt​)​​

这个方程是​​前向-后向平滑器​​的核心。它告诉我们,我们对状态 xtx_txt​ 的平滑信念是一个美妙的综合体:它是我们(来自过去的)滤波信念,被一个量化了“鉴于之后发生的一切,该状态有多合理”的项所“修正”。

算法:双向通道

要将这个优雅的思想转化为一个可行的算法,我们只需计算这两项。这通过一个两遍扫描的过程来完成。

前向传递

第一项 p(xt∣y1:t)p(x_t | y_{1:t})p(xt​∣y1:t​),其实就是一个标准滤波算法的结果。我们定义一个​​前向变量​​,通常表示为 αt(i)\alpha_t(i)αt​(i),它代表看到前 ttt 个观测值并且在时间 ttt 处于状态 iii 的联合概率,即 αt(i)=P(y1:t,xt=Si)\alpha_t(i) = P(y_{1:t}, x_t = S_i)αt​(i)=P(y1:t​,xt​=Si​)。我们可以通过前向递归高效地计算它,从时间 t=1t=1t=1 扫描到 TTT。在每一步,我们将前一步的解向前扩展一步,并融入新的观测值。这个传递过程收集了所有来自过去的证据。

后向传递

第二项 p(yt+1:T∣xt)p(y_{t+1:T} | x_t)p(yt+1:T​∣xt​) 则是“后向”魔术发生的地方。我们定义一个​​后向变量​​ βt(i)=P(yt+1:T∣xt=Si)\beta_t(i) = P(y_{t+1:T} | x_t = S_i)βt​(i)=P(yt+1:T​∣xt​=Si​),它是在时间 ttt 处于状态 iii 的条件下,观测到所有未来数据的概率。与前向传递一样,这也可以通过其自身的高效递归来计算,但这次我们是从时间 t=T−1t=T-1t=T−1 向后扫描到 1。递归从末尾开始,此时对所有状态 iii 都有 βT(i)=1\beta_T(i) = 1βT​(i)=1(观测到没有未来数据的概率为 1)。然后,在每一步中,它都融入一个来自未来的观测值。

交汇

一旦我们运行了两次传递并存储了结果,我们就有了对于每个状态 iii 和时间 ttt 的 αt(i)\alpha_t(i)αt​(i) 和 βt(i)\beta_t(i)βt​(i)。此时,计算平滑概率就变得很简单了。两个变量相遇,我们就可以找到在给定所有观测值的条件下,在时间 ttt 处于状态 iii 的概率:

P(xt=Si∣y1:T)=αt(i)βt(i)∑jαt(j)βt(j)P(x_t = S_i | y_{1:T}) = \frac{\alpha_t(i) \beta_t(i)}{\sum_{j} \alpha_t(j) \beta_t(j)}P(xt​=Si​∣y1:T​)=∑j​αt​(j)βt​(j)αt​(i)βt​(i)​

让我们通过一个简单的例子来具体说明。想象一个系统有两个状态 S1S_1S1​ 和 S2S_2S2​,我们观测到序列 (y1,y2,y3)(y_1, y_2, y_3)(y1​,y2​,y3​)。我们想求系统在时间 t=2t=2t=2 时处于状态 S1S_1S1​ 的概率,即 P(x2=S1∣y1:3)P(x_2=S_1 | y_{1:3})P(x2​=S1​∣y1:3​)。前向-后向算法告诉我们,这个概率正比于 α2(S1)β2(S1)\alpha_2(S_1) \beta_2(S_1)α2​(S1​)β2​(S1​)。

  • 前向传递计算 α2(S1)\alpha_2(S_1)α2​(S1​),即截至该时间点的证据路径的概率:从某个地方开始,在 t=2t=2t=2 时移动到状态 S1S_1S1​,并生成观测值 (y1,y2)(y_1, y_2)(y1​,y2​)。
  • 后向传递计算 β2(S1)\beta_2(S_1)β2​(S1​),即给定当前状态下未来证据的概率:从 t=2t=2t=2 时的状态 S1S_1S1​ 开始,生成未来观测值 y3y_3y3​ 的概率是多少? 最终的平滑概率结合了这两部分证据,并进行适当的归一化。

这个框架出奇地强大。例如,我们不仅可以问系统处于什么状态,还可以问它在做什么。我们可以计算在给定所有证据的情况下,在时间 ttt 从状态 iii 转移到状态 jjj 的平滑概率。这个量结果有一个优雅的形式,它完美地展示了后向传递的作用:

P(xt+1=j∣xt=i,y1:T)=aij P(yt+1∣xt+1=j) βt+1(j)βt(i)P(x_{t+1}=j | x_t=i, y_{1:T}) = \frac{a_{ij} \, P(y_{t+1}|x_{t+1}=j) \, \beta_{t+1}(j)}{\beta_t(i)}P(xt+1​=j∣xt​=i,y1:T​)=βt​(i)aij​P(yt+1​∣xt+1​=j)βt+1​(j)​

这里,aija_{ij}aij​ 是原始的转移概率。这个公式展示了我们关于这次转移的信念是如何被修正的。它被状态 jjj 解释下一个观测值 yt+1y_{t+1}yt+1​ 的好坏程度以及后向消息的比率所缩放。封装在 β\betaβ 中的来自遥远未来的证据,追溯回来告诉我们哪些转移比我们最初认为的更可能。

实践中的平滑:从理论到实践

真实世界很少像两状态模型那样干净。系统可能是非线性的,变量可能是连续且非高斯的。在这些复杂的场景中,我们无法再精确计算 α\alphaα 和 β\betaβ。我们必须进行近似。这就是​​序贯蒙特卡洛​​(Sequential Monte Carlo)方法,也称为​​粒子滤波器​​的领域。

其思想是用一大群加权样本(或称“粒子”)来表示概率分布。前向传递变成了一个粒子滤波器,它随时间传播并重新加权这些粒子。平滑面临的挑战是在后向传递中该怎么做。一种天真的方法是回溯每个最终粒子的祖先,但这常常因为一个称为​​路径退化​​的问题而彻底失败。在前向滤波器中,重采样步骤用于将粒子集中在高概率区域。一个副作用是,经过许多步骤后,大多数粒子可能共享一个早期的共同祖先。粒子的“家谱”会崩溃。如果你接着尝试采样平滑路径,你会发现你只是在对一个单一、贫乏的历史进行微小的变动采样。

解决方案是一个巧妙的、基于粒子的后向递归版本,通常称为​​前向滤波-后向模拟(FFBS)​​。后向传递不是确定性地回溯单个祖先,而是从前一时间步的粒子集合中采样一个祖先。选择一个粒子作为父代的概率,正比于其原始的前向传递权重以及它转移到我们已采样出的子代粒子的转移概率。这使得后向采样的路径可以在不同的祖先谱系之间跳跃,探索更丰富的合理历史集合,从而缓解路径退化问题。这种能力是有代价的;对这个后向传递的一个朴素实现可能具有 O(TN2)\mathcal{O}(T N^2)O(TN2) 的计算复杂度,其中 NNN 是粒子数,这使得它计算量很大。

最后,即使有最优雅的算法,我们仍受限于我们计算机的物理现实。有两个实际的棘手问题等待着任何实现者。

首先是​​数值下溢​​。该算法涉及将长串的概率相乘。由于概率是小于1的数,它们的乘积可能变得极小,小到计算机的浮点表示会将其舍入为零。后向消息 βt(i)\beta_t(i)βt​(i) 特别容易出现这种情况。标准的解决方案是在对数域中工作。我们不是将概率相乘,而是将它们的对数相加。为了处理递归中的求和,我们使用一个称为 ​​log-sum-exp​​ 技巧的数值稳定函数。这种从概率空间到对数空间的简单转换,区分了一个在任何非平凡问题上都会失败的算法和一个稳健可靠的算法。

其次,对于线性高斯模型(著名的​​卡尔曼平滑器​​)这一特殊情况,算法涉及矩阵求逆。如果模型的过程噪声为零或非常小,算法可能会变得过于自信,导致协方差矩阵是病態或奇异的。试图对这样的矩阵求逆是数值灾难的根源,它会将微小的舍入误差放大为灾难性的失败。确保模型包含一些过程噪声(Q≻0Q \succ 0Q≻0)对于保持这些矩阵的良好性质和使平滑器数值稳定至关重要。

从侦探想更清楚地审视过去的简单愿望出发,我们经历了一趟旅程,穿越了优雅的数学原理、强大的递归算法以及实现的实际挑战。前向-后向平滑器以其各种形式,证明了对不确定性进行推理的力量,展示了如何通过基于原则地融合来自过去和未来的证据,将一个隐藏的世界清晰地呈现出来。

应用与跨学科联系

既然我们已经掌握了前向-后向平滑器的原理和机制,我们就可以退后一步来欣赏全局。这台优雅的数学机器在何处找到了它的用武之地?理解引擎如何工作是一回事,但看到它驱动船只穿越海洋或探测器飞向另一个星球则完全是另一回事。前向-后向算法的故事是一个关于深刻且往往令人惊讶的联系的故事,是科学思想统一性的证明。这是一个在各学科间产生共鸣的思想,从解码我们基因的低语到预测我们整个星球的天气。

回顾的艺术:完善我们的视角

让我们从一个简单、具体的想法开始。想象你正在处理一段录音。你应用一个滤波器来去除一些不想要的噪声。任何实用的实时滤波器——一种“因果”滤波器——都是通过审视已经经过的声音来工作的。这个过程虽然有用,但不可避免地会引入轻微的延迟或“相位失真”。不同频率的延迟量不同,从而微妙地改变了波形。滤波器由于其只向后看的本质,提供了一个略微扭曲的视角。

但如果我们不赶时间呢?如果我们拥有完整的录音,并且我们的目标是尽可能高的保真度,没有任何失真呢?一个巧妙的技巧应运而生:首先,我们从头到尾对信号进行滤波。然后,我们将结果反转,再从尾到头对其进行反向滤波。前向传递中引入的任何相位失真都会被后向传递完美抵消。结果是一个“零相位”的滤波信号。每个特征的时间点都得到了完美保留;滤波器的效果精确地在时间上居中,而不是滞后。这种技术被称为前向-后向滤波,是高保真音频和图像处理的基石,在这些领域中,保持信号的原始结构至关重要。

这个简单的、确定性的过程让我们初步领略了前向-后向哲学的魅力:要获得对时间 ttt 事件最真实的描绘,我们不仅必须考虑导致它的所有因素,还必须考虑其后发生的一切。

拨开迷雾:从噪声到知识

然而,真实世界很少像数字录音那样干净。我们的测量是模糊的、不完整的,并且充满了噪声。我们常常试图通过一系列不确定的观测来跟踪一个隐藏的过程——比如一颗卫星的真实轨迹,或一个电路中的真实电压。这就是概率状态空间模型的世界,也是前向-后向平滑器的天然家园。

想象一下我们正在跟踪一个物体,但在某个特定时刻,我们的传感器失灵了。我们有一串观测数据,然后是一个缺口,然后观测又恢复了。一个简单的“前向滤波器”,比如著名的卡尔曼滤波器,可以在缺口期间根据它所看到的所有数据做出预测。只看过去,这是它能做的最好的了。

但一旦整个观测序列完成,我们可以做得更好。前向-后向平滑器就派上用场了。前向传递将信息从过去传播到缺失点。后向传递从数据末尾开始,将信息从未来传播回缺失点。在缺口的位置,这两股信息流——一股承载着过去的记忆,另一股承载着未来的知识——被结合起来。结果是对隐藏状态的最佳估计,一种平滑插值,其准确性远超简单的向前预测所能达到的水平。该算法通过确保估计与前后发生的事情都一致,从而优雅地“填补了空白”。

这不仅仅是关于缺失数据。即使对于已观测到的点,平滑估计也总是比滤波估计更准确,因为它使用了更多的信息。滤波器给你“当下”的最佳猜测,而平滑器则给你“事后”的最终定论。

这个原理正是无数应用的核心。在计算生物学中,我们可能通过观察基因启动子产生的 mRNA 分子的带噪声计数来跟踪其隐藏状态——是‘开启’还是‘关闭’。一个简单的滤波器可能会给我们一个关于启动子活性的实时猜测。但是对整个实验数据进行完整的前向-后向分析,会给我们一个更精细、更准确的基因行为历史,使我们能够更好地理解基因调控的动态。

机器中的幽灵:学习游戏规则

到目前为止,我们都假设自己知道“游戏规则”——即状态间转移的概率和测量噪声的性质。但如果我们不知道呢?如果我们只有观测数据,并想学习潜在的模型本身呢?这就是前向-后向算法展示其最深层力量的地方,作为机器学习引擎的核心组件。

考虑一下期望最大化(EM)算法,这是一种在存在隐藏变量的情况下寻找模型参数的强大通用方法。该算法以一个优美的迭代循环进行。在“期望”(E)步骤中,它使用当前对模型参数的最佳猜测来推断隐藏状态。在“最大化”(M)步骤中,它使用这些推断出的隐藏状态来找到一组新的、更好的模型参数。

但是,“推断隐藏状态”意味着什么呢?一个天真的方法可能是找到单一最可能的隐藏状态序列。一个更强大、也是 EM 算法所采用的方法是,在给定所有观测值的情况下,计算每个时刻隐藏状态的完整后验概率分布。而什么工具能恰好提供这个呢?正是前向-后向平滑器。像 P(xt=i∣y1:T)P(x_t = i | y_{1:T})P(xt​=i∣y1:T​) 这样的平滑概率,正是 E 步骤所需的“软分配”或期望值。我们使用平滑器来描绘一幅隐藏世界的完整概率图景,然后在 M 步骤中,我们调整模型,使这幅图景尽可能地明亮清晰。

这种协同作用并不仅限于简单模型。即使在深度学习的现代,我们可能使用复杂的神经网络来建模隐藏状态和观测值之间的关系,其基本逻辑依然成立。前向-后向算法仍然可以用来对隐藏状态序列进行精确推断,为神经网络参数的学习提供了必要的“脚手架”。该算法提供了一种基于原则的方法来处理时间不确定性,这是深度学习模型自身可能难以解决的问题。这种经典算法与现代函数逼近器的优雅结合,正处于语音识别和生物信息学等领域的人工智能研究的前沿。

条条大路通罗马:变分观点与概率观点的统一

科学中最美的启示之一,就是当两种看似不同的哲学思想通向同一个目的地时。状态估计就是如此。我们已经看到,前向-后向平滑器是一种递归的、概率性的方法,它一步一步地构建解决方案。还有另一种宏大的哲学:变分方法。

在像用于天气预报的 4D-Var 这样的方法中,目标是找到大气在某个时间窗口内的单一轨迹,使其最佳地拟合所有的卫星、地面和气球观测数据,同时还要遵守物理定律(即模型)。这被构建成一个巨大的优化问题:找到最小化成本函数的轨迹,该成本函数衡量轨迹、观测值和背景预报之间的不匹配程度。这是一种全局的、“一次性完成”的视角。

这种全局优化怎么可能与我们递归的、逐步的平滑器联系起来呢?这种联系是深刻的。对于线性高斯(或已线性化)的系统,卡尔曼平滑器(即前向-后向算法)找到的解与变分方法找到的解在数学上是等价的。前向-后向平滑器正是一种极其高效的递归算法,用于解决 4D-Var 用暴力数值方法处理的那个完全相同的海量优化问题。这种等价性是现代数据同化的基石,它桥接了贝叶斯推断的统计世界与变分法的优化世界。

扩展宇宙:从空间到样本

前向-后向的概念是如此基础,以至于它会以各种伪装出现在其他领域。在阵列信号处理中,工程师面临着用天线阵列定位无线电或声纳源的问题。当信源是“相干的”(例如,一个直达信号及其反射信号)时,像 MUSIC 这样的标准高分辨率方法就会失效。解决方案是“空间平滑”,这是一种涉及对重叠子阵列的协方差矩阵进行平均的技术。令人惊讶的是,存在一种比纯前向版本更强大的“前向-后向空间平滑”技术,它能解析更多的相干信源。这里的“前向”和“后向”指的不是时间,而是子阵列在空间中的方向。这是一个美丽的类比,展示了对不同视角进行平均的普适力量。

这一原理也出现在高级模拟技术中。当我们需要从隐藏状态的平滑分布中生成样本时,会使用一种称为“前向滤波-后向采样”的程序。它首先运行一次前向传递以收集来自过去的信息,然后在后向传递中使用这些信息来采样一条状态轨迹,从末端开始向起点移动。此外,在高度复杂的混合模型中,比如那些混合了离散开关和连续动态的模型,前向-后向思想可以用来精确处理问题的一部分,从而使整个算法更高效——这一策略被称为 Rao-Blackwellization。

从一个简单的滤波技巧,到机器学习的引擎,再到行星天气预测的核心,前向-后向算法证明了一个简单而强大的思想:真正的理解需要双向观察。它提醒我们,要知道我们身在何处,我们不仅必须了解我们从何而来,还必须了解我们将往何去。

... -> x_{t-1} -> x_t -> x_{t+1} -> ... | | | v v v ... y_{t-1} y_t y_{t+1} ...