隐马尔科夫模型(HMM)

隐马尔可夫模型(Hidden Markov Model,HMM)是含有隐藏状态的马尔可夫过程的模型。隐马尔可夫模型有两种变量,不可观察到的状态和可观察到的观测。

隐马尔可夫模型有两个基本假设:

  • 齐次马尔可夫性假设,即假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关
  • 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关.

HMM

HMM的参数λλ有三个:

  • AA状态转移概率矩阵(不同状态之间的转移概率)
  • B观测概率矩阵(不同状态下的观测出现的概率)
  • 初始状态概率向量ππ

使用HMM需要解决3个问题,这是马尔可夫模型的核心问题:

  • Likelihood: 给定HMM生成一串observation序列oo的概率
  • Decoding: 给定一串observation序列o,找出HMM最可能状态序列ss
  • Training: 给定一个observation序列s,训练出HMM参数

下面就依次解决这三个问题

Likelihood

the Forward algorithm

定义到tt时刻的观测序列为o1o2...ot,状态ststii的概率为前向概率,记作α(i)=p(o1o2...ot,st=i|λ)

给定参数λλ的HMM,求产生o1o2...oTo1o2...oT的概率

  • 初值:α1(i)=πib(i)α1(i)=πib(i)
  • 递推:αt+1(i)=[Nj=1αt(j)aji]bi(ot+1)αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1)
  • 终止:p(O|λ)=Nj=1αT(j)p(O|λ)=∑j=1NαT(j)

the Backward algorithm

定义tt时刻之后的观测序列为ot+1ot+2...oT,状态ststii的概率为后向概率,记作β(i)=p(ot+1ot+2...oT,st=i|λ)

给定参数λλ的HMM,求产生o1o2...oTo1o2...oT的概率

  • 初值:βT(i)=1βT(i)=1
  • 递推:βt(i)=Nj=1aijβt+1(j)bj(ot+1)βt(i)=∑j=1Naijβt+1(j)bj(ot+1)
  • 终止:p(O|λ)=Nj=1πjbj(o1)β1(j)p(O|λ)=∑j=1Nπjbj(o1)β1(j)

Decoding - the Viterbi algorithm

定义在时刻tt状态为i的所有状态路径中概率最大的路径的概率值为δt(i)=maxs1s2...st1p(st=i,s1s2...st1,o1o2...ot|λ)δt(i)=maxs1s2...st−1p(st=i,s1s2...st−1,o1o2...ot|λ)

定义在时刻tt状态为i的所有状态路径中概率最大的路径t1t−1时刻的状态为ϕt(i)=argmaxj(δt(i)aji)ϕt(i)=argmaxj(δt(i)aji)

给定参数λλ的HMM,已知观测序列为o1o2...oTo1o2...oT,求最有可能的状态序列s1s2...sTs1s2...sT

  • 初始化:δ1(i)=πbi(o1),ϕ1(i)=0δ1(i)=πbi(o1),ϕ1(i)=0
  • 递推:δt+1(i)=maxj[δt(j)aji]bi(ot+1),ϕt(i)=argmaxj[δt1(j)aji]δt+1(i)=maxj[δt(j)aji]bi(ot+1),ϕt(i)=argmaxj[δt−1(j)aji]
  • 终止:sT=argmaxiδT(i)sT∗=argmaxiδT(i)
  • 回溯:st=ϕt+1(st+1)st∗=ϕt+1(st+1∗)

Training

Supervised learning

给定若干个观测序列o1o2...oTo1o2...oT及对应的状态序列s1s2...sTs1s2...sT样本,求HMM最有可能的参数λλ

转移慨率AA的估计:aij=AijjAijAijAij是状态ii之后是状态j发生的频次,jAij∑jAij是状态ii发生的频次

观测矩阵B的估计:bi(k)=BikkBikbi(k)=Bik∑kBikBikBik是状态为ii时观测为k的频次,kBik∑kBik是状态ii发生的频次。

初始状态概率向量π的估计:各个初始状态发生的频率。

Supervised learning - Baum-Welch algorithm

给定若干个观测序列o1o2...oTo1o2...oT样本和状态个数,求HMM最有可能的参数λλ

这种含有隐藏变量的求解问题我们自然会想到EM算法,BW算法就是EM算法的一个实例,我们就从EM算法的角度来解释一下BW算法:

初始化:随即初始化λ(0)=(A,B,π)λ(0)=(A,B,π)

E步:根据前向后向算法可得对于观测序列O(n)O(n)

  • p(st=i,O(n)|λ(l))=αt(i)βt(i)iαt(i)βt(i)p(st=i,O(n)|λ(l))=αt(i)βt(i)∑iαt(i)βt(i)
  • p(st=i,st+1=j,O(n)|λ(l))=αt(i)aijbj(ot+1)βt(j)i,jαt(i)aijbj(ot+1)βt(j)p(st=i,st+1=j,O(n)|λ(l))=αt(i)aijbj(ot+1)βt(j)∑i,jαt(i)aijbj(ot+1)βt(j)

M步:根据上面求得得概率值,更新λλ

  • π(l+1)i=np(s1=i,O(n)|λ(l))inp(s1=i,O(n)|λ(l))=np(s1=i,O(n)|λ(l))Nπi(l+1)=∑np(s1=i,O(n)|λ(l))∑i∑np(s1=i,O(n)|λ(l))=∑np(s1=i,O(n)|λ(l))N
  • a(l+1)ij=ntp(st=i,st+1=j,O(n)|λ(l))njtp(st=i,st+1=j,O(n)|λ(l))aij(l+1)=∑n∑tp(st=i,st+1=j,O(n)|λ(l))∑n∑j∑tp(st=i,st+1=j,O(n)|λ(l))
  • b(l+1)i(k)=ntp(st=i,ot=k,O(n)|λ(l))ntkp(st=i,ot=k,O(n)|λ(l))=ntp(st=i,ot=k,O(n)|λ(l))ntp(st=i,O(n)|λ(l))bi(l+1)(k)=∑n∑tp(st=i,ot=k,O(n)|λ(l))∑n∑t∑kp(st=i,ot=k,O(n)|λ(l))=∑n∑tp(st=i,ot=k,O(n)|λ(l))∑n∑tp(st=i,O(n)|λ(l))

循环迭代直至收敛,由EM算法的性质可知,有可能收敛到局部最优值,实际过程中可能需要多次计算。而且BW算法计算量很大,训练起来很慢,感觉不太实用。在声纹识别中,一般GMM-HMM来简化计算,也就是说把隐藏状态的用高斯混合模型的高斯分量的概率核来替代状态,用观测变量是哪个高斯分量的概率来替代BB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值