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

HMM(隐马尔科夫模型)-理论补充2

目录

一.大数定理

二.监督学习方法

1.初始概率

2.转移概率

3.观测概率 

三.Baum-Welch算法

1.EM算法整体框架

2. Baum-Welch算法

 3.EM过程

4.极大化

5.初始状态概率

6.转移概率和观测概率

四.预测算法

1.预测的近似算法

2.Viterbi算法

1.定义

2. 递推:

3. 终止:

五.总结


一.大数定理

假设已给定训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2)…(Os,Is)},那么,可以直接利用Bernoulli大数定理的结论“频率的极限是概率”,给出HMM的参数估计。

二.监督学习方法

1.初始概率

2.转移概率

 

3.观测概率 

三.Baum-Welch算法

若训练数据只有观测序列,则HMM的学习需要使用EM算法,是非监督学习。 

1.EM算法整体框架

2. Baum-Welch算法

所有观测数据写成O=(o1,o2…oT),所有隐数据写成I=(i1,i2…iT),完全数据是(O,I)=(o1,o2…oT,i1,i2…iT),完全数据的对数似然函数是lnP(O,I|λ)

假设 是HMM参数的当前估计值,λ为待求的参数。

 3.EM过程

根据

函数可写成 

4.极大化

极大化Q,求得参数A,B,π 

由于该三个参数分别位于三个项中,可分别极大化

注意到πi满足加和为1,利用拉格朗日乘子法,得到:

 

5.初始状态概率

对上式相对于πi求偏导,得到:

 

对i求和,得到:

 

从而得到初始状态概率:

 

6.转移概率和观测概率

第二项可写成:

 

仍然使用拉格朗日乘子法,得到

同理,得到:

 

四.预测算法

1.预测的近似算法

在每个时刻t选择在该时刻最有可能出现的状态it*,从而得到一个状态序列I*={i1*,i2*…iT*},将它作为预测的结果。

给定模型和观测序列,时刻t处于状态qi的概率为:

选择概率最大的i作为最有可能的状态

会出现此状态在实际中可能不会发生的情况 

算法:走棋盘/格子取数

给定m*n的矩阵,每个位置是一个非负整数,从左上角开始,每次只能朝右和下走,走到
右下角,求总和最小的路径。

走的方向决定了同一个格子不会经过两次。

 若当前位于(x,y)处,它来自于哪些格子呢?
 dp[0,0]=a[0,0] / 第一行(列)累积
 dp[x,y] = min(dp[x-1,y]+a[x,y],dp[x,y-1]+a[x,y])
 即:dp[x,y] = min(dp[x-1,y],dp[x,y-1]) +a[x,y]

2.Viterbi算法

Viterbi算法实际是用动态规划解HMM预测问题,用DP求概率最大的路径(最优路径),这是一条路径对应一个状态序列。

定义变量δt(i):在时刻t状态为i的所有路径中,概率的最大值。

1.定义

2. 递推:

3. 终止:

五.总结

马尔科夫模型可以用来统一解释贪心法和动态规划。

HMM解决标注问题,在语音识别、NLP、生物信息、模式识别等领域被广泛使用。

定义变量δt(i):在时刻t状态为i的所有路径中,概率的最大值。

加强算法模型和实践问题的相互转换能力。 

http://www.lryc.cn/news/22163.html

相关文章:

  • 【分布式系统】MinIO之Multi-Node Multi-Drive架构分析
  • 【无标题】(2019)NOC编程猫创新编程复赛小学组真题含参考
  • 【尚硅谷MySQL入门到高级-宋红康】数据库概述
  • SpringBoot集成Redis并实现数据缓存
  • SpringBoot配置文件(properties yml)
  • css 画图之质感盒子
  • 面了一个月,终于让我总结出了这份最详细的接口测试面试题
  • {新}【java开发环境安装】完整工作环境安装配置
  • Python|每日一练|数组|数学|图算法|字符串|动态规划|单选记录:加一|迷宫问题|扰乱字符串
  • MySQL 使用IF判断
  • C++类与对象(上)【详析】
  • AIR系列|板载LED|gpio引脚选择|GPIO|流水灯|LuatOS-SOC接口|官方demo|学习(20-1):GPIO库基础
  • MySQL数据库中的函数怎样使用?
  • 命名空间的使用大全
  • Redisson分布式锁和同步器详解-官方原版
  • 【C语言进阶】指针与数组、转移表详解
  • SDN是什么,和SD-WAN有什么关系
  • 百度前端高频react面试题(持续更新中)
  • 中级嵌入式系统设计师2016下半年下午应用设计试题
  • 【雅思备考】九分学长写作课笔记
  • 【源码解析】SpringBoot自动装配的实现原理
  • 详解ROS时间戳
  • Android Window、WindowManager
  • 【一天一门编程语言】怎样设计一门编程语言?
  • 微服务保护 -- 初识 Sentinel(雪崩问题,快速入门Sentinel)
  • 软件测试面试问答
  • 【架构】架构师的核心能力-抽象能力
  • 前端一面常见react面试题(持续更新中)
  • 亥姆霍兹线圈测量系统
  • JavaScript 类型转换