本文详解paper "A Tutorial on HMMs and Selected Applications in Speech Recognition"并进行matlab实现(尽量用其他编程语言通用的实现,不实现problem2)
Problem 2
给出observation序列,模型lambda=(A,B,pi), 选择state序列Q=q1q2…qT
即探索隐性状态
问题在于如何定义最佳state,即最佳的标准
定义变量

即给出模型和观测序列,估计出t时刻state为Si的概率
用problem1中的forward-backward变量来表示gamma_t(i)

回忆一下


这样

利用gamma,可以求解t时刻最匹配(匹配个数期望值最多)的state qt

但是这样会有一个问题,因为是单个选出每个时刻t的state,那么即使aij=0,即不可能迁移,也会选到那个state,只考虑单个,没有考虑整个序列
那么换一个规定最佳的标准,最常用的标准是选出一个最好的state序列,使P(Q | O, lambda)最大,等价于最大化P(Q, O | lambda)
解决方法是DP,Viterbi算法:
给定observation序列O={O1O2…OT},找出最佳state序列Q={q1q2…qT}
定义

0~t的observation, state序列,t时刻的state是Si的最大score
归纳得到

为了得到最佳的state序列,对每个t,每个j都要跟踪,用一个数组来跟踪
完整流程
- 初始化

- 归纳

- 结果

- path backtracking 得到state序列

本文深入解析HMMs(隐马尔可夫模型)及其在语音识别中的应用,通过MATLAB实现,探讨观察序列下最优状态序列的选择,使用Viterbi算法解决序列预测问题。
3万+

被折叠的 条评论
为什么被折叠?



