语音识别学习日志 2018-7-19 语音识别基础知识准备(5)[Viterbi算法]
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算法]相关推荐
- 语音识别学习日志 2019-7-15 语音识别基础知识准备4 {Baun-Welch算法}
HMM 前向算法(Forward Algorithm)详细解释参考: http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorit ...
- 语音识别学习日志 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 ...
- 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...
- 暑期训练日志----2018.8.19
训练第21天. 第三周的训练结束了,这个周前几天比较懈怠,不是早上起晚了就是下午跑出去游泳了,根本无心做题... 后几天调整了一下,状态算是回归正常了,效率也挺高的,但是突然出了点事不得不回家一趟,不 ...
- 2018电子商务证书计算机基础知识,2018银行春招笔试高频考点—常识百科之计算机基础知识...
原标题:2018银行春招笔试高频考点-常识百科之计算机基础知识 2018年度银行春季校园招聘正如火如荼的进行,下面帮大家梳理下2018银行春招笔试高频考点-常识百科之计算机基础知识. 一.计算机的分类 ...
- window计算机日志分析详解,系统基础知识:筛选Windows日志与借助Windows日志分析故障...
系统基础知识:筛选Windows日志与借助Windows日志分析故障 我们最关心的事情,一定是我们Windows 7系统的安全,我们学习Windows事件查看器的最终目的,也是希望通过WIndows事 ...
- 语音识别基础知识_语音识别_CTI论坛
语音辨识基础知识 近 年 来 , 由 于 电 脑 在 软 件 上 的 长 足 进 步 , 类 似 电 视 影 集 霹 雳 游 侠 中 李 麦 克 与 霹 雳 车 伙 计 之 间 能 够 使 用 人 类 ...
- 多核程序设计的相关基础知识----以误差扩散算法为例
本文从基础入手,主要阐述基于桌面电脑的多核程序设计的基础知识,包括一些向量化运算,虚拟机算,多线程等的相关知识总结. 一.计算平台的分类 单指令单数据流机器(SISD) 传统的串行计算机,所有 ...
- 语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}
Kmean算法 聚类算法 对于"监督学习"(supervised learning),其训练样本是带有标记信息的,并且监督学习的目的是:对带有标记的数据集进行模型学习,从而便于对新 ...
- 语音识别学习日志 2019-7-13 语音识别基础知识准备 1{语音基础知识}
线性预测 线性预测(linear prediction)根据随机信号过去的p个已知抽样值序列为Sn-1,Sn-2,-Sn-p,预测现时样值Sn的估计值的方法.预测公式是一个线性方程,所以这种预测称为线 ...
最新文章
- CSV适用于表格式数据, Json适用于接口和配置文件
- V210 UART TX 流程
- static代码块什么时候运行_健康的代码:什么时候该注释?
- 华为云MySQL金融版正式商用,高可靠的金融级数据库来了
- java零碎要点---class()、getClass()、Class.forName()、getClassLoader()的区别和联系--又不详细的地方求补充
- 广东机电职业技术学校计算机怎么样,广东机电职业技术学院宿舍怎么样 住宿条件好不好...
- Clubhouse 推出漏洞奖励计划,严重漏洞最高可获3000美元
- 关于网页编码的故事,你都清楚嘛?utf与gbk的关系
- Pytorch:Tensor(张量)的使用
- 虚拟麦克风音频输入_Audio Precision 全新声学/音频分析软件可减少测试时间
- I tell you网站如何下载
- Windows7计算机的程序文件名,Win7怎么显示文件后缀名_Win7显示文件的扩展名-192路由网...
- 纯css实现icon的网站,代码可复制
- 我的求带之路(已成功
- 工控一体机和常见的平板电脑有什么区别?
- outlook 加载配置项_如何在Outlook中启用加载项和连接器
- 盘点行业APP运营推广渠道有哪些
- MySQL inet aton函数_有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。具体可以查看官方手册。INET_ATON(e...
- js callee与caller 区别
- 国产Google地球如何下载2021版谷歌高清卫星地图?
热门文章
- 逻辑回归损失函数通常是凸函数(附平方差损失的非凸证明以及交叉熵损失函数求导)
- 弘辽科技:拼多多常用回复的话术分享,催单话术有哪些?
- 运筹学之线性规划与整数规划
- 哪一类功率放大电路效率最高_集成电路代换方法与技巧
- html5清除圆形区域,canvas圆形清理
- 【读论文1005】Barlow Twins: Self-Supervised Learning via Redundancy Reduction
- iphone 状态栏高度_当iPhone处于静音状态时(或始终)如何关闭振动
- 如何建立有效的客户画像
- 愿你永远保持那颗野性之心
- cmd中创建一定大小的文件