简述维特比算法(Viterbi Algorithm)
维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图——篱笆网络(Lattice)的有向图最短路径的问题而提出的。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以使用它来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。下面用输入法拼音转汉字来说明。
假定用户盲打时输入的拼音是,对应的汉字是
(为简单起见,以字为单位来解释维特比算法),那么隐含的状态序列即为在输出序列发生的条件下概率最大的那条序列:
输入为可见序列,产生他们的隐含序列
。下图为隐含的马尔可夫模型
这是一个相对简单的隐含马尔可夫链,没有状态跳跃,也没有状态自环。是状态之间的转移概率,
是每个状态的产生概率。现在,这个马尔可夫链的输出已固定,但是状态不固定,比如拼音“zhong”为输出,状态可能为“中”、“种”等。我们不妨抽象一点,把
表示为状态
的第j个可能的值。如果把每个状态按照不同的值展开,可得到下面的篱笆网络(Lattice):
上图中每个状态可能有3,4个值,实际上它们可以有任意个值
维特比算法的基础可以概括为下面三点:
- 如果概率最大的路径P(或者说最短路径)经过某个点,如图中的
,那么这条路径上从起始点S到
的这一段子路径Q,一定是S到
之间的最短路径。
- 从S到E路径必定经过第i时刻的某个状态
- 结合上述两点,假定当我们从状态i进入到状态i+1时,从S到状态i的各个可能值的最短路径都已找到,那么只需考虑起到S到状态i各个结点的最短路径到状态i+1的各个结点的最短路径即可。
基于上述三点,维特比总结了如下算法:
第一步,从起点S出发,对于第一个状态的各个结点,不妨假定有
个,计算出S的距离d(S,
)
第二步,这是整个算法的关键。对于第二个状态的所有结点,要计算出S到它们的最短距离。我们知道,对于特定的结点
,从S到它的路径可以经过状态1到
中任何一个结点
,我们需要找到这些路径的最小值。这样对于第二个状态的每个结点,需要进行
次乘法运算,假定这个状态有
个结点,把S到这些结点的距离都算一遍,就有
次运算。
接下来,类似的从第二个状态走到第三个状态,一直走到最后一个状态,就得到了整个网格从头到尾的最短路径。每一步状态转换的复杂度为。如果假定在这个隐含马尔可夫链中结点最多的状态有D个结点,也就是这个那个网格的宽度为D,那么任何一步的复杂度不超过
,由于网格长度为N,所以整个维特比算法的复杂度是
.
简述维特比算法(Viterbi Algorithm)相关推荐
- HMM——维特比算法(Viterbi algorithm)
1. 前言 维特比算法针对HMM第三个问题,即解码或者预测问题,寻找最可能的隐藏状态序列: 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列,找到生成此序列最可能的隐藏状态序列. 也就是说给 ...
- 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...
- 维特比算法Viterbi Algorithm
1.简介 维特比算法是一个特殊但应用最广的动态规划算法,它是针对篱笆网络的有向图(Lattice)的最短路径问题而提出的.凡是使用隐含马尔可夫模型描述的问题都可以用维特比算法来解码,包括今天的数 ...
- 维特比算法(Viterbi)
维特比算法 (Viterbi algorithm) 是机器学习中应用非常广泛的动态规划算法,在求解隐马尔科夫.条件随机场的预测以及seq2seq模型概率计算等问题中均用到了该算法.实际上,维特比算法不 ...
- 维特比算法(viterbi)原理以及简单实现
维特比算法 看一下维基百科的解释,维特比算法(Viterbi algorithm)是一种动态规划算法.它用于寻找最有可能产生观测事件序列的维特比路径--隐含状态序列,特别是在马尔可夫信息源上下文和隐马 ...
- C语言维特比算法,viterbi维特比算法
维特比算法:使用动态规划,找出最短路径 以下以图的形式来解释: 图的节点按列组织,每列的节点数量可以不一样,每一列的节点只能和相邻列的节点相连,不能跨列相连,节点之间有着不同的距离,距离的值就不在图上 ...
- em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展
序列数据相关文章:1.马尔可夫模型2.隐马尔可夫模型简介3.HMM最大似然4.HMM前向后向算法5.HMM和积算法与尺度因子 1 维特比算法 在隐马尔可夫模型的许多应用中,潜变量有一些有意义的解释,因 ...
- 隐马尔科夫模型(HMMs)之五:维特比算法及前向后向算法
维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一个特定的HMM,然后根据一个可观察序列去找到最可能生成这个可观察序列的隐藏序列. 1.穷举搜索 我们可以在下图 ...
- 机器学习:维特比算法(Viterbi Algorithm)
一.维特比算法(Viterbi Algorithm)讲解方式01:篱笆网络(Lattice)的最短路径问题 已知下图的篱笆网络,每个节点之间的数字表示相邻节点之间的距离,举个例子来说,如果我走,这个距 ...
最新文章
- SQL与NoSQL区别-授权方式
- *HDU 2108 计算几何
- apache2.4.6支不支持jsp_Spring Boot中文参考指南(2.1.6)50、Kotlin 支持
- 符合skyline的3dml网络发布服务
- 前端跨域请求get_前端实现跨域访问
- 怎么通过media foundation将图像数据写入虚拟摄像头_千倍成本压缩!特斯拉开发虚拟激光雷达,替代最贵自动驾驶传感器...
- 计算机网络系统与分布式系统之间的区别
- 主语补足语和宾语补足语区别
- 帆软实现分页时第一行和最后两行冻结方式
- visio画直线箭头
- ( )可用来更改计算机系统的设置,2018年职称计算机考试考前冲刺练习及答案(9)...
- 【lua/aviutl】游戏对话框效果
- 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员
- Round 1—数据结构基本概念
- 8.0时代的微信营销怎么玩,才能挖掘用户最大价值
- 常用商务邮箱:常用商务邮箱注册
- ROMP:Monocular, One-stage, Regression of Multiple 3D People
- FW: 业精于勤:量级与数量级的差异
- 网站服务器被黑后多久降权,网站降权了还可以恢复吗,多久能恢复
- Linux上使用docker运行酷Q机器人
热门文章
- SEGA 将在 L2 Oasys 网络上推出区块链纸牌游戏
- [rom助手]制作刷机包,一键刷机不求人
- xinzitianqi.h 太极创客的东西
- [js倒计时]指定对应时间自动倒计时
- python 可视化处理时间刻度
- 门诊医嘱与收费相关的表
- 儿童语言发育迟缓分类中C群d是指,5种表现提示孩子语言发育迟缓,快来看看!...
- QDROP: RANDOMLY DROPPING QUANTIZATION FOR EXTREMELY LOW-BIT POST-TRAINING QUANTIZATION
- 游侠安全网:360网管版初体验
- 工作流系统之三十五 自由流的实现