A.2 隐马尔可夫模型
需要计算可观察事件序列的概率时,马尔可夫链很有用。然而,许多时候我们关注的事件是隐藏的,无法直接观察。例如,文本中的词性标签通常不可见;我们看到的是词,必须根据词序列推断标签。这些标签没有被观察到,因而称为隐藏状态。
隐马尔可夫模型(HMM)能够同时描述观察事件——例如输入中可见的词——以及隐藏事件——例如在概率模型中被视为观察结果之成因的词性标签。HMM 由以下组成部分指定:
由 个状态组成的集合 | |
转移概率矩阵 ; 表示从状态 转移到状态 的概率,且对所有 都有 | |
观察似然序列,也称发射概率;每个值表示状态 生成观察 的概率,其中 来自词表 | |
状态上的初始概率分布; 是马尔可夫链从状态 开始的概率。某些状态可有 ,并且 |
HMM 的输入为 ,即由 个观察构成的序列;每个观察都来自词表 。
一阶隐马尔可夫模型采用两个简化假设。第一,与一阶马尔可夫链相同,某个状态的概率只取决于前一个状态:
第二,输出观察 的概率只取决于生成它的状态 ,不取决于其他状态或其他观察。这称为输出独立性假设(output independence):
为说明这些模型,我们采用 Jason Eisner(2002)设计的一项任务。设想你是 2799 年的一名气候学家,正在研究全球变暖史。你找不到美国马里兰州 Baltimore 在 2020 年夏天的任何天气记录,却发现了 Jason Eisner 的日记,里面记载着他在那个夏天每天吃了多少个冰淇淋。我们的目标是利用这些观察估计每天的气温。为简化天气任务,假设一天只有两种状态:冷(C)或热(H)。于是 Eisner 任务为:
给定观察序列 ——每个观察都是一个整数,表示某天吃掉的冰淇淋数——找出导致 Jason 吃这些冰淇淋的“隐藏”天气状态序列 (H 或 C)。
图 A.2 给出冰淇淋任务的一个 HMM 示例。两个隐藏状态 H 和 C 对应炎热与寒冷天气;从字母表 取值的观察,则对应 Jason 某天吃掉的冰淇淋数。

图 A.2 把 Jason 吃掉的冰淇淋数量(观察变量)与天气 H 或 C(隐藏变量)联系起来的隐马尔可夫模型。
Rabiner(1989)在一篇颇具影响力的教程中——其基础是 Jack Ferguson 在 20 世纪 60 年代所作的教程——提出应通过三个基本问题刻画隐马尔可夫模型:
问题 1(似然):给定 HMM 和观察序列 ,求似然 。
问题 2(解码):给定观察序列 和 HMM ,找出最佳隐藏状态序列 。
问题 3(学习):给定观察序列 以及 HMM 中的状态集合,学习 HMM 参数 和 。
第 18 章已经给出问题 2 的一个例子。下面两节介绍用于解决问题 1 和问题 3 的前向算法与前向—后向算法,并进一步说明问题 2。