基本概念
要理解隐马尔科夫模型,首先要回答三个问题
1)什么是马尔科夫性?
2)什么是马尔科夫链?
3)什么是马尔科夫过程?
马尔科夫性:
要介绍马尔科夫性,还要先了解下随机过程的概念。百度百科给出的随机过程的定义:
随机过程是依赖于参数的一族随机变量的全体,参数通常是时间。
一般来说,把一组随机变量定义为随机过程,在研究随机过程时人们通过表面的偶然性描述出必然的内在规律性并以概率的形式来描述这些规律。
设 { X ( T ) , t ∈ T } \{X(T),t∈T\} {X(T),t∈T}为一随机过程,E为其状态空间,若对任意的 t 1 < t 2 < … … < t n < t t_1<t_2<……<t_n<t t1<t2<……<tn<t,任意的 x 1 , x 2 , … … x n , x ∈ E x_1,x_2,……x_n,x∈E x1,x2,……xn,x∈E,随机变量 X ( t ) X(t) X(t)在已知变量 X ( t 1 ) = x 1 , … X ( t n ) = x n X(t_1)=x_1,…X(t_n)=x_n X(t1)=x1,…X(tn)=xn之下的条件分布函数只与 X ( t n ) = x n X(t_n)=x_n X(tn)=xn有关,而与 X ( t 1 ) = x 1 , … X ( t n − 1 ) = x n − 1 X(t_1)=x_1,…X(t_{n-1})=x_{n-1} X(t1)=x1,…X(tn−1)=xn−1无关,即条件分布函数满足等式:
F
(
x
,
t
∣
x
n
,
x
n
−
1
,
…
x
2
,
x
1
,
t
n
,
t
n
−
1
,
…
t
2
,
t
1
)
=
F
(
x
,
t
∣
x
n
,
t
n
)
F(x,t|x_n,x_{n-1},…x_2,x_1,t_n,t_{n-1},…t_2,t_1)=F(x,t|x_n,t_n)
F(x,t∣xn,xn−1,…x2,x1,tn,tn−1,…t2,t1)=F(x,t∣xn,tn)
即:
P
(
X
(
t
)
≤
x
∣
X
(
t
n
)
=
x
n
,
…
X
(
t
1
)
=
x
1
)
=
P
(
X
(
t
)
≤
x
∣
X
(
t
n
)
=
x
n
)
P(X(t)≤x|X(t_n)=x_n,…X(t_1)=x_1)=P(X(t)≤x|X(t_n)=x_n)
P(X(t)≤x∣X(tn)=xn,…X(t1)=x1)=P(X(t)≤x∣X(tn)=xn)
此性质称为马尔科夫性,也称作无后效性或无记忆性。
若 X ( t ) X(t) X(t)为离散型随机变量,则马尔科夫性也满足等式:
P ( X ( t ) = x ∣ X ( t n ) = x n , … X ( t 1 ) = t 1 ) = P ( X ( t ) = x ∣ X ( t n ) = x n ) P(X(t)=x|X(t_n)=x_n,…X(t_1)=t_1)=P(X(t)=x|X(t_n)=x_n) P(X(t)=x∣X(tn)=xn,…X(t1)=t1)=P(X(t)=x∣X(tn)=xn)
马尔科夫链:
马尔科夫链是指数学中具有马尔科夫性质的离散事件随机过程。该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(当前以后的未来状态)是无关的。
在马尔科夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。
马尔科夫链是满足下面两个假设的一种随机过程:
1)t+1时刻系统状态的概率分布至于t时刻的状态有关,与t时刻以前的状态无关
2)从t时刻到t+1时刻的状态状态转移与t的值无关。
一个马尔科夫模型可表示为=(S,P,Q),其中各元的含义如下:
1)S是系统所有可能的状态所组成的非空状态集,有时也称之为系统的状态空间。
2)P是系统的状态转移概率矩阵。其中
P
i
j
P_{ij}
Pij表示系统在时刻t处于状态i,在下一个时刻t+1处于状态j的概率。
3)Q是系统的初始概率分布,
q
i
q_i
qi是系统在初始时刻处于状态i的概率、
马尔科夫链的基本性质:
1)马尔科夫链是由一个条件分布来表示:
P
(
X
n
+
1
∣
X
n
)
P(X_{n+1}|X_n)
P(Xn+1∣Xn)
这被称作是随机过程中的“转移概率”。这个有时称作“一步转移概率”,二三以及更多的转移概率可以导自一步转移概率和马尔科夫性质。
2)正定性:状态转移矩阵中的每一个元素都称为状态转移概率,由概率论知识可知,每个状态转移概率皆为正数,即
p
i
j
(
k
)
≥
0
p_{ij}(k)≥0
pij(k)≥0
3)有限性,由概率论知识可知,状态转移矩阵中的每一行相加皆为1,即
∑
j
∈
I
p
i
,
j
=
1
\displaystyle\sum_{j∈I}p_{i,j}=1
j∈I∑pi,j=1
马尔科夫过程:
马尔科夫过程是一类随机过程,它的原始模型是马尔科夫链,马尔科夫过程是研究离散事件动态系统状态空间的重要方法,它的数学基础是随机过程理论。
具有马尔科夫性质的随机过程就是马尔科夫过程。
隐马尔科夫模型
隐马尔科夫模型的定义:
隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
(隐藏的马尔科夫链→随机→不可观测状态随机序列→观测随机序列)
1)隐藏的马尔科夫链随机生成的状态的序列,称为状态序列
2)每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列
3)序列的每一个位置又可以看做一个时刻
隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定
隐马尔科夫模型的形式定义如下:
设Q是所有可能的状态的集合,V是所有可能的观测的集合。
Q
=
{
q
1
,
q
2
,
…
q
N
}
,
V
=
{
v
1
,
v
2
,
…
v
M
}
Q=\{q_1,q_2,…q_N\},V=\{v_1,v_2,…v_M\}
Q={q1,q2,…qN},V={v1,v2,…vM}
其中,N是可能的状态数,M是可能的观测数。
I是长度为T的状态序列,O是对应的观测序列
I
=
(
i
1
,
i
2
,
…
i
T
)
,
O
=
(
o
1
,
o
2
,
…
o
T
)
I=(i_1,i_2,…i_T),O=(o_1,o_2,…o_T)
I=(i1,i2,…iT),O=(o1,o2,…oT)
(状态序列中的每一个元素都来自状态集合,但状态集合里面的元素不可能相同,状态序列中的元素是可以相同的,状态序列相当于一个具体的路径实例)
状态序列与观测序列是一一对应的
A是状态转移概率矩阵:
A
=
[
a
i
,
j
]
N
X
N
A=[a_{i,j}]_{NXN}
A=[ai,j]NXN
其中,
a
i
j
=
p
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
a_{ij}=p(i_{t+1}=q_j|i_t=q_i)
aij=p(it+1=qj∣it=qi)表示在时刻t处于状态
q
i
q_i
qi的条件下,在时刻t+1转移到状态
q
j
q_j
qj的概率
A是一个方阵,N是状态集合的长度。
B是观测矩阵: B = [ b j ( k ) ] N X M B=[b_j(k)]_{NXM} B=[bj(k)]NXM
其中
b
j
(
k
)
=
p
(
o
t
=
v
k
∣
i
t
=
q
j
)
,
k
=
1
,
2
,
…
M
,
j
=
1
,
2
…
N
b_j(k)=p(o_t=v_k|i_t=q_j),k=1,2,…M,j=1,2…N
bj(k)=p(ot=vk∣it=qj),k=1,2,…M,j=1,2…N
表示在时刻t出去状态
q
j
q_j
qj的条件下生成观测
v
k
v_k
vk的概率。
π
π
π是初始状态概率向量:
π
=
(
π
i
)
π=(π_i)
π=(πi)
其中,
π
i
=
p
(
i
1
=
q
i
)
,
i
=
1
,
2
,
…
N
π_i=p(i_1=q_i),i=1,2,…N
πi=p(i1=qi),i=1,2,…N是时刻t=1处于状态
q
i
q_i
qi的概率。
隐马尔科夫模型由初始状态概率向量
π
π
π、状态转移概率矩阵A和观测概率矩阵B决定。
π
π
π和A决定状态序列,B决定观测序列。因此,隐马尔科夫模型
λ
λ
λ可以用三元符号表示
λ
=
(
A
,
B
,
π
)
λ=(A,B,π)
λ=(A,B,π)
1)状态转移矩阵A与初始状态概率向量 π π π确定了隐藏的马尔科夫链,生成不可观测的状态序列
2)观测概率矩阵B确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。
从定义可知,隐马尔科夫模型作 了两个基本假设:
1)齐次马尔科夫性假设,即隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关。
P ( i t ∣ i t − 1 , o t − 1 , … i 1 , o 1 ) = P ( i t ∣ i t − 1 ) P(i_t|i_{t-1},o_{t-1},…i_1,o_1)=P(i_t|i_{t-1}) P(it∣it−1,ot−1,…i1,o1)=P(it∣it−1)
2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他时刻的观测与状态无关
P ( o t ∣ i T , o T , i T − 1 , o T − 1 , … i t + 1 , o t + 1 , i t , i t − 1 , o t − 1 , … i 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_T,o_T,i_{T-1},o_{T-1},…i_{t+1},o_{t+1},i_t,i_{t-1},o_{t-1},…i_1,o_1)=P(o_t|i_t) P(ot∣iT,oT,iT−1,oT−1,…it+1,ot+1,it,it−1,ot−1,…i1,o1)=P(ot∣it)
观测序列生成过程:
输入:隐马尔科夫模型
λ
=
(
A
,
B
,
π
)
λ=(A,B,π)
λ=(A,B,π)和观测序列长度T
输出:观测序列
O
=
(
o
1
,
o
2
,
…
o
T
)
O=(o_1,o_2,…o_T)
O=(o1,o2,…oT)
1)按照初始状态分布
π
π
π产生状态
i
1
i_1
i1
2)令t=1
3)按照状态
i
t
i_t
it的观测概率分布
b
i
t
(
k
)
生
成
o
t
b_{i_t}(k)生成o_t
bit(k)生成ot
4)按照状态
i
t
i_t
it的状态转移概率分布
{
a
i
t
,
i
t
+
1
}
\{a_{i_t,i_{t+1}}\}
{ait,it+1}产生状态
i
t
+
1
i_{t+1}
it+1
5)令 t=t+1,如果t < T,转步(3);否则终止。
隐马尔科夫模型的三个基本问题:
1)概率计算问题
2)学习问题
3)预测问题