aihot  2020-11-12 11:20:41  OpenCV |   查看评论   

  首先我们定义一个前向变量αt(i)αt(i)是给定模型µ下,在时间t,HMM输出了序列O1O2...Ot,并且当前状态为si的概率:

前向变量

前向变量

  前向算法的主要思想是,如果可以快速的计算前向变量αt(i),那么就可以利用αt(i)计算出P(O|µ),因为P(O|µ)其实就是所有状态qt下观察到序列O1O2...OT的概率:

浅谈自然语言处理基础

 

  因为αT(i)就是输出O1O2...OT,且状态为si的概率,其实我们要的只是输出O1O2...OT,si为哪个都可以,所以这里利用全概率公式的思想,我们把时刻T下出现任意状态且观察到O1O2...OT的概率相加,即得到了观察到O1O2...OT的概率。

  我们还可以观察出前向变量αt(i)的递推公式,因为t+1时刻的前向变量α(t+1)(j)实际上就是t时刻之后,状态序列增加了一个sj,然后观察序列多输出了一个O(t+1)。所以我们先根据前面提过的全概率公式的思想计算出输出序列O1O2...Ot的概率,然后因为状态由所有可能的状态si变到了某一特定sj所以自然要乘一个对应的aij,然后我们就得到了t+1时刻下的状态序列,这个状态序列的最后一个状态是sj。然后为了得到输出序列O1O2...OtO(t+1),只需要再多乘一个bj(O(t+1)),也即状态sj发射出符号O(t+1)的概率,因为前面已经是O1O2...Ot了。也即如下式:

浅谈自然语言处理基础

 

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈自然语言处理基础(上)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]