隐马尔科夫模型|前向算法|Viterbi 算法

devtools/2024/12/27 3:17:01/

隐马尔可夫模型 (Hidden Markov Model, HMM)

HMM 是一种统计模型,用于表示由一个隐藏的马尔可夫链生成的观测序列。它假设每个观测值依赖于当前的隐藏状态,并且隐藏状态之间的转换遵循马尔可夫性质(即未来的状态仅依赖于当前状态,而不受过去状态的影响)。HMM 通常包含以下三个基本元素:

  1. 状态集合 (S = {s_1, s_2, …, s_N}):N 个可能的隐藏状态。
  2. 观测集合 (V = {v_1, v_2, …, v_M}):M 个可能的观测值。
  3. 参数集合 (λ = (A, B, π)),其中:
    • (A) 是状态转移概率矩阵,(a_{ij} = P(q_t = s_j | q_{t-1} = s_i))
    • (B) 是观测概率矩阵,(b_j(o_t) = P(o_t | q_t = s_j))
    • (π) 是初始状态概率向量,(π_i = P(q_1 = s_i))

前向算法 (Forward Algorithm)

目标

计算给定观测序列 (O = (o_1, o_2, …, o_T)) 的出现概率 (P(O|λ))。

动态规划过程

定义前向变量 (\alpha_t(i)) 表示在时刻 t 观测到 (o_1, o_2, …, o_t) 并处于状态 (s_i) 的所有路径的概率总和。其递推公式为:

  • 初始化:(\alpha_1(i) = π_i b_i(o_1)),对于所有的 (i = 1, 2, …, N)
  • 递推:(\alpha_{t+1}(j) = [\sum_{i=1}^{N} \alpha_t(i) a_{ij}] b_j(o_{t+1})),对于所有的 (j = 1, 2, …, N)
  • 终止:(P(O|λ) = \sum_{i=1}^{N} \alpha_T(i))
特点
  • 关注所有可能的状态路径,因此计算的是所有路径概率的总和。
  • 适用于评估观测序列的可能性,常用于模型训练阶段来调整 HMM 参数。

Viterbi 算法 (Viterbi Algorithm)

目标

寻找给定观测序列 (O = (o_1, o_2, …, o_T)) 下最可能的状态序列 (Q^* = (q_1^, q_2^, …, q_T^*))。

动态规划过程

定义 Viterbi 变量 (\delta_t(i)) 表示在时刻 t 观测到 (o_1, o_2, …, o_t) 并处于状态 (s_i) 的最大概率路径的概率。同时定义回溯指针 (\psi_t(i)) 指向前一时刻最优路径来自的状态。递推公式如下:

  • 初始化:(\delta_1(i) = π_i b_i(o_1)),对于所有的 (i = 1, 2, …, N)
  • 递推:(\delta_{t+1}(j) = \max_{1 \leq i \leq N}[\delta_t(i) a_{ij}] b_j(o_{t+1})),对于所有的 (j = 1, 2, …, N);同时 (\psi_{t+1}(j) = \arg\max_{1 \leq i \leq N}[\delta_t(i) a_{ij}])
  • 终止:(P^* = \max_{1 \leq i \leq N} \delta_T(i)),并且 (q_T^* = \arg\max_{1 \leq i \leq N} \delta_T(i))
  • 回溯:从 (q_T^) 开始,通过回溯指针 (\psi_t) 找到整个最可能的状态序列 (Q^)
特点
  • 关注最优路径,因此计算的是最大值,而非所有路径概率的总和。
  • 不仅可以找到最可能的状态序列,还可以用于解码任务,例如语音识别或自然语言处理中的词性标注。

实际应用中的差异

  • 前向算法 主要用于评估(Evaluation),即计算观测序列的可能性。它可以帮助我们了解某个观测序列是否符合特定的 HMM 模型,这对于模型的选择和验证非常重要。
  • Viterbi 算法 则用于解码(Decoding),即确定最可能的状态序列。这在许多实际应用中非常有用,如语音识别、基因序列分析等,因为我们需要知道隐藏状态的实际变化以进行进一步分析或决策。

总结

尽管 Viterbi 算法和前向算法都使用了动态规划的思想来有效地解决原本复杂度极高的问题,但它们的应用场景和目标不同。前向算法侧重于评估观测序列的概率,而 Viterbi 算法则致力于找出最有可能的状态序列。理解这两种算法的区别及其具体实现,对于正确选择和应用 HMM 至关重要。


http://www.ppmy.cn/devtools/145336.html

相关文章

迪文串口屏_T5L平台_界面状态图标显示和隐藏

迪文串口屏_T5L平台_界面状态图标显示和隐藏 参考迪文官方视频教程:http://inforum.dwin.com.cn:20080/forum.php?modviewthread&tid7240&fromuid42572 一、软件准备(参考上一篇文章) 二、打开项目,添加变量图标显示 三…

内容与资讯API优质清单

作为开发者,拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源,为你的开发工作提供了强大的支持!无论你是在构建网站、开发应用还是进行数据分析,这个合集都能满足你的需求。你可以通过这些免费API获…

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言:在现代嵌入式硬件设计中,开关元件作为电路中的重要组成部分,起着至关重要的作用。三种主要的开关元件——IGBT(绝缘栅双极型晶体管)、MOSFET(金属氧化物半导体场效应晶体管)和三极管&#…

vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,

** 方法1&#xff1a;word、xls、ppt、pdf 这些文件&#xff0c; 如果预览的文件是链接可以直接打开&#xff0c;可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…

Hive其九,排名函数,练习和自定义函数

目录 一、排名函数 -大名鼎鼎 1、row_number() 2、rank() 2、rank() 3、dense_rank() 二、练习 三、自定义函数 1、将字母变大写案例 2、输入 出生年月日求年龄 函数 一、排名函数 -大名鼎鼎 row_number() rank() dense_rank() 1、row_number() row_number从1开始&a…

青少年编程与数学 02-004 Go语言Web编程 19课题、API文档

青少年编程与数学 02-004 Go语言Web编程 19课题、API文档 一、API文档二、生成工具三、使用Swagger步骤 1&#xff1a;安装必要的工具步骤 2&#xff1a;安装Swagger相关的Go库步骤 3&#xff1a;编写API代码并添加注释步骤 4&#xff1a;生成Swagger文档步骤 5&#xff1a;运行…

修改el-select下拉框高度;更新:支持动态修改

文章目录 效果动态修改&#xff1a;效果代码固定高度版本动态修改高度版本&#xff08;2024-12-25 更新&#xff1a; 支持动态修改下拉框高度&#xff09; 效果 动态修改&#xff1a;效果 代码 固定高度版本 注意点&#xff1a; popper-class 尽量独一无二&#xff0c;防止影…

测试基础知识

软件周期、测试类别、测试计划编写 黑/白盒测试、测试基本原则、测试用例 测试bug、报告、性能测试 API/UI/接口测试、异常/结果分析 CI/CD