HMM隐马尔科夫模型

问题:讲讲HMM隐马尔科夫模型

1、HMM是什么?

1、隐马尔科夫模型是关于时序的概率模型,是由一个隐藏的马尔科夫链随机生成不可观测的随机状态序列,并由各个状态生成一个观测而产生观测随机序列的过程。        --《统计学习方法》cha10

概念解释:

马尔可夫链:一阶马尔可夫过程,即未来状态仅与当前状态有关,与过去无关。

马尔可夫过程:状态间的转移仅依赖于前n个状态的过程。

状态:随机过程在某个时刻的情况。

 

2、数学表达

HMM由核心三要素确定:λ=(A,B,Π)

令Q:隐藏状态集合,大小N; V:观测状态集合,大小M;

Π:初始状态概率向量:在初始状态各个状态出现的概率,和为1。

A:状态转移概率矩阵,

B:观测概率矩阵,又称发射概率,
 

2、HMM应用

当一个系统可以用HMM描述时,就可以用HMM思想来解决三类基本问题:

1、给定一个HMM,可以求一个观测序列的概率;

2、给定HMM和观测序列,生成最有可能产生该观测序列的隐藏状态序列;

3、HMM模型的学习,分为两种情况。第一种,已知观测序列和状态序列,通过MLE估计模型参数;第二种,仅已知观测序列,利用EM算法思想来学习。

 

2.1 给定一个HMM,求一个观测序列的概率

1、暴力解法(穷举)

T个时刻,N个状态,则有N^T种路径,分别求出概率然后相加。时间复杂度O(TN^T)阶(疑问,前面的系数T哪来的?乘以观测概率产生的?),当T、N较大时,难以使用。

2、前向算法

定义前向概率:已知HMM模型λ,在t时刻观察到从初始到当前的观测序列,且当前t时刻的状态为i的概率。记作,

 

前向算法:

HMM隐马尔科夫模型_第1张图片

很明显的动态规划思想,到达最后一个时刻时停止,将最后一个时刻各状态的前向概率相加得到结果。在每一次的状态转移时都进行了N^2次计算(每一个状态求前向概率都需要进行N次计算,且有N个状态),序列长度T,所以时间复杂度应是O(TN^2)阶。

3、后向算法

定义后向概率:已知HMM模型λ和时刻t的状态i,得到之后的观察序列ot+1至oT的概率。记作,

后向算法:

HMM隐马尔科夫模型_第2张图片

2.2 给定HMM和观测序列,生成最有可能产生该观测序列的隐藏状态序列

 这个问题也称为预测问题和解码问题(decoding),常用维特比(Viterbi)算法来解决。维特比算法实际上是用动态规划来求概率最大路径。

HMM隐马尔科夫模型_第3张图片

        对这个算法我是这么理解的,根据动态规划的原理,如果最优路径在时刻t通过状态点it,那么it到终点iT的路径必然最优且唯一,同时应该保证前面时刻到it的路径也最优。这不是废话么-_-||,什么意思呢,例如在i=2时,有三个隐藏状态,而三个状态都是有可能在最优路径里的,这样的话就需要求三种状态下i1到i2的最优路径,每个i2中的状态都可能由i1中三个状态转移得到,所以求出三个概率并取最大的那个就是对于该状态t1-t2的最优局部路径,记录下来,然后以同样的方式往后继续,直到最后时刻,此时仍有对应三个状态的三个概率,比较取最大的就得到最优路径了。语言描述太纠结,附上《统计学习方法》里的例子。

HMM隐马尔科夫模型_第4张图片HMM隐马尔科夫模型_第5张图片

这里解释一下,上面的算法流程和例子里的ψ,都是用来记录对于当前某个状态而言的前一时刻最优状态,而最后经常说的用回溯法得到最优路径无非就是把这些记录下来的点取出来。

 

2.3 HMM模型的学习

鉴于我花了一下午时间来纠结这一块,顺带纠结了之前就没看透的EM算法...( _ _)ノ| ,就把这一部分单独放在了一篇博客里HMM隐马尔科夫模型二--学习算法。 

 

 

你可能感兴趣的:(自然语言处理)