隐马尔可夫模型【HMM】

隐马尔可夫模型属于生成模型,它在语音识别、自然语言处理、生物信息、模式识别领域有广泛的应用。隐马尔可夫模型可以用三句话概括,一个模型、两个假设、三个问题。解决了这些问题,隐马尔可夫模型也就掌握了。

一个模型

先引入一些有关HMM的符号:

观测变量符号为O,O1,O2,O3.....为观测序列,它的取值集合为V={v1,v2,v3....}

状态变量符号为i,i1,i2,i3....为状态序列,它的取值集合为Q={q1,q2,q3....}

A为状态转移矩阵,A=[a_{ij}]_{N*N}  

                                  a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i}) i=1,2,3,4...N;j=1,2,3,4...N

B为发射矩阵(它的英文是Emission Matrix,李航老师的书中为观测矩阵,但都是一个东西)

                                B=[b_{j}(k)]_{N*M}

                                 b_{j}(k)=P(o_{t}=v_{k}|i_{t}=q_{j}) k=1,2,3...M;j=1,2,3,4...N

Π=Π_{i}Π是初始状态概率向量:Π=Π(Πi),其中,Πi=P(i1=qi),i=1,2,3,...,N

隐马尔可夫模型由初始状态概率向量Π、状态转移矩阵A和发射矩阵B决定,Π和A为状态序列,B为观测序列。因此隐马尔可夫模型可表示为:

                                λ=(A,B,Π)决定。

下面以一个例子来说明上述的概念:

二个假设

1>齐次性马尔可夫假设,假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一个时刻的状态,与其他时刻的状态及观测状态无关,也与时刻t无关。

                                           P(i_{t}|i_{t-1},o_{t-1},...,i_{1},t_{1})=P(i_{t}|i_{t-1})

2>观测性独立假设,假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关。

                                            P(o_{t}|i_{T},o_{T},...,i_{1},o_{1})=P(o_{t},i_{t})

三个问题

HMM算法主要解决以下三个问题:

1>给定模型λ=(A,B,Π),计算在λ下观测序列O出现的概率P(O|λ)

2>对于给定的观测序列O,用极大似然估计法估计模型的λ,使得该模型下观测概率P(O|λ)最大

3>已知λ和观测序列O,求对给定的观测序列条件概率P(I|O)的最大状态序列I=(i1,i2,...,iT)

第一个问题:

对于第一个问题,先介绍直接求解的方法,说明直接求解方法比较困难。然后介绍前向算法和后向算法。

下面是一个具体的例子,然后给出通用的直接求解方法

上面的方法用来计算的复杂度比较高,所以才有了下面的前向算法和反向算法。

首先介绍前向算法,前向算法有两种理解方式,分别是白板推导里面和徐亦达老师的采用的方式

隐马尔可夫模型【HMM】_第1张图片

下面是李航老师书中的例子,供大家理解。

隐马尔可夫模型【HMM】_第2张图片

下面是后向算法的推导:

隐马尔可夫模型【HMM】_第3张图片

下面是第二个问题,对于给定的观测序列O,用极大似然估计法估计模型的λ,使得该模型下观测概率P(O|λ)最大。求解λ最大的值时,含有隐变量。关于隐变量求极大似然估计法,要用EM算法。EM算法的推导详见这里这里。

隐马尔可夫模型【HMM】_第4张图片

下面就是第三个问题:已知λ和观测序列O,求对给定的观测序列条件概率P(I|O)的最大状态序列I=(i1,i2,...,iT)

采用维特比算法,主要用动态规划解决问题。这里就不说了。

参考资料:1>李航《统计机器学习方法》

                    2>机器学习-白板推到系列-隐马尔可夫模型

                    3>徐亦达机器学习:Hidden Markov Model 隐马尔可夫模型(HMM)【2015年版-全集】

你可能感兴趣的:(机器学习)