隐马尔科夫模型(HMM)

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

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

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

HMM

HMM的参数 λ λ 有三个:

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

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

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

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

Likelihood

the Forward algorithm

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

给定参数 λ λ 的HMM,求产生 o1o2...oT o 1 o 2 . . . o T 的概率

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

the Backward algorithm

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

给定参数 λ λ 的HMM,求产生 o1o2...oT o 1 o 2 . . . o T 的概率

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

Decoding - the Viterbi algorithm

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

定义在时刻 t t 状态为i的所有状态路径中概率最大的路径 t1 t − 1 时刻的状态为 ϕt(i)=argmaxj(δt(i)aji) ϕ t ( i ) = a r g m a x j ( δ t ( i ) a j i )

给定参数 λ λ 的HMM,已知观测序列为 o1o2...oT o 1 o 2 . . . o T ,求最有可能的状态序列 s1s2...sT s 1 s 2 . . . s T

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

Training

Supervised learning

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

转移慨率 A A 的估计:aij=AijjAij Aij A i j 是状态 i i 之后是状态j发生的频次, jAij ∑ j A i j 是状态 i i 发生的频次

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

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

Supervised learning - Baum-Welch algorithm

给定若干个观测序列 o1o2...oT o 1 o 2 . . . o T 样本和状态个数,求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 ( s t = 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 ( s t = i , s t + 1 = j , O ( n ) | λ ( l ) ) = α t ( i ) a i j b j ( o t + 1 ) β t ( j ) ∑ i , j α t ( i ) a i j b j ( o t + 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 ) = ∑ n p ( s 1 = i , O ( n ) | λ ( l ) ) ∑ i ∑ n p ( s 1 = i , O ( n ) | λ ( l ) ) = ∑ n p ( s 1 = 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)) a i j ( l + 1 ) = ∑ n ∑ t p ( s t = i , s t + 1 = j , O ( n ) | λ ( l ) ) ∑ n ∑ j ∑ t p ( s t = i , s t + 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)) b i ( l + 1 ) ( k ) = ∑ n ∑ t p ( s t = i , o t = k , O ( n ) | λ ( l ) ) ∑ n ∑ t ∑ k p ( s t = i , o t = k , O ( n ) | λ ( l ) ) = ∑ n ∑ t p ( s t = i , o t = k , O ( n ) | λ ( l ) ) ∑ n ∑ t p ( s t = i , O ( n ) | λ ( l ) )

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值