昨天在看的时候, 才发现, 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的更多相关文章

  1. Page5:状态转移矩阵及性质、连续线性系统离散化及其性质[Linear System Theory]

    内容包含脉冲响应矩阵和传递函数矩阵之间的关系,状态转移矩阵及性质,以及线性连续系统离散化及其性质

  2. NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令

    NVIDIA Jetson TX2 查看系统参数状态. 当前博主的TX2更新的版本为:Jetpack 3.3, cuda 9.0.252, cudnn7.0, opencv3.3.1, TensorR ...

  3. HMM的概率计算问题和预测问题的java实现

    HMM(hidden markov model)可以用于模式识别,李开复老师就是采用了HMM完成了语音识别. 一下的例子来自于<统计学习方法> 一个HMM由初始概率分布,状态转移概率分布, ...

  4. 【中文分词】隐马尔可夫模型HMM

    Nianwen Xue在<Chinese Word Segmentation as Character Tagging>中将中文分词视作为序列标注问题(sequence labeling ...

  5. 浅谈分词算法(3)基于字的分词方法(HMM)

    目录 前言 目录 隐马尔可夫模型(Hidden Markov Model,HMM) HMM分词 两个假设 Viterbi算法 代码实现 实现效果 完整代码 参考文献 前言 在浅谈分词算法(1)分词中的 ...

  6. 浅谈分词算法基于字的分词方法(HMM)

    前言 在浅谈分词算法(1)分词中的基本问题我们讨论过基于词典的分词和基于字的分词两大类,在浅谈分词算法(2)基于词典的分词方法文中我们利用n-gram实现了基于词典的分词方法.在(1)中,我们也讨论了 ...

  7. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(5)- 语音识别实现(SpeechRecognition, PocketSphinx0.1.15)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之语音识别实现. 语音识别是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...

  8. 【算法】BILSTM+CRF中的条件随机场

    BILSTM+CRF中的条件随机场 tensorflow中crf关键的两个函数是训练函数tf.contrib.crf.crf_log_likelihood和解码函数tf.contrib.crf.vit ...

  9. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  10. 鲍姆-韦尔奇算法求解HMM参数

    1. HMM模型参数求解概述 HMM模型参数求解根据已知的条件可以分为两种情况. 第一种情况较为简单,就是我们已知DD个长度为TT的观测序列和对应的隐藏状态序列,即{(O1,I1),(O2,I2),. ...

随机推荐

  1. 自适应 Simpson 积分法学习笔记

    自适应 Simpson 积分法,是一种计算一段区间内,形态奇怪的函数和的算法,例如面积并和难以直接用通项公式计算的函数. Simpson 积分 我们都知道,求解微积分需要求解一个导数的原函数,但这显然 ...

  2. startup_stm32f10x_xx.s 启动代码文件的选择

    网上查到的各个文件的解释是: startup_stm32f10x_cl.s 互联型的器件startup_stm32f10x_hd.s 大容量startup_stm32f10x_hd_vl.s 大容量s ...

  3. 关于 False、True、0、1、tinyint(1) 的说明

    MySQL 保存 Boolean 值时,用 1 代表 TRUE,0 代表 FALSE:类似一个 bit 位,默认没有数据,即为 0,也即 Faslse MySQL 存储 Boolean 值的类型为 t ...

  4. 使用form-create生成表单组件

    FormCreate 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成组件.支持5个UI框架,并且支持生成任何 Vue 组件.内置20种常用表单组件和自定义组件,再复杂的 ...

  5. Nginx: stat() failed (13: permission denied)

    解决 server { listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # ...

  6. IvorySQL 升级指南:从 3.x 到 4.0 的平滑过渡

    日前,IvorySQL 4.0 重磅发布,全面支持 PostgreSQL 17,并且增强了对 Oracle 的兼容性.关于 IvorySQL 4.0 的介绍,各位小伙伴可以通过这篇文章回顾:Ivory ...

  7. StarRocks 升级注意事项

    前段时间升级了生产环境的 StarRocks,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下. 因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部 ...

  8. 基于pandas的数据清洗 -- 缺失值(空值)的清洗

    博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...

  9. 记CentOs服务器内存使用满的解决办法

    使用的一个应用服务器,weblogic部署,nginx分配,在使用了半个月的时间里,服务器内存达到杀掉服务器进程之后查看被删除但是仍然被应用程序占用的文件列表由于我删掉了日志里所以东西,所以导致后来我 ...

  10. 跳转程序控制语句:break、continue 以及死循环、标号

    1.break:结束循环,结束switch语句 . 案例:模拟用户登录密码,一共三次机会,初识密码为123456 我们之前学的方法可以完成这个案例,但是这种写法还存在问题 如图 明明已经输入了正确的密 ...