(补) HMM 求解参数-状态转移矩阵 A
昨天在看的时候, 才发现, HMM参数求解给忘了 状态转移矩阵A的求解, 我以为我做了...好气哦, 不多比比, 直接来.
A 是状态转移矩阵, 表示在 已知前一个状态下, 求解后一个概率(写出来就是一个条件概率)
\(p(z_{k+1} =j | z_k = i) = \frac {p(z_{k+1}=j, z_k = i)}{p(z_k = i)}\)
最基础的条件概率公式哈
分母 \(p(z_k = 1)\) 可以通过前面的 F/B 算法计算出来, 所以问题在于如何计算 \(p(z_{k+1}, z_k=i)\) 这个联合概率
估计 A-理论
由上, 我们的目标是如何计算 \(p(z_{k+1}, z_k = i | x)\) , 在观测值已知的情况下.
由 \(z_k 与 x_k\) 是一 一对应的关系, 通过贝叶斯公式可以得到:
\(p(z_k=i , z_{k+1}=j| x) 与 p( z_k =i, z_{k_1}=j, x) 是正比关系\)
跟之前同样的套路, 对 x 进行区间拆分, 即:
\(=p(z_k, z_{k+1}, x_{1:k}, x_{k+1}, x_{k+2:n})\) 换个变量顺序哈, 为了把 \(z_k, x_{1:k}\) 看为一个整体, 求解技巧是为了最终形式简洁
\(=p(z_k, x_{1:k}, z_{k+1}, x_{k+1}, x_{k+2:n})\) 展开写:
\(=p(z_k, x_{1:k}) \ p(z_{k+1}|z_k, x_{1:k}) \ p(x_{k+1}|z_k, x_{1:k}, z_{k+1}) \ p(x_{k+2:n}|z_k, x_{1:k},z_{k+1}, x_{k+1} )\)
同样根据 D-separation性质 可将与条件概率无关的独立变量进行省略, 化简得到:
\(p(z_k, x_{1:k}) \ p(z_{k+1}|z_k) \ p(x_{k+1}|z_{k+1}) \ p(x_{k+2:n}|z_{k+1})\)
这几个项, 不就刚好对应: Forward, 状态转移矩阵, 发射概率矩阵, Backwark 呀.
也就是可以算出所有的:
\(p(z_k=i , z_{k+1}=1| x) 正比于 p( z_k =i, z_{k_1}=1, x)\)
\(p(z_k=i , z_{k+1}=2| x) 正比于 p( z_k =i, z_{k_1}=2, x)\)
\(p(z_k=i , z_{k+1}=3| x) 正比于 p( z_k =i, z_{k_1}=3, x)\)
....
再进行一个归一化的操作, 则就算出了 \(p(z_k=i, z_{k+1}=j|x)\) 的概率了, (用来估计A要用到的)
估计A-栗子
考虑 Z, 假设有3个样本, 通过之前的 F/B 算法, 可以得到每个z_i 的概率分布.
样本1
z1 | z2 | z3 | z4 | z5 | z6 |
---|---|---|---|---|---|
0.6 | 0.5 | 0.6 | 0.7 | 0.6 | 0.2 |
0.3 | 0.3 | 0.2 | 0.2 | 0.1 | 0.3 |
0.1 | 0.2 | 0.2 | 0.1 | 0.3 | 0.5 |
样本2
z1 | z2 | z3 | z4 | z5 |
---|---|---|---|---|
0.5 | 0.4 | 0.3 | 0.6 | 0.3 |
0.3 | 0.4 | 0.5 | 0.3 | 0.1 |
0.2 | 0.2 | 0.2 | 0.1 | 0.6 |
样本3
z1 | z2 | z3 | z4 |
---|---|---|---|
0.5 | 0.1 | 0.3 | 0.5 |
0.3 | 0.2 | 0.3 | 0.1 |
0.2 | 0.7 | 0.3 | 0.4 |
我们要计算的是 \(p(z_k=i, z_{k+1}=j | x)\) 这个概率. 根据上面的数据, 方法就是前面的理论推导的式子, 过程跟 HMM的第2篇, 已知Z 来计算是差不多的过程. 这里就不展开了.
最后呢就计算出来状态转移矩阵 A.
用到的EM算法
随机初始化 参数 \(\theta=(\pi, A, B)\)
while not 收敛:
E-step: (核心是为了计算 p(z|x)
根据已知的 \(\theta=(\pi, A, B)\) 计算
\(p(z_k^{i} | x^i), i = 1, 2, ...n\) // 用 F/B 算法求解
\(p(z_{k}^i, z_{k+1}^i | x^i), i = 1, 2...n\)
M-step:
参数更新
\(\pi, A, B\)
不搞了 HMM 就先搞到这, 我感觉之前我还挺清晰的, 写着写着, 这些概率公式, 总感觉留有bug, 真心觉得, 概率模型贼不好理解, 一不小心就自己个就弄混了, 什么条件概率, 全概率, 贝叶斯, 条件独立 , 序列, 值概率....自己都写崩溃了, 赶紧撤退, 战略性放弃一波, 再恶补一波概率论先.
(补) HMM 求解参数-状态转移矩阵 A的更多相关文章
- Page5:状态转移矩阵及性质、连续线性系统离散化及其性质[Linear System Theory]
内容包含脉冲响应矩阵和传递函数矩阵之间的关系,状态转移矩阵及性质,以及线性连续系统离散化及其性质
- NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令
NVIDIA Jetson TX2 查看系统参数状态. 当前博主的TX2更新的版本为:Jetpack 3.3, cuda 9.0.252, cudnn7.0, opencv3.3.1, TensorR ...
- HMM的概率计算问题和预测问题的java实现
HMM(hidden markov model)可以用于模式识别,李开复老师就是采用了HMM完成了语音识别. 一下的例子来自于<统计学习方法> 一个HMM由初始概率分布,状态转移概率分布, ...
- 【中文分词】隐马尔可夫模型HMM
Nianwen Xue在<Chinese Word Segmentation as Character Tagging>中将中文分词视作为序列标注问题(sequence labeling ...
- 浅谈分词算法(3)基于字的分词方法(HMM)
目录 前言 目录 隐马尔可夫模型(Hidden Markov Model,HMM) HMM分词 两个假设 Viterbi算法 代码实现 实现效果 完整代码 参考文献 前言 在浅谈分词算法(1)分词中的 ...
- 浅谈分词算法基于字的分词方法(HMM)
前言 在浅谈分词算法(1)分词中的基本问题我们讨论过基于词典的分词和基于字的分词两大类,在浅谈分词算法(2)基于词典的分词方法文中我们利用n-gram实现了基于词典的分词方法.在(1)中,我们也讨论了 ...
- 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(5)- 语音识别实现(SpeechRecognition, PocketSphinx0.1.15)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之语音识别实现. 语音识别是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...
- 【算法】BILSTM+CRF中的条件随机场
BILSTM+CRF中的条件随机场 tensorflow中crf关键的两个函数是训练函数tf.contrib.crf.crf_log_likelihood和解码函数tf.contrib.crf.vit ...
- 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...
- 鲍姆-韦尔奇算法求解HMM参数
1. HMM模型参数求解概述 HMM模型参数求解根据已知的条件可以分为两种情况. 第一种情况较为简单,就是我们已知DD个长度为TT的观测序列和对应的隐藏状态序列,即{(O1,I1),(O2,I2),. ...
随机推荐
- 如何通过 Python 实现一个消息队列,为在线客服系统与海外运营的APP对接
我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统.陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户. 而我收到的用户需求也越来越多,产品化的 ...
- startup_stm32f10x_xx.s 启动代码文件的选择
网上查到的各个文件的解释是: startup_stm32f10x_cl.s 互联型的器件startup_stm32f10x_hd.s 大容量startup_stm32f10x_hd_vl.s 大容量s ...
- 目标检测 | Spatially Sparse Convolution
Spatially Sparse Convolution 导言 为什么需要稀疏化? 在3D表示中,除了点云(Point Cloud)和网格模型(Mesh),我们常常还会使用到一种称为体素(Voxel) ...
- day1-简介与下载
为什么创造了golang? 计算机硬件技术更新频繁,不能合理运用多核多CPU的的优势 目前市场缺乏一款简洁高效的编程语言 c++.c运行速度很快,但存在内存泄漏的问题 go语言特点 既做到了静态语言的 ...
- .netCore 使用 Quartz 实例
一.参考源文链接 1.https://www.likecs.com/show-897836.html 2.https://blog.csdn.net/weixin_43614067/article/d ...
- 2025年我用 Compose 写了一个 Todo App
标题党嫌疑犯实锤 序言 从2月12日到3月4日这整整三周时间里,我从零开始又学习了一次 Compose. 为什么说又,是因为这已经是我第二次学习这套课程了. 故事从 4 年前说起,2021 年在意外获 ...
- 使用word模板的科研论文编写
编写SCD论文等的时候,可能出现官网的论文模板不够全面.一般我们使用latex作为论文编写模板,格式等都方便控制和编写,而word模板操作起来较为复杂.但是官网有些时候可能找不到latex的模板内容, ...
- 团队小规模本地大模型服务平台搭建 - Windows
实现目标和考虑因素 部署一个支持多用户同时使用.多模型运行的离线局域网大模型服务器 需要考虑以下几个关键因素: 大模型的加载和管理.使用一个基础大模型,根据需要创建多个专用模型,模型管理方便可靠. 并 ...
- SQLServer中事务处理
--将当前库存记录insert医废转移单中 --declare @Warehouse nvarchar(100); declare @Warehouse_JJRID nvarchar(100); de ...
- cxGrid布局的保存和恢复
//恢复布局IniFileName := ExtractFilePath(Application.ExeName) + 'Layout/' + Self.Name + '.ini';if FileEx ...