【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)=aij
其中 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
冷知识
马尔可夫是苏联人,他是切比雪夫的学生。