理解HMM算法
长这样:

理解的前提:

(1)状态:生成观测值的变量(上图中的“吃”和“睡”)。
(2)观测值:状态乘上输出概率对应的输出(上图中的橙色节点)。
(3)输出概率:输出概率矩阵里面的某个元素(状态和观测值两层之间的某个权重参数)。
(4)输出概率矩阵:由输出概率组成的矩阵。
(5)bi: 第i个状态(比如”睡“)输出所有观测值对应的概率构成的行向量(上图中所有红线构成的行向量)。
(6)o1:表示我要输出第一个观测值。不是把o1做为自变量输入到bi中,只是一个记号(个人表示没什么用)。
(7)Πi:走 第i个状态的初始概率(p(start->吃)=0.3)。
(8)αi(t):(阿尔法)在给定马尔可夫模型中,到t时刻为止,状态们在t个时刻,每个时刻都由所有状态中的一个输出某个观测值,一共输出了t个观测值观测序列,记为,
,并且t时刻输出Ot的状态为qi(状态用q表示),把出现上述场景的概率记作αi(t),称作前向概率(应该是在做前向计算,所以形象成为”前向概率“)。

(9)aij:(字母a,注意不是阿尔法,在第一张图中的“推导”公式里面的)概率转移矩阵中第i行,第j列对应的概率(今天为第i个状态,明天为第j个状态的概率。网络图示中“吃->吃”、“吃->睡”和“睡->睡”之间连线的数 值)。
(10)转移概率矩阵:如下图A所示。

理解
:
表示第1时刻,第i个状态的初始概率Πi乘以第i个状态对应的输出矩阵的第i行向量。
例如:假设第i个状态为“睡”,那么Πi等于0.7,bi等于[0.3,0.5,0.2],那么第1时刻的状态为“睡”,观测值为“哭”、“没精神”和“找妈妈”的概率分别为0.7*[0.3,0.5,0.2],如果第一时刻的观测值为“哭”,那么α1(t)=0.21.
:
t+1时刻,所有t时刻的前向概率里面按时的t时刻的状态转化为j状态后再乘以j对应的输出概率总和。
以第2时刻为例:状态j为“吃”,那么αj(t+1)表示第二时刻,第二状态为“吃”,观测值序列为的O1O2概率,其等于第1时刻的前向概率αi(t) 乘以 第一时刻的前向概率里面暗示的第一时刻的状态i转化为状态j的概率(aij),i有可能是“吃”,也有可能是“睡”,我们要计算的是第2时刻状态为“吃”的概率,根据马尔可夫模型,第二时刻的“吃”和第一时刻的状态有关,但是我们不知道第一时刻到底是什么状态,所以用概率的方式全部考虑进来。
[0.21,0.03,0.02]*0.1*bjo2(0.1表示“吃1”->“吃2”的概率)+[0.21,0.15,0.14]*0.9*bjo2(0.9表示“睡1”->“吃2”的概率)
乘上转移概率之后,在乘以“吃”对应的输出概率行向量:
[0.021,0.003,0.002]Tx[0.7,0.1,0.2] + [0.189,0.135,0.126]Tx[0.7,0.1,0.2](考虑了所有情况,可能会有点费解,请看下一行)
如果第一时刻的观测值为“哭”,第二时刻的状态为“吃”,观测值为“哭”,那么αj(t+1)=0.21*0.1*0.7=0.0147 + 0.21*.0.9*0.7=0.1323.
:
μ:给定的马尔可夫模型。
O:1-T+1时刻的观测值序列。
在马尔可夫模型μ中,输出序列O的概率为:输出O并且T+1时刻的状态为qi的概率综合。
本文截图部分来自:隐马尔科夫模型(HMM)一前向与后向算法 - 知乎 (zhihu.com)
理解HMM算法的更多相关文章
- 深入理解KMP算法
前言:本人最近在看<大话数据结构>字符串模式匹配算法的内容,但是看得很迷糊,这本书中这块的内容感觉基本是严蔚敏<数据结构>的一个翻版,此书中给出的代码实现确实非常精炼,但是个人 ...
- KMP算法详解 --- 彻头彻尾理解KMP算法
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k. 但是问题在于如何求出这个最大前后缀长度呢? 我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破, 后来翻看 ...
- 一步一步理解Paxos算法
一步一步理解Paxos算法 背景 Paxos 算法是Lamport于1990年提出的一种基于消息传递的一致性算法.由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后重新发表到 TOCS ...
- 简单的理解deflate算法
简单的理解deflate算法 最近做压缩算法. 用到了deflate压缩算法, 找了很多资料, 这篇文章算是讲的比较易懂的, 这篇文章不长,但却浅显易懂, 基本上涵盖了我想要知道的所有要点. 翻译 ...
- 理解 KMP 算法
KMP(The Knuth-Morris-Pratt Algorithm)算法用于字符串匹配,从字符串中找出给定的子字符串.但它并不是很好理解和掌握.而理解它概念中的部分匹配表,是理解 KMP 算法的 ...
- 理解DeepBox算法
理解DeepBox算法 基本情况 论文发表在ICCV2015,作者是Berkeley的博士生Weicheng Kuo: @inproceedings{KuoICCV15DeepBox, Author ...
- 如何感性地理解EM算法?
https://www.jianshu.com/p/1121509ac1dc 如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计.个人认为,理解EM算法背后的idea,远比看懂 ...
- uva11383 Golden Tiger Claw 深入理解km算法
/** 题目: uva11383 Golden Tiger Claw 深入理解km算法 链接:https://vjudge.net/problem/UVA-11383 题意:lv 思路:lrj训练指南 ...
- 怎么理解RSA算法
原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ...
随机推荐
- Java基础总结(二)
1.ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的 ...
- Linux curl命令进行网络请求
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11841353.html 1. curl get请求: curl http://www.baid ...
- VUE3 之 动态组件 - 这个系列的教程通俗易懂,适合新手
1. 概述 暗示效应告诉我们: 巧妙的暗示会在不知不觉中剥夺我们的判断力,对我们的思维形成一定的影响,造成我们行为的些许改变或者偏差. 例如你的朋友说你脸色不太好,是不是病了,此时,你可能就会感觉浑身 ...
- 基于PXIe接口的CoaXpress高速相机图像采集、回放
PXIe简介 PCI eXtensions for Instrumentation or PXI is a computer-based hardware and software platform ...
- mysql对属性的增删改
修改表 alter table 创建表db 查看表 desc与describe desc table 查看建表语句show create table t1; 修改表名 alter table t1 r ...
- Unreal ListView使用篇
应用 ListView,在Unreal UI界面开发中用途非常广泛,基本只要你使用列表,就得需要用ListView.比如排行榜100个列表,界面上只需要显示出10个,我们肯定不能生成100个ui实例, ...
- .Net Core Aop之IActionFilter
一.简介 在.net core 中Filter分为以下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
- k8s集群搭建EFK日志平台:ElasticSearch + Fluentd + Kibana
k8s集群 kubectl get node EFK简介 ElasticSearch:分布式存储检索引擎,用来搜索.存储日志 Fluentd:日志采集 Kibana:读取es中数据进行可视化web界面 ...
- HMS Core在MWC2022展示最新开放能力,助力开发者构建精品应用
[2022年2月28日,巴塞罗那]世界移动通信大会MWC2022在巴塞罗那开幕.HMS Core设立了3个展台(Fira Gran Via,Hall 1),向全球开发者展示HMS Core 6的全新开 ...
- hacker模拟环境
https://geekprank.com/hacker/