一、概述
1. 介绍
动态模型可以类比高斯混合模型这种静态模型,高斯混合模型的特点是“混合”,动态模型的特点是在“混合”的基础上加入了“时间”。动态模型包括多种模型:
DynamicModel⎩⎨⎧HMMKalmanFilterParticleFilter
隐马尔可夫模型是动态模型的一种,它的状态空间是离散的,而另外两种动态模型的状态空间是连续的。
2. 模型
隐马尔可夫模型的概率图模型如下:

概率图模型
上图中t代表时刻,阴影部分为观测变量序列O,非阴影部分为状态变量序列I,另外我们定义观测变量取值的集合为V,状态变量取值的集合为Q:
O=o1,o2,⋯,ot→V={v1,v2,⋯,vm}I=i1,i2,⋯,it→Q={q1,q2,⋯,qn}
隐马尔可夫模型的参数用λ表达:
λ=(π,A,B)
其中π为初始概率分布,是一个多维向量;A为状态转移矩阵;B为发射矩阵:
π=(π1,π2,⋯,πN),i=1∑Nπi=1A=[aij],aij=P(it+1=qj∣it=qi)B=[bj(k)],bj(k)=P(ot=vk∣it=qj)
3. 两个假设
任意时刻的状态只依赖于前一时刻的状态,即:
P(it+1∣it,it−1,⋯,i1,ot,ot−1,⋯,o1)=P(it+1∣it)
任意时刻的观测只依赖于当前时刻的状态,即:
P(ot∣it,it−1,⋯,i1,ot−1,⋯,o1)=P(ot∣it)
4. 三个问题
已知模型的参数λ=(π,A,B),计算某个观测序列发生的概率,即求:
P(O∣λ)
已知观测序列,使用EM算法求参数λ:
λMLE=λargmaxP(O∣λ)
已知观测序列O和参数λ,求使概率P(I∣O)最大的状态序列I,即:
I^=IargmaxP(I∣O)
二、Evaluation问题
对于下图中的隐马尔可夫模型,Evaluation问题是在已知参数λ的情况下,求解P(O∣λ):

1. 前向算法
首先我们有:
P(O∣λ)=I∑P(I,O∣λ)=I∑P(O∣I,λ)P(I∣λ)
对于上式中的P(I∣λ),有:
P(I∣λ)=P(i1,i2,⋯,iT∣λ)=P(iT∣i1,i2,⋯,iT−1,λ)⋅P(i1,i2,⋯,iT−1∣λ)根据齐次Markov假设:P(it∣i1,i2,⋯,it−1,λ)=P(it∣it−1)=ait−1it所以:P(I∣λ)=π(i1)t=2∏Tait−1it
对于上式中的P(O∣I,λ),有:
P(O∣I,λ)=t=1∏Tbit(ot)
因此可得:
P(O∣λ)=I∑π(i1)t=2∏Tait−1itt=1∏Tbit(ot)=复杂度:O(NT)i1∑i2∑⋯iT∑π(i1)t=2∏Tait−1itt=1∏Tbit(ot)
上面的求和是对所有的观测变量求和,所以复杂度为O(NT)
下面记:
αt(i)=P(o1,o2,⋯,ot,it=qi∣λ)
所以:
αT(i)=P(O,iT=qi∣λ)
所以可以得到:
P(O∣λ)=i=1∑NP(O,it=qi∣λ)=i=1∑NαT(i)
对于αt+1(j):
αt+1(j)=P(o1,⋯,ot,ot+1,it+1=qj∣λ)=i=1∑NP(o1,⋯,ot,ot+1,it+1=qj,it=qi∣λ)=i=1∑NP(ot+1∣o1,⋯,ot,it=qi,it+1=qj,λ)P(o1,⋯,ot,it=qi,it+1=qj∣λ)=i=1∑NP(ot+1∣it+1=qj,λ)P(o1,⋯,ot,it=qi,it+1=qj∣λ)=i=1∑Nbj(ot+1)P(it+1=qj∣o1,⋯,ot,it=qi,λ)P(o1,⋯,ot,it=qi∣λ)=i=1∑Nbj(ot+1)P(it+1=qj∣it=qi,λ)αt(i)=i=1∑Nbj(ot+1)aijαt(i)
上式利用两个假设得到了一个递推公式,这个算法叫做前向算法,其复杂度为O(TN2)。
2. 后向算法
定义:
βt(i)=P(ot+1,⋯,oT∣it=qi,λ)
所以:
P(O∣λ)=P(o1,⋯,oT∣λ)=i=1∑NP(o1,⋯,oT,i1=qi∣λ)=i=1∑NP(o1,⋯,oT∣i1=qi,λ)πiP(i1=qi∣λ)=i=1∑NP(o1∣o2,⋯,oT,i1=qi,λ)β1(i)P(o2,⋯,oT∣i1=qi,λ)πi=i=1∑NP(o1∣i1=qi,λ)β1(i)πi=i=1∑Nbi(o1)β1(i)πi
因此如果我们能找到βt(i)到βt+1(j)的递推式,就可以由通过递推得到β1(i),从而计算P(O∣λ):
βt(i)=P(ot+1,⋯,oT∣it=qi,λ)=j=1∑NP(ot+1,⋯,oT,it+1=qj∣it=qi,λ)=j=1∑NP(ot+1,⋯,oT∣it+1=qj,it=qi,λ)P(it+1=qj∣it=qi,λ)=j=1∑NP(ot+1,⋯,oT∣it+1=qj,λ)aij=j=1∑NP(ot+1∣ot+2,⋯,oT,it+1=qj,λ)P(ot+2,⋯,oT∣it+1=qj,λ)aij=j=1∑NP(ot+1∣it+1=qj,λ)βt+1(j)aij=j=1∑Nbj(ot+1)aijβt+1(j)
上式中红色的一步变换利用了概率图模型中有向图head to tail结构的性质:

这种结构满足:
A⊥C∣B⇔若B被观测,则路径被阻塞。
到此为止便得到了递推式。这就是后向算法,其复杂度也为O(TN2)。
三、Learning问题
Learning问题的目标是求解参数λ,使用的是Baum Welch算法(也就是EM算法)。
EM算法的迭代公式如下:
θ(t+1)=θargmax∫ZlogP(X,Z∣θ)⋅P(Z∣X,θ(t))dZ
在隐马尔可夫模型中,隐变量Z即为I,观测变量X即为O,参数θ即为λ,因此隐马尔可夫模型的EM算法迭代公式可以写为:
λ(t+1)=λargmaxI∑logP(O,I∣λ)⋅P(I∣O,λ(t))
上式中P(I∣O,λ(t))=P(O∣λ(t))P(O,I∣λ(t)),由于在Learning问题中,观测序列O是已知的,所以P(O∣λ(t))是个常数,迭代公式可以写为:
λ(t+1)=λargmaxI∑logP(O,I∣λ)⋅P(O,I∣λ(t))
根据之前的计算对Q函数进行整理:
Q(λ,λ(t))=I∑logP(O,I∣λ)⋅P(O,I∣λ(t))=I∑[logπ(i1)t=2∏Tait−1itt=1∏Tbit(ot)⋅P(O,I∣λ(t))]=I∑[(logπ(i1)+t=2∑Tlogait−1it+t=1∑Tlogbit(ot))⋅P(O,I∣λ(t))
接下来以求解π(t+1)为例展示迭代的过程:
π(t+1)=πargmaxQ(λ,λ(t))=πargmaxI∑logπ(i1)⋅P(O,I∣λ(t))=πargmaxi1∑i2∑⋯iT∑logπ(i1)⋅P(O,i1,i2,⋯,iT∣λ(t))=πargmaxi1∑logπ(i1)⋅P(O,i1∣λ(t))=πargmaxi=1∑Nlogπi⋅P(O,i1=qi∣λ(t))
结合对π的约束∑i=1Nπi=1,构建拉格朗日函数:
L(π,η)=i=1∑Nlogπi⋅P(O,i1=qi∣λ(t))+η(i=1∑Nπi−1)
然后对πi求导:
∂πi∂L=πi1P(O,i1=qi∣λ(t))+η=0⇒P(O,i1=qi∣λ(t))+πiη=0⇒i=1∑N[P(O,i1=qi∣λ(t))+πiη]=0⇒P(O∣λ(t))+η=0⇒η=−P(O∣λ(t))代入P(O,i1=qi∣λ(t))+πiη=0⇒πi(t+1)=P(O∣λ(t))P(O,i1=qi∣λ(t))
同样地,A(t+1)和B(t+1)都以同样的方法求出,然后不断迭代直至收敛,最终求得模型的参数。
四、Decoding问题
Decoding问题是指已知观测序列O和参数λ,求使概率P(I∣O)最大的状态序列I,即:
I^=IargmaxP(I∣O)
我们采用动态规划的思想来求解这个问题(Viterbi),首先定义:
δt(i)=i1,i2,⋯,it−1maxP(o1,o2,⋯,ot,i1,i2,⋯,it−1,it=qi)
由于参数λ是已知的,为简便起见省略了λ,接下来我们需要找到δt+1(j)和δt(i)之间的递推式:
δt+1(j)=i1,i2,⋯,itmaxP(o1,o2,⋯,ot+1,i1,i2,⋯,it,it+1=qj)=1≤i≤Nmaxδt(i)aijbj(ot+1)
由此我们就找到了动态规划的递推式,同时我们还需要记录路径(因为全局最优唯一,但最优路径不一定唯一),因此定义:
ψt+1(j)=1≤i≤Nargmaxδt(i)aij
因此:
maxP(I∣O)=maxδt(i)
使P(I∣O)最大的δt(i)指t时刻it=qi,然后由ψt(i)得到t−1时刻it−1的取值,然后继续得到前一时刻的it−2时刻的取值,最终得到整个序列I。
五、总结

HMM 是⼀种动态模型(Dynamic Model),是由混合树形模型和时序结合起来的⼀种模型(类似 GMM + Time)。对于类似 HMM 的这种状态空间模型(State Space Model),普遍的除了学习任务(采⽤ EM )外,还有推断任务。
使用X代表观测序列,Z代表隐变量序列,λ代表参数。这一类模型需要求解的问题的大体框架为:
⎩⎨⎧Learning:λMLE=λargmaxP(X∣λ)【BaumWelchAlgorithm(EM)】Inference⎩⎨⎧Decoding:Z=ZargmaxP(Z∣X,λ)【ViterbiAlgorithm】Probofevidence:P(X∣λ)【Forward、BackwardAlgorithm】Filtering:P(zt∣x1,x2,⋯,xt,λ)【ForwardAlgorithm】Smoothing:P(zt∣x1,x2,⋯,xT,λ)【Forward−BackwardAlgorithm】Prediction:{P(zt+1∣x1,x2,⋯,xt,λ)P(xt+1∣x1,x2,⋯,xt,λ)}【ForwardAlgorithm】
接下来对Filtering&Smoothing&Prediction问题做一些说明,下面使用x1:t代表x1,x2,⋯,xt,同时也省略已知参数λ。
1. Filtering问题
P(zt∣x1:t)=P(x1:t)P(x1:t,zt)=∑ztP(x1:t,zt)P(x1:t,zt)∝P(x1:t,zt)=αt
因此使用Forward Algorithm来解决Filtering问题。
Filtering问题通常出现在online learning中,当新进入一个数据,可以计算概率P(zt∣x1:t)。
2. Smoothing问题
P(zt∣x1:T)=P(x1:T)P(x1:T,zt)=∑ztP(x1:T,zt)P(x1:T,zt)
其中:
P(x1:T,zt)=P(x1:t,xt+1:T,zt)=P(xt+1:T∣x1:t,zt)⋅αtP(x1:t,zt)=βtP(xt+1:T∣zt)⋅αt=αtβt
红色这一步是使用了有向图的D划分的方法,有关讲解参照9.概率图模型。这里我们定义A集合为x1:t,B集合为xt+1:T,C集合为zt,通过D划分的方法我们可以知道xA⊥xB∣xC,即xt+1:T与x1:t是相互独立的。
由上面的式子我们可以得出:
P(zt∣x1:T)∝P(x1:T,zt)=αtβt
因此解决Smoothing问题的算法叫做Forward-Backward Algorithm。
Smoothing问题通常出现在offline learning中,当知道全部观测数据时,来计算概率P(zt∣x1:T)。
3. Prediction问题
P(zt+1∣x1:t)=zt∑P(zt+1,zt∣x1:t)=zt∑P(zt+1∣zt,x1:t)⋅P(zt∣x1:t)=zt∑P(zt+1∣zt)⋅FilteringP(zt∣x1:t)
上式应用了齐次马尔可夫假设将预测P(zt+1∣x1:t)的问题进行了转化,使用转移概率和求解Filtering问题的方法就可以计算这个概率。
P(xt+1∣x1:t)=zt+1∑P(xt+1,zt+1∣x1:t)=zt+1∑P(xt+1∣zt+1,x1:t)⋅P(zt+1∣x1:t)=zt+1∑P(xt+1∣zt+1)⋅PrecitionP(zt+1∣x1:t)
上式应用了观测独立假设将预测P(xt+1∣x1:t)的问题进行了转化,使用发射概率和求解上一个Prediction问题的方法就可以计算这个概率。
“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情”