隐马尔可夫模型的Viterbi解码算法

简介: 前言前面在做自然语言处理时涉及到一些词性标注的工作,一般会使用隐马尔科夫模型(HMM)来实现词性标注,而HMM模型的解码实现算法一般就会使用Viterbi算法。

前言

前面在做自然语言处理时涉及到一些词性标注的工作,一般会使用隐马尔科夫模型(HMM)来实现词性标注,而HMM模型的解码实现算法一般就会使用Viterbi算法。

关于穷举法

HMM模型有多种应用,这里说的是其中一个常见应用,即根据观察序列找到最可能的隐含状态序列。最朴素的想法就是直接穷举所有可能的隐含状态序列,并计算出每个组合成的状态序列的概率,概率最大的那个组合序列即是最可能的隐含状态序列。举个水藻和天气的例子,穷举出所有可能的隐含状态序列的概率,如下,
P(dry,damp,soggy | sunny,sunny,sunny), P(dry,damp,soggy | sunny,sunny,cloudy), P(dry,damp,soggy | sunny,sunny,rainy), … . P(dry,damp,soggy | rainy,rainy,rainy),最大值对应的序列即为最可能的隐含状态序列。穷举的路径一共有3t条,可以看到随着序列还有状态数的增加,计算量是非常大的。

这里写图片描述

Viterbi算法

上面的穷举法需要的计算量很大,为减少复杂度引入Viterbi算法,Viterbi算法要解决的解码问题就是多步且每步多重选择的最优选择的问题。根据下图就能很清晰看到Viterbi的核心思想,随着时刻增加,每个节点都保存了前一时刻所有节点到该节点的最优值的子路径,如图中红色箭头,当前时刻的某一节点可能的路径为上一时刻所有节点到该节点的路径,但我们只保留其中一条最优路径。依次计算完所有步后,最后通过回溯的方法得到整个过程的最优路径。

这里写图片描述

下面用一个例子说明整个过程,假设有3中状态,序列为t个时刻,p(a1)表示a1节点的值,p(b1)表示b1节点的值,同理其他的节点也一样。对于不同时刻,状态之间的转换概率是不变的,所以p(aa)表示从a状态转移到a状态的概率,不管是从1时刻到2时刻,还是从2时刻到3时刻,都是相同的。同理还有p(ab)、p(ac)、p(ba)…。

这里写图片描述

t+1时刻节点值的计算公式为pt+1(y)=pt(x)p(xy)其中x,y都属于a,b,c一种状态。

我们计算t=2时刻的p(a)的值,它可能从a1到a2、b1到a2或c1到a2,假如a1到a2这条路径计算出来的p(a)最大,那么就保留该路径。同理分别计算p(b)和p(c)的最大值,保留b1到b2的路径,b1到c2的路径。接着计算t=3时刻的p(a)、p(b)和p(c),最后到达t时刻,计算该时刻最大的p(a)、p(b)和p(c),选择出它们最大的值的节点,再根据保留的上一时刻的路径依次往前回溯,就得到最优的序列。比如ct是最大的节点,那就是ct>ct1>...>b3>c2>b1即最可能的序列为bcb…cc。

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

这里写图片描述

目录
相关文章
|
1月前
|
JavaScript 前端开发 算法
MVVM模型,虚拟DOM和diff算法
1.MVVM是前端开发领域当中非常流行的开发思想。(一种架构模式)目前前端的大部分主流框架都实现了这个MVVM思想,例如Vue,React等2.虽然Vue没有完全遵循MVVM模型,但是Vue的设计也受到了它的启发。Vue框架基本上也是符合MVVM思想的 3.MVVM模型当中尝到了Model和View进行了分离,为什么要分离?
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
6天前
|
算法 Serverless
如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?
如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?
14 0
|
7天前
电信公司churn数据客户流失k近邻(knn)模型预测分析
电信公司churn数据客户流失k近邻(knn)模型预测分析
18 0
|
8天前
|
算法
R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
16 0
|
12天前
|
机器学习/深度学习 人工智能 达摩院
52个AIGC视频生成算法模型介绍(上)
52个AIGC视频生成算法模型介绍(上)
37 3
|
26天前
|
算法
算法沉淀 —— 动态规划篇(斐波那契数列模型)
算法沉淀 —— 动态规划篇(斐波那契数列模型)
21 0
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【2月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过有效的数据处理策略、合理的特征工程、选择适宜的学习算法以及进行细致的参数调优来提升模型性能。我们将剖析标准化与归一化的差异,探索主成分分析(PCA)的降维魔力,讨论支持向量机(SVM)和随机森林等算法的适用场景,并最终通过网格搜索(GridSearchCV)来实现参数的最优化。本文旨在为读者提供一条清晰的路径,以应对机器学习项目中的挑战,从而在实际应用中取得更精准的预测结果和更强的泛化能力。
|
1月前
|
机器学习/深度学习 算法 数据可视化
突出最强算法模型——回归算法 !!
突出最强算法模型——回归算法 !!
54 1
|
1月前
|
机器学习/深度学习 数据采集 运维
高效处理异常值的算法:One-class SVM模型的自动化方案
高效处理异常值的算法:One-class SVM模型的自动化方案
36 1

热门文章

最新文章