【概率模型】HMM(隐马尔可夫模型)
马尔科夫过程
马尔科夫过程就是一个状态转移图
其可以有N个状态。状态到状态的转换是赋予概率的。
于是可以用$NN$的*概率转移矩阵表示
如一个例子
假设几个月大的宝宝每天做三件事:玩(兴奋状态)、吃(饥饿状态)、睡(困倦状态),这三件事按下图所示的方向转移:
这就是一个简单的马尔可夫过程。需要注意的是,这和确定性系统不同,每个转移都是有概率的,宝宝的状态是经常变化的,而且会任意在两个状态间切换:
如图。这个过程的概率转移矩阵A为
每行累加和为1.
HMM
有时我们无法看到$状态序列Q$,只能看到观察序列(或输出序列)$O$
这时隐马尔可夫模型就产生了。
一个是可观测的状态集O和一个隐藏状态集Q
还是上面的例子。为了简化描述,将“玩”这个状态去掉,让宝宝每天除了吃就是睡
在HMM里。我们使用混淆矩阵B
且运用独立性假设:假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其它观测状态无关。
模型定义
- N 表示隐藏状态的数量,我们要么知道确切的值,要么猜测该值;
- M 表示可观测状态的数量,可以通过训练集获得;
- π={πi} 为初始状态概率;代表的是刚开始的时候各个隐藏状态的发生概率;
- $A=\{a_{ij}\}$为隐藏状态的转移矩阵;N*N维矩阵,代表的是第一个状态到第二个状态发生的概率;
- $B=\{b_{ij}\}$为混淆矩阵,N*M矩阵,代表的是处于某个隐状态的条件下,某个观测发生的概率。
HMM要解决的问题
HMM主要解决三大类问题
- 模型评估问题
已知一个观察序列。和模型λ=(A,B,π}的条件下,观察序列O的概率,即P(O|λ}。
对应算法:向前算法、向后算法 - 解码问题
从观察序列推断隐藏状态序列
也就是已知模型参数和可观察状态序列,怎样选择一个状态序列S={S1,S2,…,ST},能最好的解释观测序列O。
对于算法维特比算法 - 参数估计问题
数据集仅有观测序列,如何调整模型参数 λ=(π, A, B), 使得P(O|λ)最大
对应算法:鲍姆-韦尔奇算法