状态集合
Q={q1,q2,…,qN}∣∣Q∣∣=N
观测集合
V={v1,v2,…,vM}∣∣V∣∣=M
状态序列
I={i1,i2,…,it,…,iT}it∈Q(t=1,2,…,T)
观测序列
O={o1,o2,…,ot,…,oT}ot∈V(t=1,2,…,T)
状态转移矩阵
A=[aij]N×N
在
t时刻处于状态
qi的条件下,在
t+1时刻转移到状态
qj的概率
aij=P(it+1=qj|it=qi)(i=1,2,…,N)(j=1,2,…,M)
观测概率矩阵
B=[bj(k)]N×M
在
t时刻处于状态
qi的条件下,生成观测
vk的概率
bj(k)=P(ot=vk|it=qj)(k=1,2,…,M)(j=1,2,…,N)
初始概率向量
π=(πi)
在时刻
t=1处于状态
qi的概率
πi=P(i1=qi)(i=1,2,…,N)
隐马尔科夫模型
λ=(A,B.π)
隐马尔科夫模型基本假设:
1. 齐次马尔科夫性假设:在任意时刻
t的状态只依赖于时刻
t−1的状态。
P(it|it−1,ot−1,…,i1,o1)=P(it|it−1)(t=1,2,…,T)
2. 观测独立性假设:任意时刻
t的观测只依赖于时刻
t的状态。
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)
观测序列生成算法:
输入:隐马尔科夫模型
λ=(A,B.π),观测序列长度
T;
输出:观测序列
O={o1,o2,…,ot,…,oT};
1. 由初始概率向量
π产生状态
i1;
2.
t=1;
3. 由状态
it的观测概率分布
bj(k)生成
ot;
4. 由状态
it的状态转移概率分布
aitit+1生成状态
it+1(it+1=1,2,…,N);
5.
t=t+1;如果
t<T,转至3.;否则,结束。
隐马尔科夫模型的3个基本问题:
1. 概率计算:已知λ=(A,B,π)和O={o1,o2,…,ot,…,oT},计算P(O|λ)
2. 学习:已知O={o1,o2,…,ot,…,oT},计算 λ∗=argmaxP(O|λ)
3. 预测(编码):已知λ=(A,B.π)和O={o1,o2,…,ot,…,oT},计算 I∗=argmaxP(I|O,λ)
前向概率
αt(i)=P(o1,o2,…,ot,it=qi|λ)
给定模型
λ,时刻
t部分观测序列为
o1,o2,…,ot且状态为
qi的概率。
前向概率递推计算
αt(i)=P(o1,o2,…,ot,it=qi|λ)=P(it=qi,ot1)=∑j=1NP(it−1=qj,it=qi,ot−11,ot)=∑j=1NP(it=qi,ot|it−1=qj,ot−11)⋅P(it−1=qj,ot−11)=∑j=1NP(it=qi,ot|it−1=qj)⋅αt−1(j)=∑j=1NP(ot|it=qi,it−1=qj)⋅P(it=qi|it−1=qj)⋅αt−1(j)=∑j=1Nbi(ot)⋅aji⋅αt−1(j)
概率计算
P(O|λ)=P(oT1|λ)=∑i=1NP(oT1,iT=qi)=∑i=1NαT(i)
观测序列概率计算的前向算法:
输入:隐马尔科夫模型
λ,观测序列
O;
输出:观测序列概率
P(O|λ);
1. 初值
α1(i)=πibi(o1)(t=1,2,…,N)
2. 递推 对
t=1,2,…,T−1 αt+1(i)=∑j=1Nbi(ot+1)⋅aji⋅αt(j)(t=1,2,…,N)
3. 终止
P(O|λ)=∑j=1NαT(i)
后向概率
βt(i)=P(ot+1,ot+2,…,oT|it=qiλ)
给定模型
λ,时刻
t状态为
qi的条件下,从时刻
t+1到时刻
T的部分观测序列为
ot+1,ot+2,…,oT的概率。
后向概率递推计算
βt(i)=P(ot+1,ot+2,…,oT|it=qi,λ)=P(oTt+1|it=qi)=P(oTt+1,it=qi)P(it=qi)=∑Nj=1P(oTt+1,it=qi,it+1=qj)P(it=qi)=∑j=1NP(oTt+1|it=qi,it+1=qj)⋅P(it=qi,it+1=qj)P(it=qi)=∑j=1NP(oTt+1|it+1=qj)⋅P(it+1=qj|it=qi)⋅P(it=qi)P(it=qi)=∑j=1NP(oNt+2,ot+1|it+1=qj)⋅aij=∑j=1NP(oTt+2|it+1=qj)⋅P(ot+1|it+1=qj)⋅aij=∑j=1Nβt+1(j)⋅bj(ot+1)⋅aij
概率计算
P(O|λ)=P(oT1|λ)=∑i=1NP(oT1,i1=qi)=∑i=1NP(i1=qi)⋅P(o1|i1=qi)⋅P(oT2|i1=qi)=∑i=1Nπibi(o1)β1(i)
观测序列概率计算的后向算法:
输入:隐马尔科夫模型
λ,观测序列
O;
输出:观测序列概率
P(O|λ);
1. 初值
βT(i)=1(t=1,2,…,N)
2. 递推 对
t=T−1,T−2,…,1 βt(i)=∑j=1Nβt+1(j)⋅bj(ot+1)⋅aij(t=1,2,…,N)
3. 终止
P(O|λ)=∑j=1Nπibi(o1)β1(i)
P(O|λ)的前向概率、后向概率的表示
P(O|λ)=P(oT1)=∑i=1N∑j=1NP(ot1,oTt+1,it=qi,it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi,it+1=qj)P(oTt+1|it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi)P(it+1=qj|it=qi)P(oTt+1|it+1=qj)=∑i=1N∑j=1NP(ot1,it=qi)P(it+1=qj|it=qi)P(ot+1|it+1=qj)P(oTt+2|it+1=qj)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)t=1,2,⋯,T−1
给定模型
λ和观测
O,在时刻
t处于状态
qi的概率
γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)=P(it=qi,O|λ)∑Nj=1(it=qi,O|λ)=P(ot1,it=qi)P(oTt+1|it=qi)∑Nj=1P(ot1,it=qi)P(oTt+1|it=qi)=αt(i)βt(i)∑Nj=1αt(i)βt(i)
给定模型
λ和观测
O,在时刻
t处于状态
qi且在时刻
t+1处于状态
qj的概率
ξt(i,j)=P(it=qi,it+1=qj|O,λ)=P(it=qi,it+1=qj,O|λ)P(O|λ)=P(it=qi,it+1=qj,O|λ)∑Ni=1∑Nj=1P(it=qi,it+1=qj,O|λ)=αt(i)aijbj(ot+1)βt+1(j)∑Ni=1∑Nj=1αt(i)aijbj(ot+1)βt+1(j)
在观测
O下状态
i出现的期望
∑t=1Tγt(i)=∑t=1TP(it=qi|O,λ)
在观测
O下由状态
i转移的期望
∑t=1T-1γt(i)=∑t=1T-1P(it=qi|O,λ)
在观测
O下由状态
i转移到状态
j的期望
∑t=1T-1ξt(i,j)=∑t=1T-1P(it=qi,it+1=qj|O,λ)
将观测序列作为观测数据
O,将状态序列作为隐数据
I,则应马尔科夫模型是含有隐变量的概率模型
P(O|λ)=∑IP(O|I,λ)P(I|λ)
完全数据
Q(λ,λ⎯⎯)函数
Q(λ,λ⎯⎯)=EI[logP(O,I|λ)|O,λ⎯⎯]=∑IlogP(O,I|λ)P(I|O,λ⎯⎯)=∑IlogP(O,I|λ)P(O,I|λ⎯⎯)P(O|λ⎯⎯)
其中,
λ⎯⎯是隐马尔科夫模型参数的当前估计值,
λ是隐马尔科夫模型参数。
由于对最大化
Q(λ,λ⎯⎯)函数,
P(O|λ⎯⎯)为常数因子,
以及
P(O,I|λ)=πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1iTbT(oT)
所以求
Q(λ,λ⎯⎯)函数对
λ的最大
λ=argmaxQ(λ,λ⎯⎯)⇔argmax∑IlogP(O,I|λ)P(O,I|λ⎯⎯)=∑Ilogπi1P(O,I|λ⎯⎯)+∑I(∑t=1T−1logaitit+1)P(O,I|λ⎯⎯)+∑I(∑t=1Tlogbit(ot))P(O,I|λ⎯⎯)
对三项分别进行极大化:
1.
max∑Ilogπi1P(O,I|λ⎯⎯)=∑i=1Nlogπi1P(O,i1=i|λ⎯⎯)s.t.∑i=1Nπi=1
构造拉格朗日函数,对其求偏导,令结果为0
∂∂πi[∑i=1Nlogπi1P(O,i1=i|λ⎯⎯)+γ(∑i=1Nπi−1)]=0
得
P(O,i1=i|λ⎯⎯)+γπi=0∑i=1N[P(O,i1=i|λ⎯⎯)+γπi]=0∑i=1NP(O,i1=i|λ⎯⎯)+γ∑i=1Nπi=0P(O|λ⎯⎯)+γ=0γ=−P(O|λ⎯⎯)
代入
P(O,i1=i|λ⎯⎯)+γπi=0,得
πi=P(O,i1=i|λ⎯⎯)P(O|λ⎯⎯)=γ1(i)
2.
max∑I(∑t=1T−1logaitit+1)P(O,I|λ⎯⎯)=∑i=1N∑j=1N∑t=1T−1logaijP(O,it=i,it+1=j|λ⎯⎯)s.t.∑j=1Naij=1
得
aij=∑T−1t=1P(O,it=i,it+1=j|λ⎯⎯)∑T−1t=1P(O,it=i|λ⎯⎯)=∑T−1t=1ξt(i,j)∑T−1t=1γt(i)
3.
max∑I(∑t=1Nlogbit(ot))P(O,I|λ⎯⎯)=∑j=1N∑t=1Tlogbj(ot)P(O,it=j|λ⎯⎯)s.t.∑k=1Mbj(k)=1
得
bj(k)=∑Tt=1P(O,it=j|λ⎯⎯)I(ot=vk)∑Tt=1P(O,it=j|λ⎯⎯)=∑Tt=1,ot=vkγt(j)∑Tt=1γt(j)
Baum-Welch算法:
输入:观测数据
O=(o1,o2,⋯,oT) 输出:隐马尔科夫模型参数
1. 初始化
对
n=0,选取
a(0)ij,bj(k)(0),π(0)i,得到模型
λ(0)=(a(0)ij,bj(k)(0),π(0)i) 2. 递推
对
n=1,2,⋯, a(n+1)ij=∑T−1t=1ξt(i,j)∑T−1t=1γt(i)bj(k)(n+1)=∑Tt=1,ot=vkγt(j)∑Tt=1γt(j)π(n+1)i=P(O,i1=i|λ⎯⎯)P(O|λ⎯⎯)
其中,右端各值按观测数据
O=(o1,o2,⋯,oT)和模型
λ(n)=(A(n),B(n),π(n))计算。
3. 终止
得到模型
λ(n+1)=(A(n+1),B(n+1),π(n+1)) 在时刻
t状态为
i的所有单个路径
(i1,i2,⋯,it)中概率最大值
δt(i)=maxi1,i2,⋯,it−1P(it=i,it−1,⋯,i1,ot,⋯,o1|λ)i=1,2,⋯,N
得递推公式
δt+1(i)=maxi1,i2,⋯,itP(it+1=i,it,⋯,i1,ot+1,⋯,o1|λ)=max1≤j≤N[maxi1,i2,⋯,it−1P(it+1=i,it=j,it−1,⋯,i1,ot+1,ot,⋯,o1|λ)]=max1≤j≤N[maxi1,i2,⋯,it−1P(it+1=i,it=j,it−1,⋯,i1,ot,ot−1,⋯,o1|λ)P(ot+1|it+1=i,λ)]=max1≤j≤N[maxi1,i2,⋯,it−1P(it=j,it−1,⋯,i1,ot,ot−1,⋯,o1|λ)P(it+1=i|it=j,λ)P(ot+1|it+1=i,λ)]=max1≤j≤N[δt(j)aji]bi(ot+1)i=1,2,⋯,N
在时刻
t状态为
i的所有单个路径
(i1,i2,⋯,it)中概率最大值的路径的第
t−1个结点
ψt(i)=argmax1≤j≤N[δt−1(j)aji]i=1,2,⋯,N
维特比算法:
输入:模型
λ=(A,B,π)和观测数据
O=(o1,o2,⋯,oT) 输出:最优路径
I∗=(i∗1,i∗2,⋯,i∗T) 1. 初始化
δ1(i)=πibi(o1)i=1,2,⋯,Nψ1(i)=0
2. 递推
对
t=2,3,⋯,T δt(i)=max1≤j≤N[δt−1(j)aji]bi(ot)i=1,2,⋯,Nψt(i)=argmax1≤j≤N[δt−1(j)aji]i=1,2,⋯,N
3. 终止
P∗=max1≤j≤NδT(i)i∗T=argmax1≤j≤N[δT(i)]
4. 最优路径回溯
对
t=T−1,T−2,⋯,1 i∗t=ψt+1(i∗t+1)
求得最优路径
I∗=(i∗1,i∗2,⋯,i∗T)