NLP

自然语言处理——6.2 隐马尔可夫模型

2018-10-04  本文已影响14人  SpareNoEfforts

隐马尔可夫模型(Hidden Markov Model, HMM)描写

描写:该模型是一个双重随机过程,我们不知道具体的状态序列,只知道状态转移的概率, 即模型的状态转换过程是不可观察的(隐蔽 的),而可观察事件的随机过程是隐蔽状态转换过程的随机函数。

例如:N个袋子,每个袋子中有M种不同颜色的球。一实验员根据某一概率分布选择一个袋子,然后根据袋子中不同颜色球的概率分布随机取出一个球,并报告该球的颜色。对局外人:可观察的过程是不同颜色球的序列,而袋子的序列是不可观察的。每只袋子对应HMM中的一个状态;球的颜色对应于HMM中状态的输出。


HMM的组成

  1. 模型中的状态数为N(袋子的数量)
  2. 每一个状态可能输出的不同的符号数M(不同颜色球的数目)
  3. 状态转移概率矩阵A=a_{ij}a_{ij} 为实验员从一只袋子(状态S_i) 转向另一只袋子(状态S_j ) 取球的概率。其中,

\left\{ {\begin{array}{*{20}{c}} {{a_{ij}} = p({q_{t + 1}} = {S_j}|{q_t} = {S_i}),1 \leqslant i,j \leqslant N} \\ {{a_{ij}} \geqslant 0} \\ {\sum\limits_{j = 1}^N {{a_{ij}} = 1} } \end{array}} \right.

  1. 从状态S_j 观察到某一特定符号v_k概率分布矩阵为:B=b_j(k)
    其中,B=b_j(k)为实验员从第j 个袋子中取出第k 种颜色的球的概率。那么,

\left\{ {\begin{array}{*{20}{c}} {{b_{ij}} = p({O_t} = {v_k}|{q_t} = {S_j}),1 \leqslant j \leqslant N,1 \leqslant k \leqslant M} \\ {{b_j}(k) \geqslant 0} \\ {\sum\limits_{k = 1}^M {{b_j}(k) = 1} } \end{array}} \right.
5.初始状态的概率分布为:\pi = \pi_i, 其中,

\left\{ {\begin{array}{*{20}{c}} {{\pi _i} = p({q_1} = {S_i}),1 \leqslant i \leqslant N} \\ {{\pi _i} \geqslant 0} \\ {\sum\limits_{i = 1}^N {{\pi _i} = 1} } \end{array}} \right.

为了方便,一般将HMM 记为:\mu = (A,B,\pi )
或者\mu = (S,O,A,B,\pi )用以指出模型的参数集合。

给定HMM求观察序列

给定模型\mu = (A,B,\pi ),产生观察序列O=O_1O_2 …O_T:
(1)令t =1;
(2)根据初始状态分布\pi = \pi_i选择初始状态q_i = S_i;
(3)根据状态S_i 的输出概率分布b_i(k), 输出O_t=v_k;
(4)根据状态转移概率a_{ij},转移到新状态q_{t+1}=S_j;
(5)t = t+1, 如果t < T, 重复步骤(3) (4), 否则结束

三个问题

(1)在给定模型\mu=(A, B, \pi) 和观察序列O=O_1O_2…O_T的情况下,怎样快速计算概率p(O|\mu)
(2)在给定模型\mu=(A, B, \pi) 和观察序列O=O_1O_2…O_T的情况下,如何选择在一定意义下“最优”的状态序列Q = q_1 q_2 … q_T,使得该状态序列“最好地解释”观察序列?
(3)给定一个观察序列O=O_1O_2…O_T,如何根据最大似然估计来求模型的参数值?即如何调节模型的参数,使得p(O|\mu) 最大?

上一篇下一篇

猜你喜欢

热点阅读