1. 基本概念
1.1 HMM定义
隐马尔可夫模型(简称HMM),描述由隐藏的马尔可夫链随机生成不可观测的状态序列,再由各个状态生成观测序列的过程。隐藏的马尔可夫链生成的不可观测的状态随机序列称为状态序列。每一个状态可生成一个观测,各个状态产生的随机序列称为观测序列。
如输入法通过输入的拼音串(观测序列),判断实际想要输入的句子(状态序列)。
1.2. HMM三要素
隐藏状态集合
Q={q1,⋯,qN},观测集合
V={v1,⋯,vM},状态序列
I=(i1,⋯,iT),观测序列
O=(o1,⋯,oT)。
(1)状态转移矩阵
若时刻
t处于隐藏状态
qi,在时刻
t+1处于隐藏状态为
qj,则从时刻
t到时刻
t+1的状态转移概率
aij=P(it+1=qj∣it=qi),i=1,2,⋯,N;j=1,2,⋯,N
则状态转移矩阵
A=[aij]N×N。
(2)观测概率矩阵
若时刻
t处于隐藏状态是
qj,而观测到状态
vk,则从隐藏状态
qj生成观测状态
vk的概率
bj(k)=P(ot=vk∣it=qj),k=1,2,⋯,M;j=1,2,⋯,N
则观测概率矩阵
B=[bj(k)]N×M,其中
N个隐藏状态,
M个观测状态。
(3)初始状态概率向量
若初始时刻
t=1处于状态
qi的概率
πi=P(i1=qi),i=1,2,⋯,N
则所有初始状态的概率组成向量,即
Π=(πi)
HMM由初始状态概率向量
π、状态转移概率矩阵
A和观测概率矩阵
B决定。
Π和
A决定状态序列,
B决定观测序列,三元组表示为
λ=(A,B,Π)。
1.3 HMM的两个假设
(1)齐次马尔可夫假设,即隐藏的马尔可夫链在任意时刻的隐藏状态只依赖于它的前一个隐藏状态。
P(it∣it−1,ot−1,⋯,i1,o1)=P(it∣it−1),t=1,2,⋯,T
(2)观测独立性假设,即任意时刻的观测状态只依赖于该时刻马尔可夫链的隐藏状态。
P(ot∣iT,oT,iT−1,oT−1,⋯,it+1,ot+1,it,it−1,ot−1,⋯,i1,o1)=P(ot∣it),t=1,2,⋯,T
1.4 HMM实例
假设有
4个盒子,每盒都装有红白两种颜色的球,如下
盒子 X |
1 |
2 |
3 |
4 |
红球数 |
5 |
3 |
6 |
8 |
白球数 |
5 |
7 |
4 |
2 |
开始时,从4个盒子等概率 随机选取一个盒子,从中抽出一个球再放回,然后从当前盒子随机转移到下一个盒子。规则是:
P(X=2∣X=1)=1P(X=1∣X=2)=0.4,P(X=3∣X=2)=0.6P(X=2∣X=3)=0.4,P(X=4∣X=3)=0.6P(X=3∣X=4)=0.5,P(X=4∣X=4)=0.5
如此重复进行5次,得到球颜色的观测序列
O={红,红,白,白,红}
例子中,盒子的序列是状态序列(未知),球的颜色序列是观测序列(已知)。根据以上条件,HMM三要素
(1)状态转移矩阵
A=⎣⎢⎢⎡00.400100.4000.600.5000.60.5⎦⎥⎥⎤
(2)观测状态生成概率矩阵
B=⎣⎢⎢⎡0.50.30.60.80.50.70.40.2⎦⎥⎥⎤
(3)隐藏状态的初始概率分布
Π=(0.25,0.25,0.25,0.25)T
1.5 HMM的3个基本问题
(1)概率计算问题
已知模型
λ=(A,B,Π)和观测序列
O=(o1,o2,⋯,oT),求模型
λ下观测序列
O出现的概率
P(O∣λ)。
(2)学习问题
已知观测序列
O=(o1,o2,⋯,oT),求使得观测序列概率
P(O∣λ)最大的模型
λ=(A,B,Π),可用极大似然估计求解。
(3)预测/解码问题
已知模型
λ=(A,B,Π)和观测序列
O=(o1,o2,⋯,oT),求给定模型
λ和观测序列
O下最可能的状态序列
I,即
P(I∣O,λ)。
2. 概率计算方法
已知模型
λ=(A,B,Π)和观测序列
O=(o1,o2,⋯,oT),计算模型
λ下观测序列
O出现的概率
P(O∣λ)。
2.1 直接计算法
由于已知所有隐藏状态之间的转移概率和所有从隐藏状态到观测状态的生成概率,可直接按概率公式计算。
列举所有可能的长度为
T的状态序列
I=(i1.i2,⋯,iT),分别求出各状态序列
I与观测序列
O=(o1,o2,⋯,oT)的联合概率
P(O,I∣λ),然后求和即可得到边缘分布
P(O∣λ)。
P(O∣λ)=I∑P(O,I∣λ)=I∑P(O∣I,λ)P(I∣λ)=i1,i2,⋯,iT∑[bi1(o1)bi2(o2)⋯biT(oT)][πi1ai1i2ai2i3⋯aiT−1iT]
N个状态组成长度为
T的序列有
NT种组合,直接计算法的复杂度为
O(TNT)阶,不适用于隐藏状态较多的模型。
2.2 前向算法
前向算法属于动态规划算法,通过定义局部状态“前向概率”得到递推公式,使得子问题的最优解扩展到全局问题的最优解。
给定模型
λ,在时刻
t时观测状态序列为
o1,o2,⋯,ot且隐藏状态为
qi的概率为前向概率,即
αt(i)=P(o1,o2,⋯,ot,it=qi∣λ)
如何获取动态规划的递推公式?
假设已知时刻
t的各隐藏状态
qj的前向概率
αt(j),则:
αt(j)
aji表示时刻
t观测到状态序列
o1,o2,⋯,ot且隐藏状态为
qj,而在时刻
t+1隐藏状态转移到
qi的概率;
∑j=1Nαt(j)
aji表示时刻
t观测到
o1,o2,⋯,ot并在时刻
t+1隐藏状态为
qi的联合概率;
因此前向概率
αt+1(i),即时刻
t+1隐藏状态为
qi且观测到状态序列
o1,o2,⋯,ot+1的概率为:
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)
最后迭代得到
αT(i),累加时刻
T所有可能的隐藏状态
qi的前向概率,即
∑i=1NαT(i),则求得
P(O∣λ)。
图1 前向概率递推公式
证明: 由
αt(j)=P(o1,o2,⋯,ot,it=qj∣λ),
aji=P(it+1=qi∣it=qj),且由齐次马尔可夫假设知
aji=P(it+1=qi∣it=qj)=P(it+1=qi∣o1,o2,⋯,ot,it=qj)
因此
j=1∑Nαt(j)aji=j=1∑NP(o1,o2,⋯,ot,it=qj,it+1=qi∣λ)=P(o1,o2,⋯,ot,it+1=qi∣λ)
由于
bi(ot+1)=P(ot+1∣it+1=qi),由观测独立性假设知
bi(ot+1)=P(ot+1∣o1,o2,⋯,ot,it+1=qi),故
αt+1(j)=P(o1⋯,ot,ot+1,it+1=qj∣λ)=[j=1∑Nαt(j)aji]bi(ot+1)
前向算法时间复杂度
前向算法减少计算量的原因在于每一次计算直接引用前一时刻的计算结果(动态规划缓冲),避免重复计算。
若模型
λ含
N个隐藏状态,观测序列
O的长度为
T,则
P(O∣λ)的计算量是
O(N2T)。
前向算法求解步骤
(1)初始时刻,隐藏状态
i1=qi和观测状态
o1的联合概率
α1(i)=πibi(o1)
(2)递归计算时刻
t+1部分观测序列为
o1,o2,⋯,ot且隐藏状态为
qi的前向概率
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1)
(3)终止
P(O∣λ)=i=1∑NαT(i),αT(i)=P(o1,o2,⋯,oT,iT=qi∣λ)
前向算法求解实例
考虑HMM模型
λ=(A,B,Π),状态集合
Q={1,2,3},观测集合
V={红,白},且三要素
A=⎣⎡0.50.30.20.20.50.30.30.20.5⎦⎤,B=⎣⎡0.50.40.70.50.60.3⎦⎤,Π=(0.2,0.4,0.4)T
设
O=(红,白,红),计算
P(O∣λ)。
解:
(1)初值
α1(1)=π1b1(o1)=0.10,α1(2)=π2b2(o1)=0.16,α1(3)=π3b3(o1)=0.28
(2)递推计算
α2(1)=[j=1∑3α1(j)aj1]b1(o2)=0.154∗0.5=0.077α2(2)=[j=1∑3α1(j)aj2]b2(o2)=0.184∗0.6=0.1104α2(3)=[j=1∑3α1(j)aj3]b3(o2)=0.202∗0.3=0.0606α3(1)=[j=1∑3α2(j)aj1]b1(o3)=0.04187α3(2)=[j=1∑3α2(j)aj2]b2(o3)=0.03551α3(3)=[j=1∑3α2(j)aj3]b1(o3)=0.05284
(3)终止
P(O∣λ)=i=1∑3α3(i)=0.13022
2.3 后向算法
给定HMM模型
λ,在时刻
t状隐藏态为
qi的条件下,
t+1之后的观测序列为
ot+1,ot+2,⋯,oT的概率为后向概率,即
βt(i)=P(ot+1,ot+2,⋯,oT∣it=qi,λ)
如何获取动态规划的递推公式?
βt(i)=j=1∑Nbj(ot+1)⋅βt+1(j)⋅aij
图2 后向概率递推公式
证明:
βt(i)=P(ot+1,ot+2,⋯,oT∣it=qi,λ)=j=1∑NP(ot+1,ot+2,⋯,oT,it+1=qj∣it=qi,λ)=j=1∑NP(ot+1,ot+2,⋯,oT∣it=qi,it+1=qj,λ)⋅P(it+1=qj∣it=qi,λ)=j=1∑NP(ot+1,ot+2,⋯,oT∣it+1=qj,λ)⋅aij=j=1∑NP(ot+1∣ot+2,ot+3,⋯,oT,it+1=qj,λ)⋅P(ot+2,ot+3,⋯,oT∣it+1=qj,λ)⋅aij=j=1∑NP(ot+1∣it+1=qj,λ)⋅P(ot+2,ot+3,⋯,oT∣it+1=qj,λ)⋅aij=j=1∑Nbj(ot+1)⋅βt+1(j)⋅aij
贝叶斯公式
P(X,Y∣Z)=P(X∣Y,Z)⋅P(Y∣Z)
前向算法求解步骤
(1)初值
βT(i)=1,,i=1,2,⋯,T
(2)迭代
βt(i)=j=1∑Naijbj(ot+1)βt+1(j),,i=1,2,⋯,N
(3)终止
P(O∣λ)=i=1∑Nπibi(o1)β1(i)
2.4 统一概率计算公式
由
P(O∣λ)=P(o1,o2,⋯,oT∣λ),知
P(O∣λ)=i=1∑NP(o1,⋯,ot,it=qi,ot+1,⋯,oT,∣λ)=i=1∑NP(ot+1,⋯,oT∣o1,⋯,ot,it=qt,λ)⋅P(o1,⋯,ot,it=qt∣λ)=i=1∑NP(ot+1,⋯,oT∣it=qt,λ)⋅P(o1,⋯,ot,it=qt∣λ)=i=1∑Nαt(i)βt(i)=i=1∑Nj=1∑Nαt(i)aijbj(ot+1)βt+1(j),t=1,2,⋯,T−1
上式当
t=T−1和
t=1时分别表示前向和后向概率计算公式。
由
αt(i)=P(o1,⋯,ot,it=qt∣λ)、
βt(i)=P(ot+1,⋯,oT∣it=qt,λ)易推得
αt(i)⋅βt(i)=P(o1,⋯,ot,it=qt∣λ)⋅P(ot+1,⋯,oT∣it=qt,λ)=P(o1,⋯,ot,it=qt∣λ)⋅P(ot+1,⋯,oT∣o1,⋯,ot,it=qtλ)=P(o1,⋯,oT,it=qt∣λ)=P(it=qt,O∣λ)
2.5 一些概率与期望值的计算
(1)给定模型
λ和观测序列
O,在时刻
t处于状态
qi的概率,记作
γt(i)=P(it=qi∣O,λ)=P(O∣λ)P(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
(2)给定模型
λ和观测序列
O,在时刻
t处于状态
qi且在时刻
t+1处于状态
qj的概率 ,记作
ξt(i,j)=P(it=qi,it+1=qj∣O,λ)=∑i=1N∑j=1NP(it=qi,it+1=qj,O∣λ)P(it=qi,it+1=qj∣O,λ)
其中,
P(it=qi,it+1=qj,O∣λ)=αt(i)aijbj(ot+1)βt+1(j)。
3. 学习算法
3.1 监督学习方法
已知
S个长度相同的观测序列和对应的状态序列
{(O1,I1),⋯,(Os,Is)},则可用极大似然估计法来估计HMM参数。
(1)状态转移概率估计
设样本从隐藏状态
qi转移到
qj的频数为
Aij,则状态转移矩阵
A=[a^ij],a^ij=∑k=1NAikAij
(2)观测状态生成概率估计
设样本隐藏状态为
qj且观测状态为
vi的频数为
Bji,则观测概率矩阵
B=[b^j(i)],b^j(k)=∑k=1NBjkBji
(3)初始状态概率估计
设样本中初始隐藏状态为
qi的频数为
C(i),则初始概率向量
Π=π(i)=∑k=1NC(k)C(i)
3.2 Baum-Welch算法
已知
S个长度为
T的观测序列
{O1,O2,⋯,Os},隐藏状态
I未知,HMM为含有隐变量的概率模型,即
P(O∣λ)=I∑P(O∣I,λ)⋅P(I∣λ)
可使用EM算法学习模型参数,即在
E步求出联合分布
P(O,I∣λ)基于条件概率的期望
P(I∣O,λ),
λ为当前模型参数,然后再使用
M步,更新版模型参数,直至模型参数收敛。
在E步,当前模型参数为
λ,联合部分
P(O,I∣λ)基于条件概率
P(I∣O,λ)的期望
L(λ,λ)=I∑P(I∣O,λ)logP(O,I∣λ)
在M步,极大化上式,得到更新后的模型参数
λ=argλmaxI∑P(I∣O,λ)logP(O,I∣λ)
4 预测算法
4.1 近似算法
思想:在时刻
t选择该时刻最有可能出现的状态
it∗,从而得到状态序列
I∗=(i1∗,i2∗,⋯,iT∗)作为预测结果。
给定HMM模型
λ和观测
O,时刻
t处于状态
qi的概率
γt(i)=P(it=qi∣O,λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
在每一时刻
t最有可能的状态
it∗=arg1≤i≤Nmax[γt(i)],t=1,2,⋯,T
从而得到状态序列
I∗=(i1∗,i2∗,⋯,iT∗)。近似算法不能保证预测的状态序列整体上是最可能的状态序列,近似算法未考虑相邻状态的转移概率,因此可能出现相邻状态的转移概率为0的情况。
4.2 维特比算法
维特比算法是基于动态规划解HMM的状态预测问题,即基于动态规划求最大概率路径,路径对应于隐藏状态序列。
如果最优路径在时刻
t通过节点
it∗,则最优路径从节点
it∗到节点
iT∗的部分路径,对于从
it∗到
iT∗所有可能的路径中,一定是最优的。
定义时刻
t状态为
i的所有单个路径
(i1,i2,⋯,it)中概率最大值为
δt(i)=i1,i2,⋯,it−1maxP(it=i,it−1,⋯,i1,ot,⋯,o1∣λ),i=1,2,⋯,N
递推公式
δt+1(i)=i1,i2,⋯,itmaxP(it+1=i,it,⋯,i1,ot+1,⋯,o1∣λ)=i1,i2,⋯,itmaxP(it+1=i,ot+1∣it,⋯,i1,ot,⋯,o1,λ)⋅P(it=i,it−1,⋯,i1,ot,⋯,o1∣λ)=i1,i2,⋯,itmaxP(it+1=i,ot+1∣it,λ)⋅δt(i)=i1,i2,⋯,itmaxP(it+1=i∣it,ot+1,λ)⋅P(ot+1∣it,λ)⋅δt(i)=i1,i2,⋯,itmaxP(it+1=i∣it,λ)⋅P(ot+1∣it,λ)⋅δt(i)=1≤j≤Nmax[δt(j)aji]bi(ot+1),i=1,2,…,N;t=1,2,⋯,T−1
定义时刻
t状态为
i的所有单个路径
(i1,i2,⋯,it−1,i)中概率重大的路径的第
t−1个节点
ψt(i)=arg1≤j≤Nmax[δt−1(j)aji],i=1,2,⋯,N
维特比算法求解步骤
输入:模型
λ=(A,B,Π)和观测
O=(o1,o2,⋯,oT);
输出:最优路径
I∗=(i1∗,i2∗,⋯,iT∗);
(1)初始化
δ1(i)=πibi(oi),ψ1(i)=0,i=1,2,⋯,N
(2)递推,
t=2,3,⋯,N
δt(i)=1≤j≤Nmax[δt−1aji]bi(ot),ψt(i)=arg1≤j≤Nmax[δt−1(j)aji],i=1,2,⋯,N
(3)终止
P∗=1≤j≤NmaxδT(i),iT∗=arg1≤i≤Nmax[δT(i)]
(4)最优路径回溯,对
t=T−1,T−2,⋯,1
it∗=ψt+1(it+1∗)
4.3 维特比算法求解实例
考虑HMM模型
λ=(A,B,Π),状态集合
Q={1,2,3},观测集合
V={红,白},且三要素
A=⎣⎡0.50.30.20.50.50.30.30.20.5⎦⎤,B=⎣⎡0.50.40.70.50.60.3⎦⎤,π=(0.2,0.4,0.4)T
已知观测序列
O=(红,白,红),试求最优状态序列。
解:
(1)初始化,求时刻
t=1时,每一个隐藏状态
qi观测到红色的概率
δ1(1)=0.2∗0.5=0.1,δ1(2)=0.4∗0.4=0.16,δ1(3)=0.4∗0.7=0.28,ψ1(i)=0
(2)迭代计算
当
t=2时,在
t=1时状态为
j观测为红并在
t=2时状态为
i观测为白的最大概率
δ2(1)=1≤j≤3max[δ1(j)aj1]b1(o2)=max{0.1∗0.5,0.16∗0.3,0.28∗0.2}∗0.5=0.028,ψ2(1)=3
同理
δ2(2)=0.0504,ψ2(2)=3,δ2(3)=0.042,ψ2(3)=3。
当
t=3时,
δ3(1)=0.00756,ψ3(1)=2,δ3(2)=0.01008,ψ3(2)=2,δ3(3)=0.0147,ψ3(3)=3。
(3)最优概率路径
P∗=1≤i≤3maxδ3(i)=0.0147
因此
i3∗=3,且
i2∗=ψ3(i3∗)=3,
i1∗=ψ2(i2∗)=3,故最优状态序列
I∗=(i1∗,i2∗,i3∗)=(3,3,3)。