当前位置: 首页 > news >正文

HMM+viterbi学习

HMM

截图里的例子是有红蓝黑3个桶(即状态),桶里有黑白2类球(即输出)。图里画了3行,表示3个不同时刻下从桶里取球的操作,蓝色线表示上个时刻选了某个桶时,当前时刻选取某个桶的概率(即状态转移的概率),例如时刻1选了红桶,时刻2选取蓝桶的概率是0.2。方框里的2个数字表示选择黑白球的概率,例如时刻1蓝桶里选择黑球概率是0.4,选择白球概率是0.6。将上图中的状态转移概率用矩阵表示出来如下。j

状态转移矩阵中行和列表示状态之间切换的概率,例如第一行表示红桶切换到红桶、蓝桶、黑桶的概率分别是0.5、0.2、0.3。

输出概率矩阵中行表示状态(不同颜色桶),列表示输出的结果(黑白球),例如第2行表示蓝桶输出黑白球的概率分别是0.4和0.6。

输出向量表示每个时刻输出黑白球的情况,例如0表示黑球1表示白球。

状态向量表示每个时刻处于的状态(即选择的哪个颜色的桶),例如2表示黑桶,1表示蓝桶。

若已知输出向量和状态向量,则可以计算出来状态转移矩阵和输出概率矩阵。假设有1k条输出向量和状态向量,则可计算出状态转移总次数和各个状态之间相互转移的次数,从而计算出状态转移矩阵。

viterbi

viterbi要解决的问题是已知输出向量out、状态转移矩阵A和输出概率矩阵B,求状态向量​​​。

定义辅助矩阵xi和phi,其中xi的维度为(输出向量长度,状态个数),矩阵元素(i,j)表示时刻i下由j桶输出out[i]的概率。矩阵phi的维度与xi一样,记录的是最有可能的状态转移路径,矩阵元素(i,j)表示时刻i的j桶最有可能是时刻i-1的哪个桶转移过来的。

xi矩阵的第0行计算如下。

构造辅助函数,计算时刻t+1的状态a,最可能是由时刻t的哪个状态转移而来。

以此类推计算出时刻1和2的xi和phi矩阵。

利用xi矩阵最后一行以及phi矩阵就可以回溯出整个状态向量。

参考文献:

【1】纯python实现机器学习算法,非套用sk-learn,隐马尔可夫篇,维特比算法篇,HMM,viterbi,中文分词,统计学习方法,机器学习_哔哩哔哩_bilibili

http://www.dtcms.com/a/348923.html

相关文章:

  • Trip Footprint旅行足迹App
  • Windows在资源管理器地址栏输入CMD没反应
  • MATLAB 数值计算进阶:微分方程求解与矩阵运算高效方法
  • 伯朗特功率分析仪通过Modbus转Profinet网关与工业以太网集成案例
  • RunningHub - 基于ComfyUI的云端AI创作与应用平台
  • PID控制器的原理以及PID控制仿真
  • 离线签名协调器 Offline Signing Orchestrator(OSO)
  • 可视化-模块1-HTML-03
  • 图解SpringMVC工作流程,以及源码分析。
  • response对象的elapsed属性
  • 深度模块化剖析:构建一个健壮的、支持动态Cookie和代理的Python网络爬虫
  • Altium Designer 22使用笔记(9)---PCB布局、布线操作
  • halcon(一)一维码解码
  • 普元低代码开发平台:开启企业高效创新新征程
  • 刷题日记0824
  • 【AI论文】实习生-S1:一种科学多模态基础模型
  • 0824 MLIR和AST相关资料
  • 复杂工业场景识别率↑18.3%!陌讯多模态OCR算法实战解析
  • 虚幻引擎5(UE5)Android端游戏开发全流程指南:从环境配置到项目发布
  • Qt工具栏中图标槽函数没有响应的问题分析
  • 【JVM内存结构系列】三、堆内存深度解析:Java对象的“生存主场”
  • 【数据分享】地级市能源利用效率(超效率SBM、超效率CCR)(2006-2023)
  • Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件
  • 纯血鸿蒙下的webdav库
  • vue中 computed vs methods
  • 【C++闯关笔记】STL:string的学习和使用(万字精讲)
  • 开发软件安装记录
  • Kubernetes v1.34 前瞻:资源管理、安全与可观测性的全面进化
  • golang6 条件循环
  • R语言rbind()和cbind()使用