HMM的变量定义
两个集合
- 长度为
N
的
隐状态集合
Q={q1,q2,...,qN}
- 长度为
M
的
观测值集合
V={v1,v2,...,vM}
两个序列
- 长度为
T
的
隐状态序列
I={i1,i2,...,iT}
- 长度为
T
的
观测值序列
O={o1,o2,...,oT}
【注】:集合
与序列
的区别在于,前者是指不重复的类别个数(包括
N
类隐状态、
M
类观测值);后者是指在
T
个时间点上,各观测值
ot∈{v1,v2,...,vM}
及其对应的隐状态
it∈{q1,q2,...,qN}
。
三个参数
状态转移概率矩阵
(
N×N
阶)
A=[aij]N×N
其中,
aij=P(it+1=qj|it=qi)
,表示从时刻
t→t+1
,隐状态从
qi→qj
的概率,
i∈{1,2,...,N}
,
j∈{1,2,...,N}
。
观测概率/发射概率矩阵
(
N×M
阶)
B=[bj(k)]N×M
其中,
bj(k)=P(ot=vk|it=qj)
,表示时刻
t
处于状态
qj
的条件下,生成的观测值为
vk
的概率,
j∈{1,2,...,N}
,
k∈{1,2,...,M}
。
初始状态概率向量
π=(πi)
其中,
π=P(i1=qi)
,表示在初始时刻
t=1
,各个状态的取值概率,
i∈{1,2,...,N}
。
【注】:HMM的隐状态必须是离散型变量,因此从时刻
t→t+1
,隐状态从
it→it+1
的转移概率必然是离散的,必然是由单个矩阵
AN×N
表示;而观测值不一定非得是离散型变量,也有可能是连续型。简单起见,这里以离散型观测值为例,此时发射概率由单个矩阵
BN×M
表示。
HMM的基本假设
两个假设
齐次马尔科夫假设
即假设隐藏的马尔科夫链在任意时刻
t
的状态,只依赖于其前一时刻的状态,而与其他时刻的状态、观测无关,也与时刻
t
无关:
P(it|i1,...,it−1;o1,...,ot−1)=P(it|it−1)
其中,
t∈{1,2,...,T}
。
观测独立性假设
即假设任意时刻的观测,只依赖于该时刻的马尔科夫链的状态,而与其他观测、状态无关:
P(ot|o1,...,ot−1,ot+1,...,oT;i1,...,it−1,it,it+1,...,iT)=P(ot|it)
HMM的基本问题
三个问题
概率计算问题
(Forward-Backward algorithm)
给定模型参数
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,计算在模型
λ
下,观测序列
O
出现的概率:
P(O|λ)
参数学习问题
(Baum-Welch algorithm)
已知观测序列
O=(o1,o2,...,oT)
,估计模型的参数
λ=(A,B,π)
,使得在该模型下,观测序列概率
P(O|λ)
最大,即用极大似然估计的方法估计参数:
λMLE=argmaxλ{P(O|λ)}
预测问题/解码问题
(Viterbi algorithm)
已知模型
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,计算对于给定的观测序列,能够使条件概率
P(I|O)
最大的状态序列
I=(i1,i2,...,iT)
。即给定观测序列,求最有可能的对应的状态序列:
argmaxI{P(I|O,λ)}
观测序列的生成过程
对于长度为
T
的观测序列
O=(o1,o2,...,oT)
,其生成过程如下:
π→i1→o1
i1→i2→o2
i2→i3→o3
...
iT−1→iT→oT