1. 隐马尔科夫模型的定义
隐马尔科夫模型(hidden Markov model,HMM),描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态(state)生成一个观测(observation)从而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态的序列,称作状态序列(state sequence), 它是模型的标签(target);每个状态生成一个观测而产生的观测的随机序列,称为观测序列(observation sequence),它是模型的特征(features)。序列的每一个位置又可以看作是一个时刻。
2. 隐马尔科夫模型成立的两个基本假设
自然语言处理任务场景中,随机序列(语言序列)的状态多是不可观测的离散型随机变量(如:单词语义、词性等),序列的观测也多是离散型变量(如:文本中的单词);而在语音识别任务中,序列的观测可以是一段连续的单词的声音波形,此时可借助高斯混合模型(Guassian Mixture model,GMM)与隐马尔科夫模型(HMM)联用进行处理。
隐马尔科夫模型(HMM)的成立,默认随机序列满足两个前提假设:即齐次马尔科夫性假设和观测独立性假设。
设随机序列中,所有可能的状态的集合为
Q
Q
Q、可能状态的个数为
N
N
N、所有可能的观测的集合为
V
V
V、可能观测值的个数为
M
M
M,则它们的表达式可表示为如下所示:
Q
=
{
q
1
,
q
2
,
⋯
,
q
N
}
Q = \{q_1, q_2, \cdots, q_N\}
Q={q1,q2,⋯,qN}
V
=
{
v
1
,
v
2
,
⋯
,
v
M
}
V = \{v_1, v_2, \cdots, v_M\}
V={v1,v2,⋯,vM}设
S
S
S 是长度为T的状态序列,
O
O
O是由
S
S
S 产生的观测序列,它们的表达式如下所示:
S
=
(
s
1
,
s
2
,
⋯
,
s
T
)
S = (s_1, s_2, \cdots, s_T)
S=(s1,s2,⋯,sT)
O
=
(
o
1
,
o
2
,
⋯
,
o
T
)
O = (o_1, o_2, \cdots, o_T)
O=(o1,o2,⋯,oT)
2.1 齐次马尔科夫性假设
齐次马尔科夫性,假设隐藏的马尔科夫链在任意时刻
t
t
t 的状态只依赖于它前一时刻的状态,与其他时刻的状态及观测无关,也与时刻
t
t
t 无关:
P
(
s
t
∣
s
t
−
1
,
o
t
−
1
,
⋯
,
s
1
,
o
1
)
=
P
(
s
t
∣
s
t
−
1
)
,
t
=
1
,
2
,
⋯
,
T
P(s_t | s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(s_t | s_{t-1}), \ \ \ \ t=1, 2, \cdots, T
P(st∣st−1,ot−1,⋯,s1,o1)=P(st∣st−1), t=1,2,⋯,T
2.2 观测独立性假设
观测独立性,假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关:
P
(
o
t
∣
s
T
,
o
T
,
s
T
−
1
,
o
T
−
1
,
⋯
,
s
t
+
1
,
o
t
+
1
,
s
t
,
s
t
−
1
,
o
t
−
1
,
⋯
,
s
1
,
o
1
)
=
P
(
o
t
∣
s
t
)
P(o_t | s_T, o_T, s_{T-1}, o_{T-1}, \cdots, s_{t+1}, o_{t+1}, \ s_t,\ s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(o_t | s_t)
P(ot∣sT,oT,sT−1,oT−1,⋯,st+1,ot+1, st, st−1,ot−1,⋯,s1,o1)=P(ot∣st)
3. 隐马尔科夫模型的表达式
隐马尔科夫模型
λ
\lambda
λ 由初始状态概率向量
π
\pi
π、状态转移概率矩阵(transition probability matrix)
A
A
A 和 观测生成概率矩阵(emission probability matrix)
B
B
B 共同决定,其表达式如下所示:
λ
=
(
A
,
B
,
π
)
\lambda = (A, B, \pi)
λ=(A,B,π)模型中,
A
A
A 与
π
\pi
π 确定了隐藏的马尔科夫链,决定如何生成不可观测的状态序列;
B
B
B 确定了如何从状态生成观测,与状态序列一起决定产生何种观测序列。如下图所示:
初始状态概率向量
π
\pi
π 的表达式可表示为:
π
=
[
π
i
]
N
×
1
=
[
P
(
s
1
=
q
i
)
]
N
×
1
\pi = [\pi_i]_{N \times 1} = [P(s_1=q_i)]_{N \times 1}
π=[πi]N×1=[P(s1=qi)]N×1
π
=
[
P
(
s
1
=
q
1
)
,
P
(
s
1
=
q
2
)
,
⋯
,
P
(
s
1
=
q
N
)
]
T
\pi = [P(s_1=q_1), P(s_1=q_2), \cdots, P(s_1=q_N)]^T
π=[P(s1=q1),P(s1=q2),⋯,P(s1=qN)]T
状态转移概率矩阵
A
A
A 的表达式可表示为:
A
=
[
a
i
j
]
N
×
N
=
[
P
(
s
t
+
1
=
q
j
∣
s
t
=
q
i
)
]
N
×
N
,
t
=
1
,
2
,
⋯
,
T
−
1
A = [a_{ij}]_{N \times N} = [P(s_{t+1} = q_j | s_t = q_i)]_{N \times N}, \ \ \ \ \ \ \ \ t=1, 2, \cdots, T-1
A=[aij]N×N=[P(st+1=qj∣st=qi)]N×N, t=1,2,⋯,T−1
A
=
(
P
(
s
t
+
1
=
q
1
∣
s
t
=
q
1
)
P
(
s
t
+
1
=
q
2
∣
s
t
=
q
1
)
⋯
P
(
s
t
+
1
=
q
N
∣
s
t
=
q
1
)
P
(
s
t
+
1
=
q
1
∣
s
t
=
q
2
)
P
(
s
t
+
1
=
q
2
∣
s
t
=
q
2
)
⋯
P
(
s
t
+
1
=
q
N
∣
s
t
=
q
2
)
⋮
⋮
⋱
⋮
P
(
s
t
+
1
=
q
1
∣
s
t
=
q
N
)
P
(
s
t
+
1
=
q
2
∣
s
t
=
q
N
)
⋯
P
(
s
t
+
1
=
q
N
∣
s
t
=
q
N
)
)
A = \begin{pmatrix} P(s_{t+1} = q_1 | s_t = q_1)& P(s_{t+1} = q_2 | s_t = q_1)& \cdots & P(s_{t+1} = q_N | s_t = q_1)\\ P(s_{t+1} = q_1 | s_t = q_2)& P(s_{t+1} = q_2 | s_t = q_2)& \cdots& P(s_{t+1} = q_N | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(s_{t+1} = q_1 | s_t = q_N)& P(s_{t+1} = q_2 | s_t = q_N)& \cdots& P(s_{t+1} = q_N | s_t = q_N) \end{pmatrix}
A=⎝⎜⎜⎜⎛P(st+1=q1∣st=q1)P(st+1=q1∣st=q2)⋮P(st+1=q1∣st=qN)P(st+1=q2∣st=q1)P(st+1=q2∣st=q2)⋮P(st+1=q2∣st=qN)⋯⋯⋱⋯P(st+1=qN∣st=q1)P(st+1=qN∣st=q2)⋮P(st+1=qN∣st=qN)⎠⎟⎟⎟⎞
观测概率矩阵
B
B
B 的表达式可表示为:
B
=
[
b
i
(
k
)
]
N
×
M
=
[
P
(
o
t
=
v
k
∣
s
t
=
q
i
)
]
N
×
M
,
t
=
1
,
2
,
⋯
,
T
B = [b_i(k)]_{N \times M} = [P(o_t = v_k|s_t = q_i)]_{N \times M}, \ \ \ \ \ \ \ \ \ t=1, 2, \cdots, T
B=[bi(k)]N×M=[P(ot=vk∣st=qi)]N×M, t=1,2,⋯,T
B
=
(
P
(
o
t
=
v
1
∣
s
t
=
q
1
)
P
(
o
t
=
v
2
∣
s
t
=
q
1
)
⋯
P
(
o
t
=
v
M
∣
s
t
=
q
1
)
P
(
o
t
=
v
1
∣
s
t
=
q
2
)
P
(
o
t
=
v
2
∣
s
t
=
q
2
)
⋯
P
(
o
t
=
v
M
∣
s
t
=
q
2
)
⋮
⋮
⋱
⋮
P
(
o
t
=
v
1
∣
s
t
=
q
N
)
P
(
o
t
=
v
2
∣
s
t
=
q
N
)
⋯
P
(
o
t
=
v
M
∣
s
t
=
q
N
)
)
B = \begin{pmatrix} P(o_t = v_1 | s_t = q_1)& P(o_t = v_2 | s_t = q_1)& \cdots & P(o_t = v_M | s_t = q_1)\\ P(o_t = v_1 | s_t = q_2)& P(o_t = v_2 | s_t = q_2)& \cdots& P(o_t = v_M | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(o_t = v_1 | s_t = q_N)& P(o_t = v_2 | s_t = q_N)& \cdots& P(o_t = v_M | s_t = q_N) \end{pmatrix}
B=⎝⎜⎜⎜⎛P(ot=v1∣st=q1)P(ot=v1∣st=q2)⋮P(ot=v1∣st=qN)P(ot=v2∣st=q1)P(ot=v2∣st=q2)⋮P(ot=v2∣st=qN)⋯⋯⋱⋯P(ot=vM∣st=q1)P(ot=vM∣st=q2)⋮P(ot=vM∣st=qN)⎠⎟⎟⎟⎞
4. 隐马尔科夫模型解决的三个基本问题
4.1 观测序列概率计算
此问题,给定模型
λ
=
(
A
,
B
,
π
)
\lambda = (A, B, \pi)
λ=(A,B,π),求观测序列
O
=
(
o
1
,
o
2
,
⋯
,
o
T
)
O = (o_1, o_2, \cdots, o_T)
O=(o1,o2,⋯,oT) 出现的概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)。
具体请详见作者文章:隐马尔科夫模型(HMM):计算观测序列的出现概率
4.2 状态序列推论
此问题,给定模型
λ
=
(
A
,
B
,
π
)
\lambda = (A, B, \pi)
λ=(A,B,π)和观测序列
O
=
(
o
1
,
o
2
,
⋯
,
o
T
)
O = (o_1, o_2, \cdots, o_T)
O=(o1,o2,⋯,oT),求在此条件下出现概率最大的状态序列
S
=
(
s
1
,
s
2
,
⋯
,
s
T
)
S = (s_1, s_2, \cdots, s_T)
S=(s1,s2,⋯,sT);即,给定模型
λ
=
(
A
,
B
,
π
)
\lambda = (A, B, \pi)
λ=(A,B,π)和观测序列
O
=
(
o
1
,
o
2
,
⋯
,
o
T
)
O = (o_1, o_2, \cdots, o_T)
O=(o1,o2,⋯,oT),求令条件概率
P
(
S
∣
O
)
P(S|O)
P(S∣O) 最大的状态序列
S
=
(
s
1
,
s
2
,
⋯
,
s
T
)
S = (s_1, s_2, \cdots, s_T)
S=(s1,s2,⋯,sT)。
具体请详见作者文章:隐马尔科夫模型(HMM):状态序列推论
4.3 模型参数估计
此问题,给定观测序列
O
=
(
o
1
,
o
2
,
⋯
,
o
T
)
O = (o_1, o_2, \cdots, o_T)
O=(o1,o2,⋯,oT),求令(给定)观测序列出现概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ) 最大的模型参数
(
A
,
B
,
π
)
(A, B, \pi)
(A,B,π)。
具体请详见作者文章: