Appearance
第八章 隐马尔可夫模型
作者:Nikhil Sharma
编辑:Saathvik Selvan、Pranav Muralikrishnan、Wesley Zheng
部分内容改编自《人工智能:一种现代方法》(Artificial Intelligence: A Modern Approach)。
最后更新:2024 年 11 月
8.1 马尔可夫模型
前面讨论过贝叶斯网络:它是一种用紧凑方式表示随机变量关系的优秀结构。本章介绍一种内在相关的结构——马尔可夫模型。
在本课程中,可以把马尔可夫模型理解成链状、无限长度的贝叶斯网络。贯穿本节的例子是每天变化的天气模式。天气模型依赖时间:每一天的天气都有一个单独的随机变量。令

图 1:天气马尔可夫模型。
马尔可夫模型中需要存储哪些信息?为了跟踪天气随时间的变化,需要知道时间
初始分布由
这个转移模型意味着
使用链式法则构造
但根据马尔可夫性质
马尔可夫模型中的这些信息已经足以计算它。
更一般地,每个时间步都作出以下独立性假设:
因此,可以用链式法则重建前
马尔可夫模型通常还作出一个假设:转移模型是平稳的。也就是对所有
8.1.1 小型前向算法
现在已经知道如何计算马尔可夫模型跨时间步的联合分布,但这还不能直接回答“第
更高效的技术是小型前向算法(mini-forward algorithm)。
根据边缘化性质:
利用链式法则,可以写成
这条式子很直观:要计算时间步
因此,可以从初始分布
考虑以下初始分布和转移模型:
| sun | 0.8 |
| rain | 0.2 |
| sun | sun | 0.6 |
| rain | sun | 0.4 |
| sun | rain | 0.1 |
| rain | rain | 0.9 |
用小型前向算法计算
所以
| sun | 0.5 |
| rain | 0.5 |
从
自然会产生一个后续问题:给定时间步的状态概率是否最终会收敛?下一节回答这个问题。
8.1.2 平稳分布
要解决上述问题,需要计算天气的平稳分布。顾名思义,平稳分布经过时间推移仍保持不变:
把这个等式与小型前向算法使用的公式结合,就能求出收敛后的状态概率:
在天气示例中,有两个方程:
概率总和必须为 1:
令
; ; 。
用
解得
| sun | 0.2 |
| rain | 0.8 |
这说明,当小型前向算法继续运行、时间趋于无穷时,下雨概率会收敛到 80%。这同样是转移模型偏好转移到雨天的结果。
8.2 隐马尔可夫模型
在马尔可夫模型中,可以通过初始分布
例如,天气预报说第 10 天下雨概率为 80%,但第 9 天晚上天空晴朗,那么这 80% 的概率可能会显著下降。这正是隐马尔可夫模型(Hidden Markov Model,HMM)解决的问题:允许在每个时间步观测证据,从而影响对各状态的信念分布。
天气模型的 HMM 可以用下面的贝叶斯网络表示:

图 1:天气 HMM。
与普通马尔可夫模型不同,HMM 有两类节点:
:状态变量,表示第 天的天气。 :证据变量,表示第 天收到的天气预报。
由于
HMM 具有与普通马尔可夫模型相似的条件独立关系,并为证据变量增加了以下关系:
对于
和马尔可夫模型一样,HMM 假设转移模型
定义到时间
定义只观测到
令
在这种记号下,
8.2.1 前向算法
利用前面给出的条件概率假设以及条件概率表的边缘化性质,可以推导
先边缘化:
用链式法则展开:
注意
因此
接下来推导
条件概率中有一个常用技巧:延迟归一化,直到真正需要归一化概率时再做。上式分母对
当需要恢复归一化的
利用链式法则:
第一步等式使用 HMM 的条件独立性,第二项正是
把两条关系合起来,得到 HMM 的前向算法:
前向算法包含两个步骤:
- 时间流逝更新: 根据
计算 。 - 观测更新: 根据
计算 。
因此,要把信念分布向前推进一个时间步,必须先用时间流逝更新推进状态,再用观测更新加入该时间步的新证据。
考虑以下初始分布、转移模型和传感器模型:
| sun | 0.8 |
| rain | 0.2 |
| sun | sun | 0.6 |
| rain | sun | 0.4 |
| sun | rain | 0.1 |
| rain | rain | 0.9 |
| good | sun | 0.8 |
| bad | sun | 0.2 |
| good | rain | 0.3 |
| bad | rain | 0.7 |
计算
| sun | 0.5 |
| rain | 0.5 |
假设第 1 天的天气预报是 good,即
最后归一化。
因此
| sun | |
| rain |
观测天气预报的效果很明显:时间更新后晴天信念为
最后,前面讨论的延迟归一化技巧可以显著简化 HMM 计算。如果从初始分布开始,想计算时间
8.3 Viterbi 算法
前向算法使用递归求解给定已观测证据后系统状态的概率分布:
可以用动态规划的 Viterbi 算法求出这条轨迹。
算法分两次遍历:
- 第一次沿时间正向进行,计算给定当前证据时,到达每个“状态—时间”节点的最佳路径概率。
- 第二次沿时间反向进行:先找到位于最高概率路径上的终止状态,再沿着通向该状态的最佳路径向后追踪。
用状态格(state trellis)表示这个算法。状态格是随时间展开的状态和转移图:

图 1:状态格。
在有两个隐藏状态 sun、rain 的 HMM 中,我们希望从
从
一条路径的概率等于其所有边权的乘积。第一项表示特定转移的可能性,第二项表示观测证据与结果状态的匹配程度。
回忆
前向算法计算的是(忽略归一化常数)
Viterbi 算法则要计算
乘积中的每一项正好是状态格中相邻两层之间的边权,因此路径上的边权乘积就是给定证据时这条路径的概率。
可以构造所有可能隐藏状态的联合概率表,但它的空间成本是指数级的。即使有这张表,也可以用动态规划在多项式时间内求最佳路径;然而,既然动态规划本身能求最佳路径,就不必在任一时刻保存完整表。
定义
表示在时间
展开这个定义:
因此可以用动态规划递归计算所有
定义
记录到达
这样,我们就能在多项式时间和空间内,为当前证据计算最可能的解释。
8.4 粒子滤波
回顾贝叶斯网络:精确推断计算量过大时,可以使用采样技术近似目标概率分布。HMM 也有同样的问题:前向算法的运行时间随随机变量域中可能值的数量增长。
天气模型中
HMM 中对应贝叶斯网络采样的方法叫粒子滤波(particle filtering)。它模拟一组粒子在状态图中的移动,以近似目标随机变量的概率或信念分布。
它回答的问题与前向算法相同:给定证据,近似计算
粒子滤波不保存从每个状态到信念概率的完整表,而是保存
通常
某个时间步某个状态的粒子信念,完全取决于模拟中该时间步处于该状态的粒子数量。
例如,想模拟某天的温度
统计列表中各温度出现的次数,并除以粒子总数,就得到温度的经验分布:
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.2 | 0.2 | 0.3 | 0 | 0.1 | 0.1 | 0 | 0 | 0.1 | 0 | 0 |
现在只剩下一个问题:如何生成指定时间步的粒子列表。
8.4.1 粒子滤波模拟
粒子滤波模拟从粒子初始化开始。初始化方式很灵活:可以随机采样、均匀采样,或从某个初始分布采样。得到初始粒子列表后,模拟过程与前向算法类似:每个时间步先执行时间流逝更新,再执行观测更新。
时间流逝更新
根据转移模型更新每个粒子的值。若粒子当前处于状态
这与贝叶斯网络中的先验采样相似,因为任意状态中粒子的频率反映了转移概率。
观测更新
使用传感器模型
观测更新算法如下:
- 按照上面的规则计算所有粒子的权重。
- 计算每个状态的总权重。
- 如果所有状态的权重总和为 0,则重新初始化全部粒子。
- 否则,归一化各状态总权重的分布,并从这个分布重新采样粒子列表。
观测更新与似然加权很相似:都根据证据降低样本权重。
下面继续用温度作为随时间变化的随机变量。定义天气场景中的转移模型:对于某个温度状态,粒子可以留在原状态,也可以在区间
在所有可能后继状态中,最接近 15 度的状态获得 80% 的转移概率,其余后继状态均分剩下的 20%。初始粒子列表为
对列表中的第一个粒子执行时间流逝更新。它处于
| 14 | 15 | 16 | |
|---|---|---|---|
| 0.1 | 0.8 | 0.1 |
实践中,为
: ; : ; : 。
要重新采样处于
对于 10 个粒子使用以下随机数:
完整执行时间流逝更新后,新的粒子列表为
更新后的信念分布为
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.1 | 0.1 | 0.2 | 0.3 | 0 | 0.2 | 0 | 0.1 | 0 | 0 | 0 |
与初始分布相比,粒子整体趋向温度
现在执行观测更新。假设传感器模型
| 粒子 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 状态 | 15 | 13 | 13 | 11 | 17 | 15 | 13 | 12 | 12 | 10 |
| 权重 | 0.02 | 0.8 | 0.8 | 0.02 | 0.02 | 0.02 | 0.8 | 0.02 | 0.02 | 0.02 |
按状态聚合权重:
| 状态 | 10 | 11 | 12 | 13 | 15 | 17 |
|---|---|---|---|---|---|---|
| 权重 | 0.02 | 0.02 | 0.04 | 2.4 | 0.04 | 0.02 |
权重总和为 2.54。用这个总和除每个权重,得到归一化分布:
| 状态 | 10 | 11 | 12 | 13 | 15 | 17 |
|---|---|---|---|---|---|---|
| 权重 | 0.02 | 0.02 | 0.04 | 2.4 | 0.04 | 0.02 |
| 归一化权重 | 0.0079 | 0.0079 | 0.0157 | 0.9449 | 0.0157 | 0.0079 |
最后,使用时间流逝更新相同的重采样方法,从该概率分布重新采样。假设生成以下 10 个
得到新的粒子列表:
相应的最终信念分布为
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0.9 | 0 | 0.1 | 0 | 0 | 0 | 0 | 0 |
传感器模型表示天气预报有 80% 的准确率,新的粒子列表也符合这个事实:大多数粒子都被重采样为
8.5 本章小结
马尔可夫模型可以看成链状、无限长度的贝叶斯网络。它满足马尔可夫性质:所建模变量的分布只取决于上一时间步该变量的值。
可以使用小型前向算法计算任意时间步的分布;当时间趋于无穷时,该分布最终会收敛到平稳分布。
本章还介绍了两种模型:
- 马尔可夫模型: 表示具有马尔可夫性质的时间相关随机变量。可以使用概率推断和小型前向算法,计算任意时间步的信念分布。
- 隐马尔可夫模型: 在马尔可夫模型基础上,允许每个时间步观测会影响信念分布的新证据。可以使用前向算法计算任意时间步的信念分布。
如果对这些模型执行精确推断的计算成本太高,可以使用粒子滤波进行近似推断。