隐马尔科夫模型HMM-过程了解

来源:互联网 发布:生物医学文献数据库 编辑:程序博客网 时间:2024/05/06 00:52

  HMM模型是个经典模型,处理的是序列的判决问题。本文大体讲解一下HMM的过程,而对其原理不作深入探究。

一阶马尔科夫模型

  判断一个状态vi到另一个状态vj的转变。
  比如今天的天气状态是“晴天”,那明天的天气状态是?,我们推测极大的可能也是“晴天”。这就是一个简单的一阶马尔科夫模型的应用。
  一阶马尔科夫假设:每个状态只依赖于前一个状态。(不是依赖于其前几个状态)
  前后关系用时间tt+1表示,则前后状态的转移概率为:P(vj(t+1)|vi(t))=aij
  表示在当前时刻t时,状态vi向下一时刻t+1状态vj的转移概率。
  

一阶马尔科夫图示(w就是s)

  
一阶马尔科夫

一阶隐马尔科夫模型

  含有隐藏状态s(t),目标仍然是判断可视状态v(t)的转变。
  我们若是只能观测到某一状态,但是可观测状态是由隐含的某一状态决定的,那么就需要隐马尔科夫模型出马了。
  独立性假设:可视状态只取决于当前隐藏状态。
  P(vk(t)|sj(t))=bjk
  齐次马尔科夫假设:每个状态只依赖于前一个状态。
  P(vj(t+1)|vi(t))=aij
  归一化约束:jaij=1kbkj=1
  

一阶隐马尔科夫的图示(w就是s)

  
一阶隐马尔科夫

  下面解决三个关键问题:
  估值:计算可视序列VT=v1,v2,v3,...,vn出现的概率。根据转移概率aijbjk
  解码:根据可视序列VT=v1,v2,v3,...,vn及转移概率aijbjk,计算最可能出现的隐状态序列ST=s1,s2,s3,...,sn
  学习:由一组样本序列确定状态转移概率aijbjk及隐状态的先验概率πi

HMM估值

  已知HMM模型(aijbjk),如何求解产生可视序列VT的概率。
  可视序列的产生概率如下:
  P(VT)=rmaxr=1P(VT|STr)P(STr)
  其中rmaxc个隐状态时的可能隐序列种数。
  因为隐序列的当前状态仅仅取决于前一状态,故:
  P(ST)=Tt=1P(st|st1)
  因为当前可视状态仅仅由当前隐状态决定,故:
  P(VT|ST)=P(v1|ST)P(v2|ST)...P(vT|ST)可视状态间互不影响。
  P(VT|ST)=P(v1|s1)P(v2|s2)...P(vT|sT)=Tt=1P(vt|st)
  综上所述:
  P(VT)=rmaxr=1Tt=1P(vt|st)Tt=1P(st|st1)
  P(VT)=rmaxr=1Tt=1P(vt|st)P(st|st1)
  上面这个式子计算起来实在太过复杂~现在介绍一种简单计算方法,递归地计算P(VT),累积前面的,计算当次的,再累积前面的,计算当次的,直到整个序列都计算完毕。
  设αi(t)表示HMM在t时刻,位于隐状态si,并且已经产生了可见序列VT的前t个符号的概率。
  αi=01bjkv(t)iαi(t1)aijt=0jt=0j=
  HMM前向估计的递归方法示意图(这里的w是上面的s)。
  

HMM前向估计

  HMM前向算法过程
  1. Initialize t=0,aij,bjk,可见序列VTαj(0)=1
  2. for t=t+1
  3. αj(t)=bjkv(t)ci=1αi(t1)aij
  4. until t=T
  5. returnP(VT)
  HMM后向算法过程
  1. Initialize t=T,aij,bjk,可见序列VTβj(T)
  2. for t=t1
  3. βi(t)=bjkv(t+1)cj=1βj(t+1)aij
  4. until t=1
  5. returnP(VT)
  其中,定义βi(t)为在t时刻位于状态si,并且将产生t时刻之后的目标序列(时间范围为从t+1T)的概率。
  βi(t)=01bjkv(t+1)jβj(t+1)aijsi(t)s0t=Tsi(t)=s0t=T

HMM解码

  已知一个观测序列VT,解码就是找到与其对应的最可能的隐状态序列ST
  一种简单的方法是遍历所有的可能的隐状态序列的概率,选择最大的作为解码结果。但是这很明显不现实,因为计算量实在过于巨大。
  现提供一种简单思路,把每个时刻最可能的隐状态s(t)找到。
  HMM解码算法(Viterbi)
  1. Initialize pahtt=0
  2.   for t=t+1
  3.     j=1
  4.     for j=j+1
  5.       αj(t)=bjkv(t)ci=1αi(t1)aij
  6.     until j=c
  7.     j=argmaxjαj(t)
  8.     将隐状态sj添加到path
  9.   until t=T
  10.  return path
  这种解码方法(维特比算法)的缺点是:不能够保证找到的路径就是合法的路径,即找到的路径有可能是不连贯的。因为是用局部最优解串联成的解。

HMM学习

  学习模型的过程就是确定模型的参数,转移概率aij,bjk及隐状态的先验概率πi
  (1)对于有监督问题
  a^ij=sisjsi
  b^ij=sjvksj
  π^i=t=1si
  (2)对于无监督问题
  解决无监督的HMM训练问题,就是大名鼎鼎的Baum-Welch算法,也叫前向-后向算法。
  该算法是“广义期望最大化算法”的一种具体实现,其核心思想是:通过递归方式更新权重,以得到能够更好地描述(解释)训练样本的模型参数。
  定义从隐状态si(t1)sj(t)的概率γij(t)如下:
  

γij(t)=αi(t1)aijbjkβj(t)P(VT|θ)

  其中,P(VT|θ)是模型用任意的隐含路径产生序列VT的概率,γij(t)则表示了在产生可序列VT的条件下,从隐状态si(t1)sj(t)的概率。
  aij的估计值aij^如下,K表示可转移的状态数量:
  
a^ij=Tt=1γij(t)Tt=1Kk=1γik(t)

  上式中,分子表示了sisj的期望;分母表示了si转移的总期望。
  bjk的估计值bjk^如下:
  
b^jk=Tt=1v(t)=vkγik(t)Tt=1γik(t)

  上式中,分子表示了隐状态sj对应的特定的可视状态vk对应的频次;分母表示了隐状态sj对应的所有的可视状态的频次。
  ?初始状态概率怎么确定的?
  前向-后向算法过程
  1. Initial aij,bjk训练序列VT,收敛判据θz=0
  2.   doz=z+1
  3.     a(z1)b(z1)a^(z)
  4.     a(z1)b(z1)b^(z)
  5.     update:
  6.     aij(z)=a^ij(z1)
  7.     bjk(z)=b^jk(z1)
  8.   until maxi,j,k[aij(z)aij(z1),bjk(z)bjk(z1)]<θ
  9.   return aij=aij(z);
           bjk=bjk(z)
  πi=s1=siVT=P(VT,s1=si|a,b)P(VT|a,b)
  πi是隐状态的先验概率估计,需要根据样本推测隐状态样本,然后计算。

小结

  HMM算法是个经典算法,在语音识别、自然语言处理、生物信息等领域应用广泛。隐马尔科夫模型是关于时序的概率模型,描述一个由隐藏的马尔科夫链随机生成不可观测的状态的序列,再由各个状态随机生成一个观测值而产生观测序列的过程。

0 0
原创粉丝点击