Viterbi算法是一个通用的求序列最短距离的动态规划算法。HMM模型的解码可以用Viterbi算法完成,解码过程可以描述为给定HMM的模型和观测序列,求给定观测模型下最可能出现的状态序列。

HMM最可能隐藏状态序列求解概述

在HMM模型的解码问题中,给定模型和观测序列,求给定观测序列O条件下,最可能出现的对应的状态序列,即要最大化。

一个可能的近似解法是求出观测序列O在每个时刻t最可能的隐藏状态然后得到一个近似的隐藏状态序列

给定模型λ和观测序列O,在时刻tt处于状态的概率记为:

利用前向概率和后向概率的定义可知:

于是我们得到:

因此在给定模型λ和观测序列O时,在时刻tt处于状态的概率是,这个概率可以通过HMM的前向算法与后向算法计算。

这样可得:

近似算法很简单,但是却不能保证预测的状态序列是整体是最可能的状态序列,因为预测的状态序列中某些相邻的隐藏状态可能存在转移概率为0的情况。而维特比算法可以将HMM的状态序列作为一个整体来考虑,避免近似算法的问题。

维特比算法概述

Viterbi算法是一个基于动态规划的解码算法,在HMM中,维特比算法定义了两个局部状态用于递推。

第一个局部状态是在时刻tt隐藏状态为ii所有可能的状态转移路径中的概率最大值。记为:

的定义可以得到δ的递推表达式:

第二个局部状态由第一个局部状态递推得到。我们定义在时刻t隐藏状态为i的所有单个状态转移路径中概率最大的转移路径中第t−1个节点的隐藏状态为,其递推表达式可以表示为:

有了这两个局部状态,我们就可以从时刻0一直递推到时刻T,然后利用记录的前一个最可能的状态节点回溯,直到找到最优的状态序列。

维特比算法流程

输入:HMM模型,观测序列

    输出:最有可能的隐藏状态序列

    1)初始化局部状态:

    2) 进行动态规划递推时刻时刻的局部状态:

    3) 计算时刻T最大的,即为最可能隐藏状态序列出现的概率。计算时刻T最大的,即为时刻T最可能的隐藏状态。

    4) 利用局部状态开始回溯。对于

    最终得到最有可能的隐藏状态序列

Viterbi算法解码HMM实例

下面使用该文章中的HMM模型实例来说明Viterbi算法求解的过程。

我们的观察集合是:

V={红,白},M=2

我们的状态集合是:

Q={盒子1,盒子2,盒子3},N=3

而观察序列和状态序列的长度为3.

初始状态分布为:

状态转移概率分布矩阵为:

观测状态概率矩阵为:

球的颜色的观测序列:

O={红,白,红}

按照我们上一节的维特比算法,首先需要得到三个隐藏状态在时刻1时对应的各自两个局部状态,此时观测状态为1:

 现在开始递推三个隐藏状态在时刻2时对应的各自两个局部状态,此时观测状态为2:

    继续递推三个隐藏状态在时刻3时对应的各自两个局部状态,此时观测状态为1:

    此时已经到最后的时刻,我们开始准备回溯。此时最大概率为,从而得到

    由于,所以, 而又由于,所以。从而得到最终的最可能的隐藏状态序列为:(3,3,3).

语音识别学习日志 2018-7-19 语音识别基础知识准备(5)[Viterbi算法]相关推荐

  1. 语音识别学习日志 2019-7-15 语音识别基础知识准备4 {Baun-Welch算法}

    HMM 前向算法(Forward Algorithm)详细解释参考: http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorit ...

  2. 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}

    https://blog.csdn.net/lin_limin/article/details/81048411会对GMM和EM做详细介绍 本文参考: http://www.ituring.com.c ...

  3. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}

    HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...

  4. 暑期训练日志----2018.8.19

    训练第21天. 第三周的训练结束了,这个周前几天比较懈怠,不是早上起晚了就是下午跑出去游泳了,根本无心做题... 后几天调整了一下,状态算是回归正常了,效率也挺高的,但是突然出了点事不得不回家一趟,不 ...

  5. 2018电子商务证书计算机基础知识,2018银行春招笔试高频考点—常识百科之计算机基础知识...

    原标题:2018银行春招笔试高频考点-常识百科之计算机基础知识 2018年度银行春季校园招聘正如火如荼的进行,下面帮大家梳理下2018银行春招笔试高频考点-常识百科之计算机基础知识. 一.计算机的分类 ...

  6. window计算机日志分析详解,系统基础知识:筛选Windows日志与借助Windows日志分析故障...

    系统基础知识:筛选Windows日志与借助Windows日志分析故障 我们最关心的事情,一定是我们Windows 7系统的安全,我们学习Windows事件查看器的最终目的,也是希望通过WIndows事 ...

  7. 语音识别基础知识_语音识别_CTI论坛

    语音辨识基础知识 近 年 来 , 由 于 电 脑 在 软 件 上 的 长 足 进 步 , 类 似 电 视 影 集 霹 雳 游 侠 中 李 麦 克 与 霹 雳 车 伙 计 之 间 能 够 使 用 人 类 ...

  8. 多核程序设计的相关基础知识----以误差扩散算法为例

        本文从基础入手,主要阐述基于桌面电脑的多核程序设计的基础知识,包括一些向量化运算,虚拟机算,多线程等的相关知识总结. 一.计算平台的分类 单指令单数据流机器(SISD) 传统的串行计算机,所有 ...

  9. 语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}

    Kmean算法 聚类算法 对于"监督学习"(supervised learning),其训练样本是带有标记信息的,并且监督学习的目的是:对带有标记的数据集进行模型学习,从而便于对新 ...

  10. 语音识别学习日志 2019-7-13 语音识别基础知识准备 1{语音基础知识}

    线性预测 线性预测(linear prediction)根据随机信号过去的p个已知抽样值序列为Sn-1,Sn-2,-Sn-p,预测现时样值Sn的估计值的方法.预测公式是一个线性方程,所以这种预测称为线 ...

最新文章

  1. CSV适用于表格式数据, Json适用于接口和配置文件
  2. V210 UART TX 流程
  3. static代码块什么时候运行_健康的代码:什么时候该注释?
  4. 华为云MySQL金融版正式商用,高可靠的金融级数据库来了
  5. java零碎要点---class()、getClass()、Class.forName()、getClassLoader()的区别和联系--又不详细的地方求补充
  6. 广东机电职业技术学校计算机怎么样,广东机电职业技术学院宿舍怎么样 住宿条件好不好...
  7. Clubhouse 推出漏洞奖励计划,严重漏洞最高可获3000美元
  8. 关于网页编码的故事,你都清楚嘛?utf与gbk的关系
  9. Pytorch:Tensor(张量)的使用
  10. 虚拟麦克风音频输入_Audio Precision 全新声学/音频分析软件可减少测试时间
  11. I tell you网站如何下载
  12. Windows7计算机的程序文件名,Win7怎么显示文件后缀名_Win7显示文件的扩展名-192路由网...
  13. 纯css实现icon的网站,代码可复制
  14. 我的求带之路(已成功
  15. 工控一体机和常见的平板电脑有什么区别?
  16. outlook 加载配置项_如何在Outlook中启用加载项和连接器
  17. 盘点行业APP运营推广渠道有哪些
  18. MySQL inet aton函数_有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。具体可以查看官方手册。INET_ATON(e...
  19. js callee与caller 区别
  20. 国产Google地球如何下载2021版谷歌高清卫星地图?

热门文章

  1. 逻辑回归损失函数通常是凸函数(附平方差损失的非凸证明以及交叉熵损失函数求导)
  2. 弘辽科技:拼多多常用回复的话术分享,催单话术有哪些?
  3. 运筹学之线性规划与整数规划
  4. 哪一类功率放大电路效率最高_集成电路代换方法与技巧
  5. html5清除圆形区域,canvas圆形清理
  6. 【读论文1005】Barlow Twins: Self-Supervised Learning via Redundancy Reduction
  7. iphone 状态栏高度_当iPhone处于静音状态时(或始终)如何关闭振动
  8. 如何建立有效的客户画像
  9. 愿你永远保持那颗野性之心
  10. cmd中创建一定大小的文件