
科学和自然界中的许多系统都基于我们无法直接观察到的潜在状态或过程运行。我们只能看到其结果、影响以及它们产生的嘈杂信号。从基因序列到卫星图像,再到金融时间序列,我们常常面临从可见证据中推断隐藏原因的挑战。这个在不确定性下进行推理的基本问题,正是统计建模发挥其最大价值的地方。而在完成此任务的最强大工具中,隐马尔可夫模型 (HMM) 占有一席之地。HMM 提供了一个数学框架来对这类系统进行建模,但我们如何才能解锁它们所蕴含的洞见?我们如何计算一个隐藏事件的真实概率,同时考虑到来自过去、现在和未来的所有证据?
本文探讨了优雅而强大的前向-后向归纳原理,它是让我们能够进行这种复杂推理的计算引擎。我们将深入其核心概念和多样化应用。在第一部分原理与机制中,我们将剖析前向-后向算法,将其对所有可能性的概率求和方法与 Viterbi 算法寻找单一最佳路径的方法进行对比。我们还将揭示它在 Baum-Welch 算法中的作用,该算法使模型能直接从数据中学习其自身规则。随后,在应用与跨学科联系部分,我们将见证这种方法在实际中的应用,从解码基因组的秘密、追踪细胞器,到它在信号处理和优化等领域出人意料的用途,揭示了一个透过噪声看清其下隐藏现实的普适原理。
想象一下,你正在听一个朋友在另一个房间说话。你能听到词语,但看不到他们的脸。这些词语是你的观测值;他们潜在的情绪——高兴、悲伤、愤怒——则是隐藏状态。你凭直觉从他们的语气、用词以及话语顺序来推断他们的情绪。从欢快的词语突然转为阴沉的词语可能预示着他们隐藏的情绪状态发生了变化。这种简单的推理行为,其核心正是隐马尔可夫模型 (HMM) 旨在解决的问题。HMM 提供了一种强大的数学语言,用于对那些我们只能看到结果而非原因的系统进行推理。
在对这个迷人世界进行介绍之后,现在让我们卷起袖子,探索使这些推理成为可能的机制。HMM 工具包的核心围绕着回答三个基本问题,而回答这些问题的算法是计算思维的杰作。
当面对一个观测序列,比如一串 DNA 字母(A、C、G、T)时,我们可能有两种截然不同的目标。目标的不同导致了两种不同但相关的算法。
首先,我们可能想扮演侦探的角色。在给定证据——即观测序列——的情况下,产生该序列的单一最可能的隐藏状态序列是什么?如果我们的 HMM 模型模拟基因结构,这就像是要求一个单一最可能的注释:“这部分是外显子,下一部分是内含子,然后又是一个外显子。”我们想要一个确定的故事。
这是 Viterbi 算法的工作。可以把它想象成一次穿越充满可能性的地形的跋涉。在每个时间步(或 DNA 序列中的每个位置),你可能处于几个隐藏状态中的任何一个。从这些状态中的每一个,都有通往下一个时间步状态的路径。Viterbi 算法随时间向前推进,但采用了一种至关重要且冷酷的简化方法:在每一个状态,它只记住能够到达该状态的单一最佳路径。它会丢弃所有可能性较低的历史。这是一种“赢家通吃”的策略。当它到达序列的末尾时,它只需从最终的最佳状态回溯,就能重构出那条全局最优的路径。
当需要一个单一、连贯的答案时,这非常有用。对于基因组注释,你需要对序列进行一次最终的解析,而 Viterbi 算法恰好提供了这一点。
但如果我们的问题不同呢?如果我们有两个相互竞争的模型——比如,一个 HMM 用于功能性蛋白质家族,另一个用于随机序列——我们想知道哪个模型能更好地解释我们观察到的序列,该怎么办?
在这里,单一最佳路径是不够的。一个模型可能有一条概率极高的路径,但如果另一个模型有一百万条其他路径,虽然每条路径的可能性都较低,但它们加起来的总概率却大得多呢?侦探的方法会完全错过这一点。我们需要成为一名统计学家。
这就是前向算法的目的。它不是在每一步找到最大概率,而是累加所有可能导致在某个时间处于某个状态的路径的概率。最终结果不是一条路径,而是给定模型下整个观测序列的总似然,。通过为我们每个竞争模型计算这个值,我们可以使用似然比来决定哪个模型提供了更好的解释。前向算法考虑了每一种可能性,使其成为模型比较的黄金标准。
根本区别在于一个单一的操作:Viterbi 算法使用 max 来选择最佳的前行路径,而前向算法使用 sum 来聚合所有路径。这个看似微小的改变反映了在寻找最佳解释和寻找所有解释的总概率之间深刻的概念鸿沟。
Viterbi 路径给了我们一个单一的故事,但这是一种带有虚假自信的故事。它没有告诉我们最佳路径比第二佳路径,或者第一百万佳路径好多少。前向算法为整个序列给出一个单一的分数,但对于序列内部任何特定点发生的情况,它提供的信息很少。为了获得真正深刻的理解,我们需要结合这两种思维方式的优点。
为了理解在时间 处于某个隐藏状态的真实概率,我们需要考虑所有的证据——不仅是直到时间 的观测值,而是从头到尾的整个序列。前向算法提供了谜题的一半:变量 表示了过去和现在的概率。
为了完善这幅图景,我们引入了后向算法。顾名思义,它从序列的末尾向后工作。它计算一个变量 ,该变量表示在当前时刻 处于状态 的条件下,所有未来观测值的概率。
通过结合这两者,我们可以提出最强大的问题:在给定所有证据的情况下,在时间 处于状态 的概率是多少?这就是后验概率,通常表示为 ,它与前向和后向变量的乘积成正比:
这为我们提供了在每个时间点上隐藏状态的完整、细致的概率分布,考虑了所有经过该状态的可能路径。
这个后验概率不仅仅是一个数学上的奇趣之物;它是一个衡量置信度的实用工具。想象一下,你正在使用一个 profile HMM 将一个新的蛋白质序列与一个已知的家族进行比对。Viterbi 算法给了你一个比对结果,但你应该在多大程度上信任它呢?
前向-后向算法可以让你回答这个问题。对于你的蛋白质中的一个特定残基,你可以计算它与模型中每个可能位置比对的后验概率。如果概率 (即残基 与模型匹配状态 比对的概率)对于单个位置 几乎为 1,那么你就可以对该比对非常有信心。但如果概率分布很分散——比如说,对于位置 是 ,对于位置 是 ——那么这个比对就是模糊的。数据并不能强烈地区分这两种可能性。
我们可以使用 Shannon 熵来形式化这种不确定性的概念。对于每个位置 ,我们可以计算其后验分布的熵:。低熵意味着一个尖峰分布和高置信度;高熵意味着一个平坦分布和高模糊性。通过沿着序列绘制这个熵值,我们可以立即发现模型“感到困惑”的区域,这提供了单一 Viterbi 路径完全隐藏的宝贵信息。
到目前为止,我们一直假设有人给了我们一个完美成形的 HMM,其所有的转移和发射概率都已知。但如果我们不知道游戏规则呢?如果我们只有堆积如山的数据——比如数千张卫星图像——而我们想发现其潜在的动态呢?
这也许是 HMM 框架最神奇的能力:从数据中学习参数。Baum-Welch 算法通过巧妙地在两个步骤之间迭代来实现这一点,这个过程被称为期望最大化 (EM)。
E 步(期望): 从对 HMM 参数(转移概率 和发射概率 )的随机或均匀猜测开始。然后,在给定这个临时模型和你的观测序列的情况下,运行前向-后向算法。使用得到的后验概率来计算每个事件发生的*期望*次数。例如,你计算模型从“植被覆盖”状态转移到“非植被覆盖”状态的期望次数,以及从“植被覆盖”状态发射出“高”NDVI 读数的期望次数。这些期望值 和 是关键的“充分统计量”。
M 步(最大化): 现在,将这些期望计数视为真实的、观测到的计数。用它们来重新估计模型参数。如果在你的所有数据中,你期望从“植被覆盖”状态总共有 100 次转移,并且你期望其中 20 次是转移到“非植被覆盖”状态,那么你对该转移概率的新的、更好的估计就是 。
你重复这两个步骤。你使用新的参数重新计算期望(E 步),然后使用那些新的期望再次更新参数(M 步)。每一次迭代都保证会提高数据在给定模型下的似然,直到参数收敛到一个稳定的、局部最优的解。这是一个系统“自力更生”的美妙例子,从一个盲目的猜测开始,并将其提炼成一个强大的描述性模型。
一个物理定律或数学框架的真正美妙之处,不仅在于它如何处理理想情况,还在于它在面对世界 messy 现实时的优雅和灵活性。前向-后向框架在这方面表现出色。
如果我们的部分数据缺失了怎么办?假设一片云遮住了卫星图像中的土地,我们没有那一天的 NDVI 读数。一个僵化的算法可能会崩溃。但在 HMM 框架中,解决方案惊人地优雅。一个缺失的观测值只是一个不提供任何关于隐藏状态信息的观测值。因此,我们可以说,一个“缺失”的观测值,在给定任何状态下的概率都是 1。我们将此值插入到该时间步的发射概率项中,然后像往常一样运行前向-后向算法。数学会自动且正确地将那个缺失点的不确定性传播到整个推理过程中。
同样的优雅也适用于相反的情况。如果我们有关于特定时间某个状态的确凿证据呢?例如,我们派了一个勘测员到现场,我们确切知道第 3 天的土地是“植被覆盖”状态。我们可以通过简单地修改“有效”发射概率来强制执行这个“钳位”状态。在那个时间步,我们将从除“植被覆盖”之外的任何状态观测到我们数据的概率设置为零。这会迫使任何不经过已知状态的路径的概率为零。其余的机制无需任何其他更改即可工作,正确地将整个推理过程置于这片地面实况的基础之上。
最后一点,一个关于实用性的说明。我们讨论的算法涉及乘以一长串概率。由于概率是 0 到 1 之间的数字,它们的乘积会很快变得非常小。对于一个有数千步的序列,比如一个基因,结果的数值会小到计算机无法存储,这个问题被称为数值下溢。
为了解决这个问题,从业者使用了两个巧妙的技巧。第一个是缩放:在前向算法的每个时间步,你将概率归一化,使其总和为 1,同时记录缩放因子。总似然可以在最后从这些因子中恢复。第二个,也是更常见的方法,是在对数域中工作。你不是乘以概率,而是将它们的对数相加。这将极小的数字转换成可管理的负数。求和概率这个棘手的操作变成了一个 log-sum-exp 操作,这个操作可以以一种稳定的方式实现。 这些技术确保了我们讨论的美妙理论能够可靠地应用于规模巨大的现实世界问题。
从 Viterbi 简单的侦探工作到 Baum-Welch 卓越的自学习能力,前向-后向归纳的原理为我们提供了一个完整而优雅的工具包,用以窥探隐藏在我们所观察数据背后的世界。
当发现一个单一、优雅的思想可以解开表面上毫无共同之处的世界的秘密时,会有一种深刻而令人满足的美感。同时运用预见和后见之明——即先向前处理信息,然后向后重新评估——的原理就是这样一个强大的思想。在我们深入探讨它在隐马尔可夫模型中最著名的作用之前,让我们通过几个出人意料且异常简单的其他应用来欣赏它的普适性。
想象一下,你正在尝试清理一段嘈杂的录音。你可能会应用数字滤波器来去除不必要的嘶嘶声。但无论滤波器多么巧妙,都会引入其自身的微妙失真;一个常见的是*相位失真,即不同频率被延迟了不同的时间量,使得尖锐的声音变得模糊。我们怎么可能修复这个问题?一个非常优雅的解决方案是执行前向-后向滤波。首先,你正向播放录音并应用滤波器。然后,你取其输出,将其反向*播放,并再次应用完全相同的滤波器。最后,你再次反转结果。会发生什么?奇迹般地,前向传递中引入的相位失真被后向传递完美地抵消了,留给你一个干净的零相位信号。这项源于纯数学的技术是信号处理领域的得力工具,应用于从地震学到图像增强的各种领域。
这种“前向猜测,后向修正”的主题在优化和机器学习的世界中再次出现。考虑一个问题,我们想要找到一个既能很好地拟合数据又足够简单的模型(这一原则被称为奥卡姆剃刀)。这通常涉及最小化一个由两部分组成的函数:一个衡量数据拟合度的平滑部分,和一个强制简约性(如 LASSO 方法,它鼓励许多模型参数恰好为零)的非平滑、“尖峰”部分。一种名为前向-后向分裂的算法通过交替步骤来解决这个问题。它朝着最能改善数据拟合度的方向迈出“前向”一步(一个标准的梯度步),然后迈出“后向”一步,将结果拉回到正则化器所要求的简单结构(一个近端步)。这是在两个相互竞争的目标之间的一场优美的舞蹈,通过迭代前向预测和后向修正而优雅地解决。
这些例子为前向-后向算法的主场——隐马尔可夫模型 (HMM)——奠定了基础。正如我们所见,HMM 描述了一个我们无法看到真实状态,但可以看到依赖于该状态的嘈杂观测值的系统。Viterbi 算法给了我们一种可能的解释——即可能产生我们所见现象的单一最可能的隐藏状态序列。这就像一个侦探从头到尾构建一个关于罪行的连贯故事。
然而,前向-后向算法是另一种侦探。它明白可能不存在单一的“真实”故事。相反,对于每一个时间点,它都会计算每种可能状态的概率,这是在给定从始至终所有证据的情况下得出的。它通过结合两次传递的结果来实现这一点。前向传递()计算了到某个点为止的故事的概率,而后向传递()计算了从该点开始的故事的概率。通过将它们相乘,我们得到了整个事件序列在那个精确时刻通过特定隐藏状态的概率。这赋予了我们完美的、概率性的后见之明。
这种在每个时间点为每种可能的现实分配概率的能力,不仅仅是一种学术上的奇趣;它是一种变革性的发现工具。
考虑基因组,一长串由字母(A、C、G、T)组成的字符串。隐藏在这个字符串中的是基因——生命的食谱——它们散布在长长的非编码 DNA 片段中。我们如何找到它们?我们可以将基因组建模为一个 HMM,其中隐藏状态是“非编码”、“第一密码子位置”、“第二密码子位置”等等。给定观测到的 DNA 字母序列,前向-后向算法使我们能够计算每个核苷酸属于基因一部分的后验概率。这比 Viterbi 算法的全或无答案要细致得多;它可以告诉我们某个区域几乎肯定是基因,而另一个区域只是被微弱地支持,从而引导生物学家找到最有希望进行进一步研究的候选区域。
这种“清理”我们对隐藏现实看法的原理,同样出色地应用于遗传分析。当我们通过追踪基因在世代间的遗传方式来绘制基因图谱时,我们的遗传标记数据不可避免地会受到小的基因分型错误的困扰。一个 HMM 可以模拟沿染色体的真实、潜在的遗传模式,其状态代表正在传递哪条祖父母的染色体。重组事件导致这些状态之间的转换。即使有嘈杂的标记观测值,前向-后向算法也可以计算每个位置真实基因型的后验概率,利用相邻标记的上下文来有效地穿透噪声。
现代基因组学通过基因型填充将这一原理更进一步。通常,我们对一个个体只有稀疏的遗传信息。为了得到完整的图景,我们使用一个包含高度详细基因组的参考面板。Li-Stephens 模型将此视为一个 HMM,其中个体的染色体是从参考面板中不同单倍型复制而来的“马赛克”。前向-后向算法不只是猜测哪个单倍型被复制了;它计算等位基因的后验期望剂量——一个反映我们不确定性的概率计数——这对于旨在将基因与疾病联系起来的研究来说,是一个更诚实、更强大的输入。更进一步的天才之举是,这个 HMM 框架非常灵活,甚至可以用来检测我们实验设置中的错误。通过在我们的模型中添加一个隐藏的“相位状态”,我们可以使用前向-后向算法来计算我们关于亲代染色体的初始假设是错误的后验概率,从而让数据来纠正我们自己的错误。
这种解码能力的影响远远超出了 DNA 的静态世界,延伸到了活细胞的动态剧场。想象一下,观察一个微小的囊泡,一个细胞货运包裹,被马达蛋白沿着微管轨道运送。它的运动颠簸不定,难以精确跟踪。我们可以用一个三状态 HMM 来模拟这个过程:向前移动、向后移动或暂停。通过将囊泡的嘈杂位置数据输入前向-后向算法,我们可以确定它在每个瞬间处于这三种状态中每一种的概率。这使我们能够计算出稳健的、平均化的量,如总暂停频率或逆转率,这对于理解细胞内运输的生物物理学至关重要。我们不是依赖于 Viterbi 的一个“最佳猜测”路径,而是对所有可能性进行加权平均,权重由它们的似然决定——这是一种在科学上更为稳健的方法。
到目前为止,我们一直假设我们知道HMM 的规则——即转移和发射概率。但如果我们不知道呢?如果我们想从数据本身中发现规则呢?这就是前向-后向算法揭示其最深层力量的地方,作为 Baum-Welch 算法(一种期望最大化算法)的引擎。
这个过程是一个具有精妙逻辑的迭代循环。在期望(E)步骤中,我们使用当前对模型参数的最佳猜测,并运行前向-后向算法。这给了我们在每个时间点处于每个状态的后验概率()。这些是我们的“责任”。然后,在最大化(M)步骤中,我们更新模型参数。如何更新?我们使用一个简单、直观的原则来重新估计它们:加权平均。例如,要找到给定状态的新均值发射,我们只需计算所有观测值的加权平均值,其中每个观测值的权重是它对该状态的责任,这是在 E 步中计算的。我们让数据对参数进行“投票”,每次投票的强度由前向-后向算法确定。我们重复这个 E-M 循环,每一次循环,模型都会成为对现实越来越好的描述。
现在我们可以把所有东西放在一起,完成真正令人惊叹的推理壮举。其中最引人注目的应用之一是配对序列马尔可夫合并 (PSMC) 模型,它能从单个个体的基因组中重建一个物种的深远人口历史。
关键的洞见在于,你的两条同源染色体的历史是一系列合并事件。在某些区域,你的母系和父系谱系在很近的过去找到了共同的祖先;在另一些区域,它们在时间中徘徊了数千年才相遇。到这个最近共同祖先的时间 (TMRCA) 是隐藏状态。具有长 TMRCA 的区域更有可能积累突变,导致杂合位点(观测值)。沿基因组的重组事件导致 TMRCA 从一个值跳到另一个值。这是一个完美的 HMM 设置!由前向-后向算法驱动的 Baum-Welch 算法被用来拟合模型。那么它学习到的参数是什么呢?它们正是历史上的有效种群大小,,因为过去任何时间的种群大小决定了 TMRCA 的概率分布。因此,从一个人的 DNA 中,我们可以描绘出追溯数十万年的人口瓶颈和扩张的图景。
这个框架力量的终极体现可能是序列马尔可夫合并 (SMC) 模型。在这里,抽象达到了最后一个大胆的飞跃。基因组上每个位置的隐藏状态不再只是一个数字,而是一个完整的进化树,关联着一个个体样本。当我们沿着染色体移动时,重组事件会修剪和嫁接分支,导致隐藏的树状态转变为另一个。在这个巨大、几乎无法想象的所有可能树的状态空间中,前向-后向算法发挥了其最根本的作用:它使我们能够对所有可能的历史场景进行求和,以计算我们观测到的遗传数据的总似然,这是一个否则完全不可能完成的任务。
从消除音频文件中的噪声到描绘人类历史,一个前向传递以收集信息和一个后向传递以巩固信息的核心思想,在科学中展示了一个卓越而统一的主题。它证明了一个简单而强大的数学工具如何能提供一个镜头,让我们得以窥视隐藏的世界,并以前所未有的清晰度看到它们。