0%

【机器学习自学笔记8】隐马尔可夫模型(HMM)

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。

隐马尔可夫模型的结构

HMM 模型是一种生成式模型。

HMM 模型中有 2 个相关序列,分别是状态序列和观测序列,HMM 模型具有以下规则:

  • 观测序列是可以直接观测的,状态序列是不可观测的
  • 状态序列在 t 时刻的值只与 t-1 时刻的值有关
  • 观测序列在 t 时刻的值只与 t 时刻状态序列的值有关

设状态序列 观测序列 则 HMM 模型的结构如下图所示: image-20210125161351112

隐马尔科夫模型的假设

根据上述结构和规则,我们可以得出如下假设:

  • 马尔可夫性假设:t 时刻的状态出现的概率只与 t-1 时刻的状态有关

  • 齐次性假设:时间平移不变性

  • 观测独立性假设:某个时刻 t 的观测值只依赖于该时刻的状态值

根据上述假设,得 HMM 的联合概率密度:

隐马尔科夫模型的组成

观察 HMM 的联合概率密度,发现其分为三部分:

  • 初始状态概率

  • 状态转移概率

  • 观测输出概率 (发射概率)

在状态值和观测值取值为离散值的情况下,这三种概率可以表示为矩阵。

假定状态值可能的取值为 观测值可能的取值为 则可得:

  • 初始概率矩阵

  • 转移概率矩阵 A

  • 发射概率矩阵 B

最终 HMM 可表示为

维特比算法

问题

对于 隐状态集合 观测值集合

观测结果序列 假设 其中 表示 的初始概率。 其中 表示 的转移概率。 其中 表示 的发射概率。

求出当前观测结果 O 最有可能的隐状态序列

解法

定义

表示时刻 t 状态为 i 的所有单个路径中概率最大值,则可得

表示时刻 t 状态为 i 的所有单个路径中概率最大的路径的第 t-1 个结点。

例子

医生通过观察病人的状态判断病人是否生病。

设病人有状态有 {生病,健康},医生观测结果有 {头晕,不头晕}。

假设病人第一天生病,健康的概率各为 0.5;

若前一天生病,则第二天生病的概率为 0.6,健康的概率为 0.4;

若前一天健康,则第二天健康的概率为 0.8,生病的概率为 0.2;

若生病,则观测到头晕的概率为 0.7,不头晕的概率为 0.3;

若健康,则观测到头晕的概率为 0.1,不头晕的概率为 0.9;

医生观测三天,病人的观测值序列为 {不头晕,头晕,不头晕};

推测病人这三天是否生病。

构造出初始矩阵,转移概率矩阵,发射概率矩阵如下:

初始化

上述两个值分别为第一天生病且观测到不头晕,与第一天不生病且观测到不头晕的概率。

迭代

第一次迭代,求第二时刻

第二次迭代,求第三时刻

回溯

解得隐状态序列为 即 (健康,健康,健康)

lta_2(i)a_{i2}]b_2(o_3=不头晕) $$

回溯

解得隐状态序列为 即 (健康,健康,健康)