HMM
公式推导
在 HMM 中,有两个基本假设:
-
齐次 Markov 假设(未来只依赖于当前):
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)
HMM 要解决三个问题:
- Evaluation:p(O∣λ),Forward-Backward 算法
- Learning:λ=λargmaxp(O∣λ),EM 算法(Baum-Welch)
- Decoding:I=Iargmaxp(I∣O,λ),Viterbi 算法
- 预测问题:p(it+1∣o1,o2,⋯,ot)
- 滤波问题:p(it∣o1,o2,⋯,ot)
Evaluation
p(O∣λ)=I∑p(I,O∣λ)=I∑p(O∣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∣λ)=π1t=2∏Tait−1,it
又由于:
p(O∣I,λ)=t=1∏Tbit(ot)
于是:
p(O∣λ)=I∑πi1t=2∏Tait−1,itt=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,o2,⋯,ot+1,it+1=qj∣λ)=i=1∑Np(o1,o2,⋯,ot+1,it+1=qj,it=qi∣λ)=i=1∑Np(ot+1∣o1,o2,⋯,it+1=qj,it=qi∣λ)p(o1,⋯,ot,it=qi,it+1=qj∣λ)
利用观测独立假设:
αt+1(j)=i=1∑Np(ot+1∣it+1=qj)p(o1,⋯,ot,it=qi,it+1=qj∣λ)=i=1∑Np(ot+1∣it+1=qj)p(it+1=qj∣o1,⋯,ot,it=qi,λ)p(o1,⋯,ot,it=qi∣λ)=i=1∑Nbj(ot)aijαt(i)
上面利用了齐次 Markov 假设得到了一个递推公式,这个算法叫做前向算法。
还有一种算法叫做后向算法,定义 βt(i)=p(ot+1,ot+1,⋯,oT∣it=i,λ):
p(O∣λ)=p(o1,⋯,oT∣λ)=i=1∑Np(o1,o2,⋯,oT,i1=qi∣λ)=i=1∑Np(o1,o2,⋯,oT∣i1=qi,λ)πi=i=1∑Np(o1∣o2,⋯,oT,i1=qi,λ)p(o2,⋯,oT∣i1=qi,λ)πi=i=1∑Nbi(o1)πiβ1(i)
对于这个 β1(i):
βt(i)=p(ot+1,⋯,oT∣it=qi)=j=1∑Np(ot+1,ot+2,⋯,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∑Nbj(ot+1)aijβt+1(j)
于是后向地得到了第一项。
Learning
为了学习得到参数的最优值,在 MLE 中:
λMLE=argmaxλp(O∣λ)
我们采用 EM 算法(在这里也叫 Baum Welch 算法),用上标表示迭代:
θt+1=argmaxθ∫zlogp(X,Z∣θ)p(Z∣X,θt)dz
其中,X 是观测变量,Z 是隐变量序列。于是:
λt+1=argmaxλI∑logp(O,I∣λ)p(I∣O,λt)=argmaxλI∑logp(O,I∣λ)p(O,I∣λt)
这里利用了 p(O∣λt) 和λ 无关。将 Evaluation 中的式子代入:
I∑logp(O,I∣λ)p(O,I∣λt)=I∑[logπi1+t=2∑Tlogait−1,it+t=1∑Tlogbit(ot)]p(O,I∣λt)
对 πt+1:
πt+1=argmaxπI∑[logπi1p(O,I∣λt)]=argmaxπI∑[logπi1⋅p(O,i1,i2,⋯,iT∣λt)]
上面的式子中,对 i2,i2,⋯,iT 求和可以将这些参数消掉:
πt+1=argmaxπi1∑[logπi1⋅p(O,i1∣λt)]
上面的式子还有对 π 的约束 i∑πi=1。定义 Lagrange 函数:
L(π,η)=i=1∑Nlogπi⋅p(O,i1=qi∣λt)+η(i=1∑Nπi−1)
于是:
∂πi∂L=πi1p(O,i1=qi∣λt)+η=0
对上式求和:
i=1∑Np(O,i1=qi∣λt)+πiη=0⇒η=−p(O∣λt)
所以:
πit+1=p(O∣λt)p(O,i1=qi∣λt)
Decoding
Decoding 问题表述为:
I=Iargmaxp(I∣O,λ)
我们需要找到一个序列,其概率最大,这个序列就是在参数空间中的一个路径,可以采用动态规划的思想。
定义:
δt(j)=i1,⋯,it−1maxp(o1,⋯,ot,i1,⋯,it−1,it=qi)
于是:
δt+1(j)=1≤i≤Nmaxδt(i)aijbj(ot+1)
这个式子就是从上一步到下一步的概率再求最大值。记这个路径为:
ψt+1(j)=1≤i≤Nargmaxδt(i)aij