隐马尔科夫模型HMM详解——python实现
Posted 栋次大次
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隐马尔科夫模型HMM详解——python实现相关的知识,希望对你有一定的参考价值。
代码:6.1发布
HMM基本概念、概率计算、预测算法请看上一篇文章,感谢您的阅读!
学习算法
已知观测序列 O = ( o 1 , o 2 , … , o T ) , b j ( o t ) = ∑ m = 1 M c j m N ( o t ; μ j m , Σ j m ) O=\\left(o_{1}, o_{2}, \\ldots, o_{T}\\right), b_{j}\\left(o_{t}\\right)=\\sum_{m=1}^{M} c_{j m} \\mathcal{N}\\left(o_{t} ; \\mu_{j m}, \\Sigma_{j m}\\right) O=(o1,o2,…,oT),bj(ot)=∑m=1McjmN(ot;μjm,Σjm),估计GMM-HMM参数 λ \\lambda λ,使 P ( O ∣ λ ) P(O|\\lambda) P(O∣λ)最大。参数 λ \\lambda λ包括:
-
初始状态概率向量 π = ( π i ) \\pi = (\\pi_i) π=(πi)
-
转移概率矩阵 A = [ a i j ] N × N A=[a_{ij}]_{N\\times N} A=[aij]N×N
-
状态 j j j的GMM参数 ( c j m , μ j m , Σ j m ) (c_{jm},\\mu_{jm},\\Sigma_{jm}) (cjm,μjm,Σjm), j = 1 , 2 , . . . , N ; m = 1 , . . . , M j=1,2,...,N; m=1,...,M j=1,2,...,N;m=1,...,M表示GMM分量标号。
Viterbi学习算法
如果已知状态-观测对齐序列,每个观测 o t o_t ot对应一个具体的状态,状态-观测对齐序列可通过Viterbi解码算法得到,也可通过人工标注得到。知道每个观测对应的状态,则:
π i \\pi_i πi可通过最大似然估计得到:
- 令 C ( i ) C(i) C(i)表示初始状态为 i i i 的次数
- π ^ i = C ( i ) ∑ k C ( k ) \\widehat{\\pi}_{i}=\\frac{C(i)}{\\sum_{k} C(k)} π i=∑kC(k)C(i)
a i j a_{ij} aij也可通过最大似然估计得到:
- 令 C ( i → j ) C(i \\rightarrow j) C(i→j)表示从状态 i i i到状态 j j j的转移次数
- a ^ i j = C ( i → j ) ∑ k C ( i → k ) \\hat{a}_{i j}=\\frac{C(i \\rightarrow j)}{\\sum_{k} C(i \\rightarrow k)} a^ij=∑kC(i→k)C(i→j)
可得每个状态 j j j对应的观测集合 Z j = ( y 1 , y 2 , … , y N ) Z_{j}=\\left(y_{1}, y_{2}, \\ldots, y_{N}\\right) Zj=(y1,y2,…,yN),每个状态对应一个GMM,也就得到了每个GMM对应的观测集合 Z j = ( y 1 , y 2 , … , y N ) Z_{j}=\\left(y_{1}, y_{2}, \\ldots, y_{N}\\right) Zj=(y1,y2,…,yN)。
问题:用viterbi算法得到对齐序列需要用到模型参数 λ \\lambda λ,最初的 λ \\lambda λ怎么得到?
当GMM只有一个分量, b j ( o t ) = N ( o t ; μ j , Σ j ) b_{j}\\left(o_{t}\\right)=\\mathcal{N}\\left(o_{t} ; \\mu_{j}, \\Sigma_{j}\\right) bj(ot)=N(ot;μj,Σj), ∣ Z j ∣ |Z_j| ∣Zj∣表示 Z j Z_j Zj的元素个数,则:
μ
^
j
=
∑
o
t
∈
Z
j
o
t
∣
Z
j
∣
\\hat{\\mu}_{j}=\\frac{\\sum_{o_{t} \\in Z_{j}} o_{t}}{\\left|Z_{j}\\right|}
μ^j=∣Zj∣∑ot∈Zjot 以上是关于隐马尔科夫模型HMM详解——python实现的主要内容,如果未能解决你的问题,请参考以下文章
Σ
^
j
=
∑
o
t
∈
Z
j
(
o
t
−
μ
^
j
)
(
o
t
−