隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
隐马尔可夫模型的结构
HMM 模型是一种生成式模型。
HMM 模型中有 2 个相关序列,分别是状态序列和观测序列,HMM 模型具有以下规则:
- 观测序列是可以直接观测的,状态序列是不可观测的
- 状态序列在 t 时刻的值只与 t-1 时刻的值有关
- 观测序列在 t 时刻的值只与 t 时刻状态序列的值有关
设状态序列
隐马尔科夫模型的假设
根据上述结构和规则,我们可以得出如下假设:
马尔可夫性假设:t 时刻的状态出现的概率只与 t-1 时刻的状态有关
齐次性假设:时间平移不变性
观测独立性假设:某个时刻 t 的观测值只依赖于该时刻的状态值
根据上述假设,得 HMM 的联合概率密度:
隐马尔科夫模型的组成
观察 HMM 的联合概率密度,发现其分为三部分:
初始状态概率
状态转移概率
观测输出概率 (发射概率)
在状态值和观测值取值为离散值的情况下,这三种概率可以表示为矩阵。
假定状态值可能的取值为
初始概率矩阵
转移概率矩阵 A
发射概率矩阵 B
最终 HMM 可表示为
维特比算法
问题
对于
观测结果序列
求出当前观测结果 O 最有可能的隐状态序列
解法
定义
设
设
例子
医生通过观察病人的状态判断病人是否生病。
设病人有状态有 {生病,健康},医生观测结果有 {头晕,不头晕}。
假设病人第一天生病,健康的概率各为 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=不头晕) $$
回溯
即
解得隐状态序列为