HMM模型及其在中文分词中的应用
隐马尔可夫模型是一种概率模型,用于解决序列预测问题,可以对序列数据中的上下文进行建模。HMM用于描述含有隐含未知参数的马尔可夫过程。在HMM中,有两种类型的节点,分别为观测序列与状态序列。状态序列是不可见的,它们的值是需要通过对观测序列进行推断而得到的。很多现实应用可以抽象为此类问题,如语音识别、分词、词性标注、计算机视觉中的动作识别等。HMM在这些问题中得到了成功的应用。
马尔可夫模型
马尔可夫模型描述的是一类典型的随机过程,即系统的状态随时间变化而随机变化的过程。马尔可夫模型由有限状态集 s s s 、初始时刻的状态概率分布 π \pi π 和 状态转移概率矩阵 A A A 三部分组成,有了这三部分,马尔可夫模型可以计算出系统每一时刻处于各种状态的概率。
下面我们先具体介绍一下这三部分:
有限状态集 s s s
设一个系统有有限个状态 S = { s 1 , s 2 , . . . , s N } S=\{s_1,s_2,...,s_N\} S={ s1,s2,...,sN}。随着时间推移,该系统将从某一状态转移到另一状态。从1时刻开始到T时刻为止,系统所有时刻的状态值构成一个随机变量序列,即状态序列,如下所示:
Q = q 1 , q 2 , . . . , q t Q=q_1,q_2,...,q_t Q=q1,q2,...,qt
其中, q i q_i qi表示第 i i i时刻系统的状态,其具体取值未知,但应在上述有限个状态 S = { s 1 , s 2 , . . . , s N } S=\{s_1,s_2,...,s_N\} S={ s1,s2,...,sN}中取值。
初始时刻的状态概率分布 π \pi π
初始时刻的状态概率分布为:
π = ( π 1 , π 2 , . . . , π N ) , 1 ≤ i ≤ N \pi=(\pi_1,\pi_2,...,\pi_N),1 \le i \le N π=(π1,π2,...,πN),1≤i≤N
其中, π = ( π 1 , π 2 , . . . , π N ) \pi=(\pi_1,\pi_2,...,\pi_N) π=(π1,π2,...,πN)满足下列各条件:
π i = P ( q 1 = s i ) \pi_i=P(q_1=s_i) πi=P(q1=si)
π i ≥ 0 \pi_i \ge 0 πi≥0
∑ i = 0 N π i = 1 \sum\limits_{i=0}^N \pi_i =1 i=0∑Nπi=1
状态转移概率矩阵 A A A
系统在不同时刻可以处于同一种状态,但在任一时刻只能有一种状态。不同时刻的状态之间是有关系的。时刻t的状态由它之前时刻的状态决定,即当前时刻t处于状态的概率取决于其在时间1,2,…,t-1时刻的状态,系统状态的条件概率如下所示:
P ( q t ∣ q 1 , q 2 , . . . , q t − 1 ) P(q_t|q_1,q_2,...,q_{t-1}) P(qt∣q1,q2,...,qt−1)
上式中的条件概率要考虑之前所有时刻的状态,计算起来较为复杂,为此需要进行简化。如果假设t时刻的状态只与t-1时刻的状态有关,与更早的时刻无关,则上式的条件概率可简化为如下所示。
P ( q t ∣ q 1 , q 2 , . . . , q t − 1 ) = P ( q t ∣ q t − 1 ) P(q_t|q_1,q_2,...,q_{t-1})=P(q_t|q_{t-1}) P(qt∣q1,q2,...,qt−1)=P(qt∣qt−1)
上式称为一阶马尔可夫假设,满足这一假设的马尔可夫模型称为一阶马尔可夫模型。
设 t − 1 t-1 t−1时刻的状态为 s j s_j sj, t t t时刻的状态为 s j s_j sj,条件概率 P ( q t ∣ q t − 1 ) P(q_t|q_{t-1}) P(qt∣qt−1)构成一个 N × N N \times N N×N的矩阵 A A A(如下图,从 t − 1 t-1 t−1时刻到 t t t 时刻的状态转移共有 N × N N \times N N×N种可能),称为状态概率转移矩阵,具体可表示为:
A = ( P ( q t = s 1 ∣ q t − 1 = s 1 ) P ( q t = s 2 ∣ q t − 1 = s 1 ) … P ( q t = s N ∣ q t − 1 = s 1 ) P ( q t = s 1 ∣ q t − 1 = s 2 ) P ( q t = s 2 ∣ q t − 1 = s 2 ) … P ( q t = s N ∣ q t − 1 = s 2 ) ⋮ ⋮ … ⋮ P ( q t = s 1 ∣ q t − 1 = s N ) P ( q t = s 2 ∣ q t − 1 = s N ) … P ( q t = s N ∣ q t − 1 = s N ) ) A= \begin{pmatrix} P(q_t=s_1|q_{t-1}=s_1) & P(q_t=s_2|q_{t-1}=s_1) & \dots & P(q_t=s_N|q_{t-1}=s_1) \\ P(q_t=s_1|q_{t-1}=s_2)& P(q_t=s_2|q_{t-1}=s_2) & \dots & P(q_t=s_N|q_{t-1}=s_2) \\ \vdots & \vdots & \dots & \vdots \\ P(q_t=s_1|q_{t-1}=s_N) & P(q_t=s_2|q_{t-1}=s_N) & \dots & P(q_t=s_N|q_{t-1}=s_N)\\ \end{pmatrix} A=
P(qt=s1∣qt−1=s1)P(qt=s1∣qt−1=s2)⋮P(qt=s1∣qt−1=sN)P(qt=s2∣qt−1=s1)P(qt=s2∣qt−1=s2)⋮P(qt=s2∣q