隐马尔科夫模型HMM(一)HMM模型

隐马尔科夫模型(Hidden Markov Model,如下简称HMM)是比较经典的机器学习模型了,它在语言识别,天然语言处理,模式识别等领域获得普遍的应用。固然,随着目前深度学习的崛起,尤为是RNN,LSTM等神经网络序列模型的火热,HMM的地位有所降低。可是做为一个经典的模型,学习HMM的模型和对应算法,对咱们解决问题建模的能力提升以及算法思路的拓展仍是很好的。本文是HMM系列的第一篇,关注于HMM模型的基础。
1. 什么样的问题须要HMM模型
首先咱们来看看什么样的问题解决能够用HMM模型。使用HMM模型时咱们的问题通常有这两个特征:1)咱们的问题是基于序列的,好比时间序列,或者状态序列。2)咱们的问题中有两类数据,一类序列数据是能够观测到的,即观测序列;而另外一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
有了这两个特征,那么这个问题通常能够用HMM模型来尝试解决。这样的问题在实际生活中是不少的。好比:我如今在打字写博客,我在键盘上敲出来的一系列字符就是观测序列,而我实际想写的一段话就是隐藏序列,输入法的任务就是从敲入的一系列字符尽量的猜想我要写的一段话,并把最可能的词语放在最前面让我选择,这就能够看作一个HMM模型了。再举一个,我在和你说话,我发出的一串连续的声音就是观测序列,而我实际要表达的一段话就是状态序列,你大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。
从这些例子中,咱们能够发现,HMM模型能够无处不在。可是上面的描述还不精确,下面咱们用精确的数学符号来表述咱们的HMM模型。算法

2. HMM模型的定义
 对于HMM模型,首先咱们假设QQ是全部可能的隐藏状态的集合,VV是全部可能的观测状态的集合,即:网络

 

Q={q1,q2,...,qN},V={v1,v2,...vM}Q={q1,q2,...,qN},V={v1,v2,...vM}机器学习

其中,NN是可能的隐藏状态数,MM是全部的可能的观察状态数。
对于一个长度为TT的序列,II对应的状态序列, OO是对应的观察序列,即:学习

 

I={i1,i2,...,iT},O={o1,o2,...oT}I={i1,i2,...,iT},O={o1,o2,...oT}深度学习

其中,任意一个隐藏状态it∈Qit∈Q,任意一个观察状态ot∈Vot∈V
HMM模型作了两个很重要的假设以下:
1) 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态。固然这样假设有点极端,由于不少时候咱们的某一个隐藏状态不单单只依赖于前一个隐藏状态,多是前两个或者是前三个。可是这样假设的好处就是模型简单,便于求解。若是在时刻tt的隐藏状态是it=qiit=qi,在时刻t+1t+1的隐藏状态是it+1=qjit+1=qj, 则从时刻tt到时刻t+1t+1的HMM状态转移几率aijaij能够表示为:博客

 

aij=P(it+1=qj|it=qi)aij=P(it+1=qj|it=qi)数学

这样aijaij能够组成马尔科夫链的状态转移矩阵AA:it

 

A=[aij]N×NA=[aij]N×N基础

2) 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。若是在时刻tt的隐藏状态是it=qjit=qj, 而对应的观察状态为ot=vkot=vk, 则该时刻观察状态vkvk在隐藏状态qjqj下生成的几率为bj(k)bj(k),知足:神经网络

 

bj(k)=P(ot=vk|it=qj)bj(k)=P(ot=vk|it=qj)

这样

 

bj(k)bj(k)

能够组成观测状态生成的几率矩阵BB:

 

B=[bj(k)]N×MB=[bj(k)]N×M

除此以外,咱们须要一组在时刻t=1t=1的隐藏状态几率分布ΠΠ:

 

Π=[π(i)]N其中π(i)=P(i1=qi)Π=[π(i)]N其中π(i)=P(i1=qi)

一个HMM模型,能够由隐藏状态初始几率分布ΠΠ, 状态转移几率矩阵AA和观测状态几率矩阵BB决定。Π,AΠ,A决定状态序列,BB决定观测序列。所以,HMM模型能够由一个三元组λλ表示以下:

相关文章
相关标签/搜索