前言
隐马尔科夫模型是一种重要的概率图模型,也是自然语言处理中一种最为快速最为有效的模型,成功的解决了语音识别,机器翻译问题,最近转自然语言处理,所以对一些相关模型进行总结,以便日后工作中可以灵活使用去解决各类自然语言问题。
马尔科夫模型
我们在日常生活中会遇到这一类问题,考察一个随机变量的序列,这些随机变量并不是相互独立的,每一个随机变量会依赖于这个序列的前面一个状态。如果有一个系统有N个有限状态
S
=
{
s
1
,
s
2
,
s
3
,
.
.
.
,
s
N
}
S=\{s_1,s_2,s_3,...,s_N\}
S={s1,s2,s3,...,sN},那么随机时间的推移,系统会从一个状态转移到另一个状态。
Q
=
(
q
1
,
q
2
,
q
3
,
.
.
.
,
q
T
)
Q=(q_1,q_2,q_3,...,q_T)
Q=(q1,q2,q3,...,qT)为随机变量的一个序列,随机变量的取值为状态集为
S
S
S中的某一个状态,假设在时间
t
t
t的状态记为
q
t
q_t
qt,那么对该系统的描述通常需要给出当前时刻
t
t
t的状态和前面所有状态的关系:系统在时间
t
t
t处于状态
s
j
s_j
sj的概率取决于其在时间
1
,
2
,
.
.
.
,
t
−
1
1,2,...,t-1
1,2,...,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,...)如果在特定的情况下,系统在时间
t
t
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)那么该系统就构成了一个离散的一阶马尔科夫链(Markov chain).
如果上式只考虑独立于时间
t
t
t的随机过程:
P
(
q
t
=
s
j
∣
q
t
−
1
=
s
i
)
=
a
i
j
,
1
≤
i
,
j
≤
N
P(q_t=s_j|q_{t-1}=s_i)=a_{ij},1\le i,j \le N
P(qt=sj∣qt−1=si)=aij,1≤i,j≤N该随机过程为马尔科夫模型。其中,状态转移概率
a
i
j
a_{ij}
aij必须满足以下条件:
a
i
j
≥
0
a_{ij} \ge 0
aij≥0
∑
j
=
1
N
a
i
j
=
1
\sum_{j=1}^{N}a_{ij}=1
j=1∑Naij=1如果有N状态的一阶马尔科夫过程就有
N
2
N^2
N2次状态转移,其
N
2
N^2
N2个状态转移概率可以表示成一个状态转移矩阵。
取个例子,如果一段文字中名词,动词,形容三类词性出现的情况可由三个状态的马尔可夫模型描述:
状态s1:名词
状态s2:动词
状态s3形容词
假设状态之间的转移矩阵为:
A
=
[
a
i
j
]
=
[
0.3
0.5
0.2
0.5
0.3
0.2
0.4
0.2
0.4
]
A=[a_{ij}]= \begin{bmatrix} 0.3 & 0.5 & 0.2 \\ 0.5 & 0.3 & 0.2 \\ 0.4 & 0.2 & 0.4 \end{bmatrix}
A=[aij]=⎣⎡0.30.50.40.50.30.20.20.20.4⎦⎤
假如该段文字中某一句子 的第一个词为名词,那么根据这一模型M,在该句子中这三类词的出现顺序为O=“名动形名”的概率为
P
(
O
∣
M
)
=
P
(
s
1
,
s
2
,
s
3
,
s
1
∣
M
)
=
P
(
s
1
)
P
(
s
2
∣
s
1
)
P
(
s
3
∣
s
2
)
P
(
s
1
∣
s
3
)
=
1
a
12
a
23
a
31
P(O|M)=P(s_1,s_2,s_3,s_1|M)=P(s1)P(s_2|s_1)P(s_3|s_2)P(s_1|s_3) =1a_{12}a_{23}a_{31}
P(O∣M)=P(s1,s2,s3,s1∣M)=P(s1)P(s2∣s1)P(s3∣s2)P(s1∣s3)=1a12a23a31
隐马尔科夫模型(HMM)
在马尔科夫模型中,每个状态代表了一个可观察的事件,但是适应性并不好,因为有时我们并不能知道模型所经过的状态序列,举个例子,假设一个暗室中有N个口袋,每个口袋有M种不同颜色的球,假设有一个人根据某一概率分布随机地选取一个初始口袋,从中概据不同颜色的球的概率分布,随机地取出一个球,并向室外的人报告该球的颜色。然后,再根据某一概率分布随机地选取一个初始口袋,从中概据不同颜色的球的概率分布取球,重复进行这个过程。这个例子中我们就不知道模型所以过的状态序列,只能知道每个状态输出的结果,我们叫做观察序列,所以总结下来,HMM由如下几个部分组成:
(1)模型中状态的数目N
(2)从每一个状态可能输出的不同符号的数目M
(3)状态转移矩阵
A
=
{
a
i
j
}
A=\{ a_{ij}\}
A={aij}
P
(
q
t
=
s
j
∣
q
t
−
1
=
s
i
)
=
a
i
j
,
1
≤
i
,
j
≤
N
P(q_t=s_j|q_{t-1}=s_i)=a_{ij},1\le i,j \le N
P(qt=sj∣qt−1=si)=aij,1≤i,j≤N
a
i
j
≥
0
a_{ij} \ge 0
aij≥0
∑
j
=
1
N
a
i
j
=
1
\sum_{j=1}^{N}a_{ij}=1
j=1∑Naij=1
(4)从状态
s
j
s_j
sj观察到符号
v
k
v_k
vk的概率分布矩阵
B
=
{
b
j
(
k
)
}
B=\{b_j(k)\}
B={bj(k)}(
b
j
(
k
)
b_j(k)
bj(k)为从第
j
j
j个口袋中取出第
k
k
k种颜色的球的概率),其中,
b
j
(
k
)
=
P
(
O
t
=
v
k
∣
q
t
=
s
j
)
,
1
≤
j
≤
N
;
1
≤
k
≤
M
b_j(k)=P(O_t=v_k|q_t=s_j), 1\le j \le N;1 \le k \le M
bj(k)=P(Ot=vk∣qt=sj),1≤j≤N;1≤k≤M
b
j
(
k
)
≥
0
b_j(k) \ge 0
bj(k)≥0
∑
k
=
1
M
b
j
(
k
)
=
1
\sum_{k=1}^Mb_j(k)=1
k=1∑Mbj(k)=1这观察符号的概率又称符号概率
(5)初始状态概率分布 π = P ( q 1 = s i ) ) , 1 ≤ i ≤ N \pi = P(q_1 = s_i)), 1\le i \le N π=P(q1=si)),1≤i≤N π ≥ 0 \pi \ge 0 π≥0 ∑ i N π i = 1 \sum_i^N \pi_i = 1 i∑Nπi=1
所以总结下,一个HMM记为一个五元组
μ
=
(
S
,
K
,
A
,
B
,
π
)
\mu=(S,K,A,B,\pi)
μ=(S,K,A,B,π),其中
S
S
S就是状态集合,
K
K
K为输出符号集合,
π
\pi
π,
A
A
A和
B
B
B分别是初始状态的概率分布,状态转移概率和符号发射概率。可以简成
μ
=
(
A
,
B
,
π
)
\mu=(A,B,\pi)
μ=(A,B,π)。
以上是模型介绍部分,后面会总结关于HMM求解问题,HMM应用。