# NLP基础 : HMM 隐马尔可夫模型

13 篇文章 0 订阅
2 篇文章 0 订阅

Hidden Markov Model, HMM 隐马尔可夫模型，是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型。该模型遵循两个假设，隐性状态i只取决于前一个隐性状态i-1，而与其他先前的隐形状态无关。观测状态也只取决于当前的隐形状态。因此我们常常将隐马尔科夫模型表现为一种如下图所示链式的模型。

##### 1. 大小为 N*N (N代表N种隐性的状态)的过渡矩阵 A:

A = { a i j } = { P ( x t + 1 = s j ∣ x t = s i ) } = { P ( s j ∣ s i ) } A = \{a_{ij}\} = \{P(x_{t+1}=s_j|x_t=s_i)\} = \{P(s_j|s_i)\}

##### 2. 大小为 1*N 的初始概率向量 Π \Pi :

Π = π i = P ( x 1 = s i ) = P ( s i ) \Pi ={\pi_i} = {P(x_1 = s_i)} = {P(s_i)}

##### 3. 大小为 M*N 的观测矩阵 B :

B = { b k i } = { P ( y t = o k ∣ x t = s i ) } = { P ( o k ∣ s i ) } B = \{b_{ki}\} = \{P(y_t=o_k|x_t=s_i)\} = \{P(o_k|s_i)\}

previous state \ current stateD4D6D8
D4 2 3 \frac{2}{3} 1 6 \frac{1}{6} 1 6 \frac{1}{6}
D6 1 6 \frac{1}{6} 2 3 \frac{2}{3} 1 6 \frac{1}{6}
D8 1 6 \frac{1}{6} 1 6 \frac{1}{6} 2 3 \frac{2}{3}

D4D6D8
1 3 \frac{1}{3} 1 3 \frac{1}{3} 1 3 \frac{1}{3}

observed state \ hidden stateD4D6D8
1 1 4 \frac{1}{4} 1 6 \frac{1}{6} 1 8 \frac{1}{8}
2 1 4 \frac{1}{4} 1 6 \frac{1}{6} 1 8 \frac{1}{8}
3 1 4 \frac{1}{4} 1 6 \frac{1}{6} 1 8 \frac{1}{8}
4 1 4 \frac{1}{4} 1 6 \frac{1}{6} 1 8 \frac{1}{8}
50 1 6 \frac{1}{6} 1 8 \frac{1}{8}
60 1 6 \frac{1}{6} 1 8 \frac{1}{8}
700 1 8 \frac{1}{8}
800 1 8 \frac{1}{8}

##### forward algorithm 前向算法

α 1 ( t ) = P ( y 1 : t , x t = s i ) = P ( y 1 : t − 1 , x t − 1 = s 1 ) ∗ P ( s 1 ∣ s 1 ) ∗ P ( y t ∣ s 1 ) + P ( y 1 : t − 1 , x t − 1 = s 2 ) ∗ P ( s 1 ∣ s 2 ) ∗ P ( y t ∣ s 1 ) + . . . + P ( y 1 : t − 1 , x t − 1 = x N ) ∗ P ( s 1 ∣ s N ) ∗ P ( y t ∣ s 1 ) \alpha_1{(t)} = P(y_{1:t},x_t = s_i) = P(y_{1:t-1},x_{t-1}=s_1) * P(s_1|s_1) * P(y_t|s_1) \\ + P(y_{1:t-1},x_{t-1}=s_2) * P(s_1|s_2) * P(y_t|s_1) \\+ \\...\\+ P(y_{1:t-1},x_{t-1}=x_N) * P(s_1|s_N) * P(y_t|s_1)

α 1 ( t ) = α 1 ( t − 1 ) ∗ a 11 ∗ b y t , 1 + α 2 ( t − 1 ) ∗ a 21 ∗ b y t , 1 + . . . + α N ( t − 1 ) ∗ a N 1 ∗ b y t , 1 = b y t , 1 ∑ k = 1 N α k ( t − 1 ) ∗ a k 1 \alpha_1(t) = \alpha_1(t-1) * a_{11} * b_{yt,1} \\+\\ \alpha_2(t-1)*a_{21} * b_{yt,1} \\+\\ ... \\+\\ \alpha_N(t-1) * a_{N1} * b_{yt,1} \\= b_{yt,1}\sum_{k=1}^N\alpha_k(t-1) * a_{k1}
tips : a i j a_{ij} 是过渡矩阵A中第i行第j列元素， a i j = P ( x t − 1 = s j ∣ x t = s i ) a_{ij} = P(x_{t-1}=s_j|x_t=s_i) 即由前一个隐形状态 s i s_i 过渡到现状态 s j s_j 的概率。

##### 第二类问题. 在HMM模型 θ \theta 确定的情况下，给出一组显性状态链 y 1 : T y_{1:T} ，找出与其对应的可能性最大 的隐性状态序列 x 1 : T x_{1:T} 。

δ i ( t + 1 ) = [ max ⁡ j δ j ( t ) a j i ] ∗ b y t + 1 , i \delta_i(t+1) = [\max_j\delta_j(t)a_{ji}] * b_{y_{t+1},i} 在这个递推关系中，下一时刻 t + 1 t+1 每个隐性状态 i i 的最大概率 δ i ( t + 1 ) \delta_i(t+1) 总是对应上一时刻 t t 中最优路径概率 δ j ( t ) \delta_j(t) 与过渡概率 a j i a_{ji} 乘积最大的隐性状态 j j 。因此，最优的隐性状态路径序列\$\Psi_i(t) = [\argmax_j\delta_i(t)a_{ji}]。下面引用索邦大学课件上的例题作为使用维特比算法的例子 :

A = ∣ 0.3 0.5 0.2 0 0.3 0.7 0 0 1 ∣ A = \left| \begin{matrix} 0.3 & 0.5 & 0.2\\ 0 & 0.3 & 0.7\\ 0 & 0 & 1 \end{matrix} \right|

Π = ∣ 0.6 0.4 0 ∣ \Pi = \left| \begin{matrix} 0.6\\ 0.4 \\ 0 \end{matrix} \right|

B = ∣ 1 0.5 0 0 0.5 1 ∣ B = \left| \begin{matrix} 1 & 0.5 & 0\\ 0 & 0.5 & 1 \end{matrix} \right|

##### 第三类问题. Baum-Welch算法，给定一个序列 y 1 : T y_{1:T} ，估算出能最大化该序列生成概率的HMM模型的参数。

γ i ( t ) = P ( x t = s i ∣ y 1 : T ) = P ( x t = s i , y 1 : T ) P ( y 1 : T ) = α i ( t ) β i ( t ) ∑ j = 1 N α j ( t ) β j ( t ) \gamma_i(t) = P(x_t=s_i|y_{1:T}) = \frac{P(x_t=s_i,y_{1:T})}{P(y_{1:T})}=\frac{\alpha_i(t)\beta_i(t)}{\sum_{j=1}^{N}\alpha_j(t)\beta_j(t)}

t t 时刻状态是 s i s_i ，在 t + 1 t+1 时刻状态时 s j s_j 的概率 :
ξ i j = P ( x t = s i , x t + 1 = s j ∣ y 1 : T ) = P ( s j ∣ s i ) α i ( t ) β j ( t + 1 ) P ( y t + 1 ∣ s j ) P ( y 1 : T ) = a i j β j ( t + 1 ) b y t + 1 , j P ( y 1 : T ) \xi_{ij} =P(x_t=s_i,x_{t+1} =s_j|y_{1:T}) = \frac{P(s_j|s_i)\alpha_i(t)\beta_j(t+1)P(y_{t+1}|s_j)}{P(y_{1:T})} = \frac{a_{ij}\beta_j(t+1)b_{y_{t+1},j}}{P(y_{1:T})}

Π i ∗ = γ i ( 1 ) \Pi^*_i = \gamma_i(1)

a i j ∗ = P ( s j ∣ s i ) = ∑ t = 1 T − 1 ξ i j ( t ) ∑ t = 1 T − 1 γ i ( t ) a^*_{ij} = P(s_j|s_i) = \frac{\sum_{t=1}^{T-1}\xi_{ij}(t)}{\sum_{t=1}^{T-1}\gamma_{i}(t)}

b o k , i ∗ = ∑ t = 1 T α i ( t ) P ( y t ∣ s i ) 1 y t = o k ∑ t = 1 T α i ( t ) β i ( t ) b^*_{o_k,i} = \frac{\sum_{t=1}^T\alpha_i(t)P(y_t|s_i)1_{y_t=o_k}}{\sum_{t=1}^T\alpha_i(t)\beta_i(t)}

1 y t = o k = 1    w h e n    y t = o k 1_{y_t=o_k} = 1 \space\space when \space \space y_t=o_k
1 y t = o k = 0    w h e n    e l s e 1_{y_t=o_k} = 0 \space\space when \space \space else

\newline
\newline
\newline
\newline
\newline

References :

[1] Viterbi AJ (April 1967). “Error bounds for convolutional codes and an asymptotically optimum decoding algorithm”. IEEE Transactions on Information Theory. 13

• 1
点赞
• 0
收藏
• 打赏
• 0
评论
12-23 495
10-15 1000
11-23
11-12 8882
06-24 624
07-08 1万+
12-09 1569
05-24 2万+
08-09 316
02-15 4902
01-02 5511
03-09 3170

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

Cy_coding

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。