0


【NLP冲吖~】二、隐马尔可夫模型(Hidden Markov model, HMM)

0、马尔可夫模型

某一状态只由前一个状态决定,即为一阶马尔可夫模型;
状态间的转移依赖于前n个状态的过程,即为n阶马尔可夫模型

马尔科夫链:

如果

      S 
     
     
     
       t 
      
     
       + 
      
     
       1 
      
     
    
   
  
    S_{t+1} 
   
  
St+1​只依赖于前一时刻 
 
  
   
    
    
      S 
     
    
      t 
     
    
   
  
    S_t 
   
  
St​,不依赖于 
 
  
   
    
    
      S 
     
    
      1 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      S 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
  
    S_1,...,S_{t-1} 
   
  
S1​,...,St−1​,则称 
 
  
   
    
    
      S 
     
    
      1 
     
    
   
     , 
    
    
    
      S 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      S 
     
    
      T 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
  
    {S_1,S_2,...,S_T,...} 
   
  
S1​,S2​,...,ST​,...为马尔科夫链,这种性质叫做马尔可夫性。


 
  
   
   
     ∗ 
    
   
     ∗ 
    
    
    
      S 
     
    
      1 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      S 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
     , 
    
    
    
      S 
     
    
      t 
     
    
   
     , 
    
    
    
      S 
     
     
     
       t 
      
     
       + 
      
     
       1 
      
     
    
   
     ∗ 
    
   
     ∗ 
    
   
  
    **S_1, ...,S_{t-1},S_{t},S_{t+1}** 
   
  
∗∗S1​,...,St−1​,St​,St+1​∗∗


 
  
   
    
    
      S 
     
    
      1 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      S 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
  
    S_1, ...,S_{t-1} 
   
  
S1​,...,St−1​表示过去; 
 
  
   
    
    
      S 
     
    
      t 
     
    
   
  
    S_t 
   
  
St​表示现在; 
 
  
   
    
    
      S 
     
     
     
       t 
      
     
       + 
      
     
       1 
      
     
    
   
  
    S_{t+1} 
   
  
St+1​表示未来。

马尔可夫性想告诉我们的是,未来只与现在有关,与过去无关。

马尔可夫模型定义:

存在一类重要的随机过程:如果一个系统有N个状态

      S 
     
    
      1 
     
    
   
  
    S_1 
   
  
S1​, 
 
  
   
    
    
      S 
     
    
      2 
     
    
   
  
    S_2 
   
  
S2​, 
 
  
   
    
    
      S 
     
    
      3 
     
    
   
  
    S_3 
   
  
S3​,…, 
 
  
   
    
    
      S 
     
    
      N 
     
    
   
  
    S_N 
   
  
SN​,随着时间的推移,该系统从一个状态转移到另一个状态。如果用 
 
  
   
    
    
      q 
     
    
      t 
     
    
   
  
    q_t 
   
  
qt​表示系统在时间 
 
  
   
   
     t 
    
   
  
    t 
   
  
t的状态变量,那么 
 
  
   
   
     t 
    
   
  
    t 
   
  
t时刻的状态取值为 
 
  
   
    
    
      S 
     
    
      j 
     
    
   
     ( 
    
   
     1 
    
   
     < 
    
   
     = 
    
   
     j 
    
   
     < 
    
   
     = 
    
   
     N 
    
   
     ) 
    
   
  
    S_j(1<=j<=N) 
   
  
Sj​(1<=j<=N)的概率取决于前 
 
  
   
   
     t 
    
   
     − 
    
   
     1 
    
   
  
    t-1 
   
  
t−1个时刻(1,2,3,…,t-1)的状态,该概率为:

 
  
   
   
     P 
    
   
     ( 
    
    
    
      q 
     
    
      t 
     
    
   
     = 
    
    
    
      S 
     
    
      j 
     
    
   
     ∣ 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
     = 
    
    
    
      S 
     
    
      i 
     
    
   
     , 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       2 
      
     
    
   
     = 
    
    
    
      S 
     
    
      k 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     ) 
    
   
  
    P(q_t = S_j | q_{t-1} = S_i, q_{t-2} = S_k, ...) 
   
  
P(qt​=Sj​∣qt−1​=Si​,qt−2​=Sk​,...)

1、假设一:如果在特定情况下,系统在时间t的状态下只与其在时间

     t 
    
   
     − 
    
   
     1 
    
   
  
    t-1 
   
  
t−1的状态相关,则该系统构成一个离散的一阶马尔可夫链:

 
  
   
   
     P 
    
   
     ( 
    
    
    
      q 
     
    
      t 
     
    
   
     = 
    
    
    
      S 
     
    
      j 
     
    
   
     ∣ 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
     = 
    
    
    
      S 
     
    
      i 
     
    
   
     , 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       2 
      
     
    
   
     = 
    
    
    
      S 
     
    
      k 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     ) 
    
   
     = 
    
   
     P 
    
   
     ( 
    
    
    
      q 
     
    
      t 
     
    
   
     = 
    
    
    
      S 
     
    
      j 
     
    
   
     ∣ 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
     = 
    
    
    
      S 
     
    
      i 
     
    
   
     ) 
    
   
  
    P(q_t = S_j | q_{t-1} = S_i, q_{t-2} = S_k, ...) = P(q_t = S_j | q_{t-1} = S_i) 
   
  
P(qt​=Sj​∣qt−1​=Si​,qt−2​=Sk​,...)=P(qt​=Sj​∣qt−1​=Si​)

2、假设二:如果只考虑独立于时间

     t 
    
   
  
    t 
   
  
t的随机过程,状态与时间无关,那么

 
  
   
   
     P 
    
   
     ( 
    
    
    
      q 
     
    
      t 
     
    
   
     = 
    
    
    
      S 
     
    
      j 
     
    
   
     ∣ 
    
    
    
      q 
     
     
     
       t 
      
     
       − 
      
     
       1 
      
     
    
   
     = 
    
    
    
      S 
     
    
      i 
     
    
   
     ) 
    
   
     = 
    
    
    
      a 
     
    
      i 
     
    
   
     j 
    
   
  
    P(q_t = S_j | q_{t-1} = S_i) = a_ij 
   
  
P(qt​=Sj​∣qt−1​=Si​)=ai​j

其中 1<=i,j<N
即:

     t 
    
   
  
    t 
   
  
t时刻状态的概率取决于前 
 
  
   
   
     ( 
    
   
     t 
    
   
     − 
    
   
     1 
    
   
     ) 
    
   
  
    (t-1) 
   
  
(t−1)个时刻(1,2,3,…,t-1)的状态,且状态的转移与时间无关,则该随机过程为马尔可夫模型。

马尔可夫模型的两个要素是 初始状态分布 和 状态转移概率矩阵。

1、隐马尔可夫模型

在马尔可夫模型中,每个状态表示了一个可观察的事件,所以,马尔可夫模型又称为可视化马尔可夫模型(visibleMarkovmodel,VMM),这使得模型的适应性有所限制。

隐马尔可夫模型(HMM)就是为了解决这样的限制而产生的。在这样的情景下,系统中会有两组状态,一组是不可观察、隐藏的状态,另一种是可观察的状态。模型具体的状态序列是未知的,状态转移的概率是已知的。因此,该模型是一个双重随机过程,包括模型的状态转换和特定状态下可观察的事件的随机。

与马尔可夫模型相比,隐马尔可夫有三要素,分别是
初始状态为

     I 
    
   
     = 
    
   
     ( 
    
    
    
      i 
     
    
      1 
     
    
   
     , 
    
    
    
      i 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      i 
     
    
      T 
     
    
   
     ) 
    
   
  
    I = (i_1, i_2, ..., i_T) 
   
  
I=(i1​,i2​,...,iT​), 
 
  
   
    
    
      i 
     
    
      1 
     
    
   
  
    i_1 
   
  
i1​为第1个时刻的初始状态;

状态空间为

     Q 
    
   
     = 
    
   
     ( 
    
    
    
      q 
     
    
      1 
     
    
   
     , 
    
    
    
      q 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      q 
     
    
      N 
     
    
   
     ) 
    
   
  
    Q = (q_1, q_2, ..., q_N) 
   
  
Q=(q1​,q2​,...,qN​),表示有N个状态可以相互转移;

由初始状态和状态空间可得初始状态分布

     Π 
    
   
     = 
    
   
     ( 
    
    
    
      π 
     
    
      1 
     
    
   
     , 
    
    
    
      π 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      π 
     
    
      N 
     
    
   
     ) 
    
   
  
    Π = (π_1,π_2,...,π_N) 
   
  
Π=(π1​,π2​,...,πN​),其中  
 
  
   
    
    
      π 
     
    
      i 
     
    
   
     = 
    
   
     P 
    
   
     ( 
    
    
    
      i 
     
    
      1 
     
    
   
     = 
    
    
    
      q 
     
    
      i 
     
    
   
     ) 
    
   
  
    π_i = P(i_1 = q_i) 
   
  
πi​=P(i1​=qi​) 【 
 
  
   
    
    
      i 
     
    
      1 
     
    
   
  
    i_1 
   
  
i1​中的i与 
 
  
   
    
    
      q 
     
    
      i 
     
    
   
  
    q_i 
   
  
qi​中的i含义不同】

状态转移矩阵

     A 
    
   
     = 
    
   
     [ 
    
    
    
      a 
     
    
      11 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     ] 
    
   
  
    A = [a_{11},...] 
   
  
A=[a11​,...], 
 
  
   
    
    
      a 
     
    
      11 
     
    
   
  
    a_{11} 
   
  
a11​表示状态1到状态1的转换概率,A为N行N列的矩阵,每行之和为1。

观测空间为

     V 
    
   
     = 
    
   
     ( 
    
    
    
      v 
     
    
      1 
     
    
   
     , 
    
    
    
      v 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      v 
     
    
      M 
     
    
   
     ) 
    
   
  
    V = (v_1,v_2, ..., v_M) 
   
  
V=(v1​,v2​,...,vM​),表示有M个观测状态;

观测状态为

     O 
    
   
     = 
    
   
     ( 
    
    
    
      O 
     
    
      1 
     
    
   
     , 
    
    
    
      O 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      O 
     
    
      T 
     
    
   
     ) 
    
   
  
    O = (O_1,O_2,...,O_T) 
   
  
O=(O1​,O2​,...,OT​), 
 
  
   
    
    
      O 
     
    
      1 
     
    
   
  
    O_1 
   
  
O1​为初始观测状态。

观测概率矩阵

     B 
    
   
     = 
    
   
     [ 
    
    
    
      b 
     
    
      1 
     
    
   
     ( 
    
   
     1 
    
   
     ) 
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     ] 
    
   
  
    B = [b_1(1),...] 
   
  
B=[b1​(1),...], 
 
  
   
    
    
      b 
     
    
      1 
     
    
   
     ( 
    
   
     1 
    
   
     ) 
    
   
  
    b_1(1) 
   
  
b1​(1)表示在第1个状态上得到第一个观测状态的概率。

 
  
   
    
    
      b 
     
    
      j 
     
    
   
     ( 
    
   
     k 
    
   
     ) 
    
   
     = 
    
   
     P 
    
   
     ( 
    
    
    
      O 
     
    
      t 
     
    
   
     = 
    
    
    
      v 
     
    
      k 
     
    
   
     ∣ 
    
    
    
      i 
     
    
      t 
     
    
   
     = 
    
    
    
      q 
     
    
      j 
     
    
   
     ) 
    
   
  
    b_j(k) = P(O_t = v_k | i_t = q_j) 
   
  
bj​(k)=P(Ot​=vk​∣it​=qj​)

B为N行M列的矩阵,每行之和为1。

2、算法

根据隐马尔可夫模型定义,可以将一个长度为T的观测序列

     O 
    
   
     = 
    
   
     ( 
    
    
    
      o 
     
    
      1 
     
    
   
     , 
    
    
    
      o 
     
    
      2 
     
    
   
     , 
    
   
     . 
    
   
     . 
    
   
     . 
    
   
     , 
    
    
    
      o 
     
    
      T 
     
    
   
     ) 
    
   
  
    O = (o_1,o_2,...,o_T) 
   
  
O=(o1​,o2​,...,oT​)的生成过程描述为以下算法:

输入:隐马尔可夫模型 λ = (A,B,π),观测序列长度T;
输出:观测序列O = (o_1,o_2,…,o_T);
(1)按照初始状态分布π产生状态

      i 
     
    
      1 
     
    
   
  
    i_1 
   
  
i1​;

(2)令t=1;
(3)按照状态

      i 
     
    
      t 
     
    
   
  
    i_t 
   
  
it​的观测概率分布 
 
  
   
    
    
      b 
     
     
     
       i 
      
     
       t 
      
     
    
   
     ( 
    
   
     k 
    
   
     ) 
    
   
  
    b_{i_t}(k) 
   
  
bit​​(k)生成 
 
  
   
    
    
      o 
     
    
      t 
     
    
   
  
    o_t 
   
  
ot​;

(4)按照状态

      i 
     
    
      t 
     
    
   
  
    i_t 
   
  
it​的状态转移概率分布{a_{i_t},i_{t+1}} 产生状态 
 
  
   
    
    
      i 
     
     
     
       t 
      
     
       + 
      
     
       1 
      
     
    
   
     , 
    
    
    
      i 
     
     
     
       t 
      
     
       + 
      
     
       1 
      
     
    
   
  
    i_{t+1},i_{t+1} 
   
  
it+1​,it+1​ = 1,2,…,N;

(5)令

     t 
    
   
     = 
    
   
     t 
    
   
     + 
    
   
     1 
    
   
  
    t = t+1 
   
  
t=t+1,如果 
 
  
   
   
     t 
    
   
     < 
    
   
     T 
    
   
  
    t<T 
   
  
t<T,重复(3)-(5),否则,结束。

3、三个基本问题

给定一个隐马尔可夫模型(HMM),可以解决三个基本问题。

(1)评估【Evaluation】

给定HMM,即

     μ 
    
   
     = 
    
   
     [ 
    
   
     π 
    
   
     , 
    
   
     A 
    
   
     , 
    
   
     B 
    
   
     ] 
    
   
  
    μ = [π,A,B] 
   
  
μ=[π,A,B],求某个观测序列的概率。

例如:给定一段文本的隐马尔可夫模型,包括第一个单词的概率分布,单词转移概率矩阵,特定单词下该词词性的概率分布。求序列中每一个单词为某个词性的概率。

(2)解码【Decoding】

给定HMM,即

     μ 
    
   
     = 
    
   
     [ 
    
   
     π 
    
   
     , 
    
   
     A 
    
   
     , 
    
   
     B 
    
   
     ] 
    
   
  
    μ = [π,A,B] 
   
  
μ=[π,A,B],以及某个观测序列,求得其可观测序列。

例如:给定一段文本的隐马尔可夫模型,包括第一个单词的概率分布,词性转移概率矩阵,特定单词下该词词性的概率分布。并且已知每个单词的词性序列。求得词性序列对应的文本序列。

(3)学习【Learning】

给定一个观测序列,求得一个隐马尔可夫模型。
例如:已知一个文本序列。求得一个文本的隐马尔可夫模型,包含:第一个词的词性,词性转移概率矩阵,特定单词该词的词性概率分布。

4、关于三个问题的算法计算

参考大佬博客https://zhuanlan.zhihu.com/p/88362664

5、隐马尔可夫模型在NLP中的应用

NLP中序列标注(文本词性标注、命名体识别)问题https://blog.csdn.net/echoKangYL/article/details/86983973

冷知识

马尔可夫是苏联人,他是切比雪夫的学生。


本文转载自: https://blog.csdn.net/qq_44799103/article/details/135917529
版权归原作者 漂泊老猫 所有, 如有侵权,请联系我们删除。

“【NLP冲吖~】二、隐马尔可夫模型(Hidden Markov model, HMM)”的评论:

还没有评论