文章目录
隐马尔科夫模型内容较多,方便阅读,分成2个部分
上接:10_隐马尔科夫模型HMM1_统计学习方法
四、学习算法
估计模型λ=(A,B,Π)参数。
隐马尔科夫模型的学习,根据训练数据是包含观测序列和对应的状态序列还是只有观测序列,可以分为监督学习和非监督学习。
1、监督学习方法
假设已给训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2),⋯,(ON,IN)},那么可以用极大似然估计法来估计隐马尔科夫模型的参数。具体方法如下。
(1)转移概率axy的估计
设样本中时刻t 处于状态x 时刻t+1转移到状态y的频数为Axy,那么状态转移概率axy的估计是
a^xy=∑y=1NAxyAxy, x=1,2,⋯,N;y=1,2,⋯,N(30)
(2)观测概率byk的估计
设样本中状态为y并观测为k的频数是Byk,那么状态为y观测为k的概率byk的估计是
b^yk=∑k=1MBykByk, y=1,2,⋯,N;k=1,2,⋯,M(31)
(3)初始状态概率πx的估计π^x为S个样本中初始状态为qx的频数
由于监督学习需要使用训练数据,而人工标注训练数据往往代价很高,有时就会利用非监督学习的方法。
2、非监督学习方法(Baum-Welch算法)
假设给定训练数据只包含S个长度为T的观测序列{O1,O2,⋯,OS}而没有对应的状态序列,目标是学习隐马尔科夫模型λ=(A,B,Π)的参数。我们将观测序列数据看作观测数据O,状态序列数据看作不可观测的隐数据I,那么隐马尔科夫模型事实上是一个含有隐变量的概率模型
P(O∣λ)=t∑P(O∣I,λ)P(I∣λ)(32)
它的参数学习可以由EM算法实现。
(1)确定完全数据的对数似然函数
所有观测数据写成O=(o1,o2,⋯,oT),所有隐数据写成I=(i1,i2,⋯,iT),完全数据是(O,I)=(o1.o2,⋯,oT,i1,i2,⋯,iT)。完全数据的对数似然函数是lnP(O,I∣λ)。
(2)EM算法的E步:极大化Q函数Q(λ,λˉ)
argλmaxQ(λ,λˉ)=I∑P(I∣O,λˉ)lnP(O,I∣λ)=I∑P(O∣λ^)P(O,I∣λˉ)lnP(O,I∣λ)=argλmaxI∑P(O,I∣λˉ)lnP(O,I∣λ)(33)
其中λˉ是隐马尔科夫模型参数的当前估计值,λ是要极大化的隐马尔科夫模型参数 。
由式(13)有
P(O∣λ)=I∑P(O,I∣λ)=I∑P(O∣I,λ)P(I∣λ)=i1,i2,⋯,iT∑πi1bi1(o1)ai1i2bi2(o2)⋯aiT−1 iTbiT(oT)
于是函数Q(λ,λˉ)可以写成:
Q(λ,λˉ)=I∑P(O,I∣λˉ)lnπi1+I∑P(O,I∣λˉ)t=1∑T−1lnaitit+1+I∑P(O,I∣λˉ)t=1∑Tlnbit(ot)(34)
式中求和是对所有训练数据的序列总长度T进行的。
(3)EM算法的M步:极大化Q函数Q(λ,λˉ)求模型参数A,B,Π
由于要极大化的参数在式(34)中单独地出现在3个项中,所以只需对各项分别极大化,式(34)中三项分别命名为Π式、A式和B式。
1)求Π式即式(34)的第1项,可以写成:
I∑P(O,I∣λˉ)lnπi1=x=1∑NP(O,i1=qx∣λˉ)lnπx
因为有πx满足约束条件∑x=1Nπx=1,利用拉格朗日乘子法,写出拉格朗日函数:
x=1∑NP(O,i1=qx∣λˉ)lnπx+γ(x=1∑Nπx−1)
对其求偏导数并令结果为0
∂πx∂[x=1∑NP(O,i1=qx∣λˉ)lnπx+γ(x=1∑Nπx−1)]=0(35)
得
P(O,i1=qx∣λˉ)+γπx=0
对x求和得到γ
x=1∑NP(O,i1=qx∣λˉ)+x=1∑Nγπx=0⟹γ=−P(O∣λˉ)
代入式(35)即得
πx=P(O∣λˉ)P(O,i1=qx∣λˉ)=γ1(x)(36)
- 给定模型参数λˉ和观测O,在时刻1处于状态qx的概率γ1(x)。
2)A式即式(34)中的第2项,可以写成:
I∑P(O,I∣λˉ)t=1∑T−1lnaitit+1=x=1∑Ny=1∑Nt=1∑T−1P(O,it=qx,it+1=qy∣λˉ)lnaxy
相似有约束条件∑y=1Naxy=1的拉格朗日乘子法可以求出
axy=∑t=1T−1P(O,it=qx∣λˉ)∑t=1T−1P(O,it=qx,it+1=qy∣λˉ)=∑t=1T−1P(O,it=qx∣λˉ)/P(O∣λˉ)∑t=1T−1P(O,it=qx,it+1=qy∣λˉ)/P(O∣λˉ)=∑t=1T−1γt(x)∑t=1T−1ξt(x,y)(37)
- 给定模型λˉ和观测O,在时刻t 处于状态qx且在时刻t+1处于状态qy的概率ξt(x,y),在时刻t处于状态qx的概率γt(x);
- 在观测O下,状态qx转移到状态qy的期望值∑t=1T−1ξt(x,y);
- 在观测O下,由状态qx转移的期望值∑t=1T−1γt(x)。
3)B式即式(34)中的第3项,可以写成:
I∑P(O,I∣λˉ)t=1∑Tlnbit(ot)=x=1∑Nt=1∑TP(O,it=qx∣λˉ)lnbx(ot)
同样用拉格朗日乘子法,有约束条件∑k=1Nbxk=1。注意,只有在ot=vk时bx(ot)对bxk的偏导数才不为0,以I(ot=vk)表示。求得
bxk=∑t=1TP(O,it=qx∣λˉ)∑t=1TP(O,it=qx∣λˉ)I(ot=vk)=∑t=1TP(O,it=qx∣λˉ)/P(O∣λˉ)∑t=1TP(O,it=qx∣λˉ)I(ot=vk)/P(O∣λˉ)=∑t=1Tγt(x)∑t=1,ot=vkTγt(x)(38)
- 给定模型λˉ和观测O,在时刻t处于状态qx的概率γt(x);
- 在观测O下,状态qx得到观测vk的期望值∑t=1,ot=vkTγt(x);
- 在观测O下,状态qx出现的期望值∑t=1Tγt(x)。
上面求得的Π式、A式和B式可以结合式(27)、(28)和(29)更容易理解其意义。
五、预测算法
预测问题,也称为解码(decoding)问题。已知模型λ=(A,B,Π)和观测序列O=(o1,o2,⋯,oT),求对给定观测序列条件概率P(I∣O)最大的状态序列I=(i1,i2,⋯,iT)。即给定观测序列,求最有可能的对应的状态序列。隐马尔科夫模型预测两种算法:近似算法和维特比算法。
1、近似算法
近似算法的想法是,在每个时刻t选择在该时刻最有可能出现的状态it∗,从而得到一个状态序列I∗=(i1∗,i2∗,⋯,iT∗),将它作为预测的结果。
给定隐马尔科夫模型λ和观测序列O,在时刻t处于状态qx的概率γt(x)是
γt(x)=P(O∣λ)αt(x)βt(x)=∑y=1Nαt(y)βt(y)αt(x)βt(x)(39)
在每一时刻t最有可能的状态it∗是
it∗=arg1≤x≤Nmax[γt(x)],t=1,2,⋯,T(40)
从而得到状态序列I∗=(i1∗,i2∗,⋯,iT∗)。
近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分,即单个状态的最优并不能保证整体最优。上述方法得到的状态序列中有可能存在转移概率为0的相邻状态,即对某些x,y,axy=0时。
2、维特比算法
维特比算法实际是用动态规划解隐马尔科夫模型预测问题,即用动态规划求概率最大路径,这时一条路径对应着一个状态序列。
(1)最优路径特性
根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻t通过结点it∗,那么这一路经从结点it∗到终点iT∗的部分路径,对于从it∗到iT∗的所有可能的部分路径来说,必须是最优的。
- 依据上面的原理,只需从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直至得到时刻t=T状态为i的各条路径的最大概率。时刻t=T的最大概率即为最优路径的概率P∗,最优路径的终结点iT∗也同时得到。
- 为了找出最优路径的各个结点,从终结点iT∗开始,由后向前逐步求得结点iT−1∗,⋯,i1∗,得到最优路径I∗=(i1∗,i2∗,⋯,iT∗)。
为什么不在计算最大概率的时候就直接记住t时刻的概率最大的状态呢?最终求得最大概率后,最优的状态序列I∗不就直接求出了吗?
因为t时刻的最优状态需要t+1时刻来确认验证,而t+1时刻的状态需要t+2时刻验证,所以必须从最后向前才能推出最终的最优状态序列。
(2)两个变量
引入两个变量δ和ψ。定义在时刻t状态为qx的所有单个路径(i1,i2,⋯,it)中概率最大值为
δt(x)=i1,i2,⋯,it−1maxP(it=qx,it−1,⋯,i1,ot,⋯,o1∣λ),x=1,2,⋯,N(41)
δt(x)与前向概率αt(x)比较
- 前向概率是计算所有路径在时刻t状态为qx的概率,是计算指定观测序列O出现的概率;
-
δt(x)是计算在时刻t状态为qx中所有路径中的最大概率,是用于计算指定观测序列O对应的最大概率状态序列I∗。
由定义可得变量δ的递推公式:
δt+1(y)=i1,i2,⋯,itmaxP(it+1=qy,it,⋯,i1,ot+1,⋯,o1∣λ)=1≤x≤Nmax[δt(x)axy]by(ot+1),y=1,2,⋯,N;t=1,2,⋯,T−1(42)
定义在时刻t+1状态为qy的所有单个路径(i1,i2,⋯,it,qy)中概率最大的路径的第t个结点为
ψt+1(y)==arg1≤x≤Nmax[δt(x)axy]by(ot+1)arg1≤x≤Nmax[δt(x)axy],y=1,2,⋯,N(43)
加深维特比算法的理解可以参考博客:数学之美:维特比和维特比算法。
(3)维特比算法流程
输入:模型λ=(A,b,Π)和观测O=(o1,o2,⋯,oT);
输出:最优路径I∗=(i1∗,i2∗,⋯,iT∗)。
1)初始化
δ1(x)=πxbx(o1),x=1,2,⋯,N
ψ1(x)=0,x=1,2,⋯,N
2)递推。对t=1,2,⋯,T−1
δt+1(y)=1≤x≤Nmax[δt(x)axy]by(ot+1),y=1,2,⋯,N
ψt+1(y)=arg1≤x≤Nmax[δt(x)axy],y=1,2,⋯,N
3)终止
P∗=1≤y≤NmaxδT(y)
iT∗=arg1≤y≤Nmax[δT(y)]
4)最优路径回溯。对t=T−1,T−2,⋯,1
it∗=ψt+1(it+1∗)
求得最优路径I∗=(i1∗,i2∗,⋯,iT∗)。
对于隐马尔科夫模型的学习,在学习之前没有接触过相关知识。所以说我的这篇总结很适合刚入门的小白,回过头来看我总结的大部分内容来自李航老师的统计学习方法,既然是对统计学习方法的学习总结,那么我尽可能基于书本来做总结,另外学习过程中发现书确实非常不错,只是在某些方面可能有些简化,对于刚入门的来说不那么好理解。我认为理解有困难的地方,对其进行了补充说明和图示,另外我把书中所有使用i,j的地方进行了替换成x,y,以免与状态序列I发生混淆。
这个模型感觉非常好,可以解决很多问题啊!后面在练习中进一步加深理解。
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
未完待续……
参考资料