首页 > 编程语言 >基于维特比算法的概率路径

基于维特比算法的概率路径

时间:2024-11-13 09:44:33浏览次数:1  
标签:概率 维特 晴朗 路径 天气 算法 阴雨 xP

原文链接:基于维特比算法的概率路径 – 每天进步一点点


维特比算法(Viterbi algorithm)是一种动态规划算法,它用于寻找最有可能产生观测事件序列的一维特比路径一隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。

1应用实例:推断天气状态


古代中国人通过天气状态的变化规律,探索出很多预测天气的方法,这种基于经验的预测方式,也是一种基于历史数据的概率模型。虽然现实中的天气状态包括晴天、阴雨、多云、小雨、中雨、雷阵雨等,但是我们想象地球上有这样一个地方,这个地方有着非常理想化的特性:天气要么晴朗要么阴雨。面对晴朗或者阴雨这个地方的居民身体会有有三种直观感觉:干爽、微凉、寒冷。
第一天当地居民感觉很干爽;第二天他们感觉有点微凉;第三天他们感觉有些寒冷。那么,根据这三天居民对天气的直观感受,推断这三天的天气情况。
也许通过上述信息还不足以进行定量的分析,则补充数据:
(1)已知每天天气为晴朗的概率为0.6,为阴雨的概率为0.4。
(2)天气之间也有着相互变化的可能。例如,晴朗天气持续的概率为0.7;晴朗天气到阴雨天气的概率为0.3;阴雨天气到晴朗天气的概率是0.4;阴雨天气持续的概率为0.6。
(3)此外,在晴朗的天气时,当地居民直观感觉干爽的概率为0.5,感觉微凉的概率为0.4,感觉寒冷的概率为0.1;在阴雨天气时,当地居民直观感觉干爽的概率为0.1,感觉微凉的概率为0.3,感觉寒冷的概率为0.6。

2.维特比算法思想

维特比算法的思想是假设某一个数据的当前状态是依赖于它的前一个状态,它们在多个状态之间可以相互影响,而维特比算法正是从这些状态中推断出最大可能概率的状态序列(也可称作最短路径)。因此,维特比算法解决问题的理论基础可归纳为如下:
在通过概率计算出最大可能的路径Pn中,它经过n个点,则其中的P,(0<i<n)也是一个最大可能的概率路径,P1是基于P11的概率进行计算的最大可能概率。

3.计算天气状态


通过对维特比思想的介绍,可以发现示例中的问题是维特比算法较为擅长解决的问题。根据维特比的理论,天气的后一天状态会依赖于前一天的天气状态(晴朗、阴雨)和当前可观察的状态(干爽、微凉、寒冷),因此只需要根据当地居民第一天干爽状态推断到第三天的寒冷状态,就可以知道这三天的天气状态情况,由已知P(晴朗)=0.6,P(阴雨)=0.4因此,计算过程如下。
(1)计算第一天最可能的天气状态。
第一天当地居民感受到干爽,因此:

P(第一天晴朗)=P(干爽|晴朗)xP(晴朗)=0.5×0.6=0.3
P(第一天阴雨)=P(干爽|阴雨)xP(阴雨)=0.1×0.4=0.04

因此第一天晴朗的概率0.3,音乐的概率0.04,显然第一天天气的最大可能状态是晴朗。
(2)计算第二天最可能的天气状态。

第二天当地居民感受到微凉,因此:
P(第一天阴雨,第二天阴雨)=P(阴雨|第一天)xP(阴雨->阴雨)xP(冷|阴雨)=0.04×0.6×0.3=0.0072
P(第一天阴雨,第二天晴朗)=P(阴雨|第一天)xP(阴雨->晴朗)xP(冷|晴朗)=0.04×0.4×0.4=0.0064
P(第一天晴朗,第二天晴朗)=P(晴朗|第一天)xP(晴朗->晴朗)xP(冷|晴朗)=0.3×0.7×0.4=0.084
P(第一天晴朗,第二天阴雨)=P(晴朗|第一天)xP(晴朗->阴雨)xP(冷|阴雨)=0.3×0.3×0.3=0.027

显然,第二天最可能的状态依然是晴朗。
(3)计算第三天最可能的天气状态。

P(第二天阴雨,第三天阴雨)=P(阴雨|第二天)xP(阴雨->阴雨)xP(头晕|阴雨)=0.027×0.6×0.6=0.00972
P(第二天阴雨,第三天晴朗)=P(晴朗|第二天)xP(阴雨->晴朗)xP(头晕|晴朗)=0.027×0.4×0.1=0.00108
P(第二天晴朗,第三天晴朗)=P(阴雨|第二天)xP(晴朗->晴朗)xP(头晕|晴朗)=0.084×0.7×0.1=0.00588
P(第二天晴朗,第三天阴雨)=P(晴朗|第二天)xP(晴朗->阴雨)xP(头晕|阴雨)=0.084×0.3×0.6=0.01512

由上可以看出第三天的状态最可能是阴雨。
综合上面三次对天气的推断,三天的天气状态最可能是:晴朗、晴朗、阴雨。在计算的过程中也不难发现,越是计算到后面,计算得到的概率值越小。这是因为,本次的计算结果是依赖于上一次的概率,而概率一般都是小于1,因此计算结果越来越小,也意味者越是到后面,计算的准确度也越来越低。
维特比算法与隐马尔科夫模型也常常组合在一起用于计算一些概率性的问题,如进行中文分词、自然语言处理中的命名实体识别、词性标注、天气预测等,维特比算法则作为隐马尔科夫模型的解码问题的算法。
维特比算法实质也是一种基于概率论的路径选择。不同于前面所讲解的路径算法,它通过概率的方式选择合适的路径,而这些路径很可能就是一些序列的状态。

 

标签:概率,维特,晴朗,路径,天气,算法,阴雨,xP
From: https://www.cnblogs.com/longkui-site/p/18543152

相关文章

  • 基于FCM模糊聚类算法的图像分割matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)I_mean=func_median(Im1,Lwin);%%将图像灰度按列排列X=Im1(:);X_spatial=I_mean(:);%初始化......
  • 代码随想录算法训练营第二十三天| leetcode39. 组合总和、leetcode40.组合总和II、lee
    1leetcode39.组合总和题目链接:39.组合总和-力扣(LeetCode)文章链接:代码随想录视频链接:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)|回溯法精讲!_哔哩哔哩_bilibili思路:跟之前差不多,就是将他的循环改一下,但是我发现有重复的数值了,不知道如何删除1.1自......
  • C++常见函数的基础算法
    string字符串常用函数substring()string.length()&&string.size()string.find()string.replace()string.substr()string初始化和声明#include<bits/stdc++.h>usingnamespacestd; intmain(){stringstr1;//空字符串stringstr2="hello,w......
  • 单链表算法题(数据结构)
    1.反转链表https://leetcode.cn/problems/reverse-linked-list/description/题目:看到这个题目的时候我们怎么去想呢?如果我们反应快的话,应该可以想到我们可以从1遍历到5然后依次头插,但是其实我们还有更好的办法,就是利用三个指针,如何使用呢?反转链表OJ假如结构体已经给出t......
  • 浅谈贪心算法
    浅谈贪心算法贪心算法,指在问题求解时,每一步都做出“当前看起来最好的决策”。它没有固定的算法模板,灵活性强。在OI领域,无论是入门组,还是省选,NOI,或多或少都出过贪心题。可见贪心的重要性之大。使用贪心算法解决问题,必须满足“无后效性”。满足“无后效性”不一定当前的决策......
  • 2024年最新优化算法:海市蜃楼算法(Fata Morgana Algorithm ,FATA)介绍
    海市蜃楼算法(FataMorganaAlgorithm,FATA)是2024年提出一种新型的群体智能优化算法,它的设计灵感来源于自然现象中的海市蜃楼形成过程。FATA算法通过模仿光线在不均匀介质中的传播方式,提出了两种核心策略——海市蜃楼光过滤原则(MLF)和光传播策略(LPS)——来优化搜索过程,增强算法......
  • 利用阿燑目算法训练平台实现智能任务:从数据集到算法部署的完整流程
    引言在当今的数字化时代,算法训练已成为实现智能化任务的关键环节。通过专业的算法训练平台,如阿燑目算法训练平台,用户可以轻松完成从数据准备到算法部署的整个流程,实现各种智能应用。本文将基于阿燑目算法训练平台的使用手册,详细介绍如何利用算法训练平台完成智能任务。一、创......
  • 算法训练平台的内心独白
    我是阿燑目算法训练平台,大家都说我很神秘,今天就要好好和大家絮叨絮叨到底是怎么个事儿!在数字时代,算法训练平台成为了小微科技工作者在日常工作中不可或缺的一部分。我在这里分享我的一些服务和经验,希望能给你带来一些启发。网址:https://hub.atm008.com/首先,我提供图像集自......
  • 我是阿燑目,算法训练得看我
    在人工智能的浪潮中,计算机视觉领域正经历着前所未有的变革。作为这场变革的先锋,我——阿燑目算法训练平台,应运而生,专为深度学习打造,致力于简化图像识别模型的整个生命周期,从训练到部署,我无所不包。记住我们的网址:https://hub.atm008.com/一站式解决方案,让复杂变简单企业......
  • C语言第九周课——经典算法
    目录一、冒泡法排序1.1原理1.2代码实现(以升序排序为例) 1.3逻辑 1.4分析二、二分法查找2.1原理2.2代码实现 2.3逻辑2.4算法效率分析三、素数判断3.1原理3.2代码实现3.3逻辑3.4分析一、冒泡法排序1.1原理冒泡排序(BubbleSort)是一种简单的排序算法。它重......