Machine Learning--隐马尔科夫(HMM)讲解
来源:互联网 发布:多益网络在线笔试 编辑:程序博客网 时间:2024/06/03 17:04
HMM简介: Hidden Markov Model(HMM)是个统计模型. 创立于20世纪7,8十年代, 现在已经成功应用与语音识别, 行为识别, 文字识别等领域. 两个人交流时的过程是这样的[4]: 发送者(人或者机器)对信息进行编码(编码成语音或者电话线的调制信号), 通过媒体(空气, 电线)传播到接收方(这个过程称为信道传输); 在接收方, 接受者(人或者机器) 根据事先约定好的方法(比如我们知道英语good代表好的意思, 我们的大脑对good这个词进行解码), 对信息进行解码.
wiki例子[1]: Alice和Bob是好朋友, 但是两人距离较远, 每天通过电话了解对方做了什么. Bob对3种活动感兴趣: 公园散步, 购物, 清理房间, Bob选择干什么事情仅与当天的天气有关. Alice对于Bob所在城市的天气并不是很了解, 但是了解Bob城市天气的总的趋势. 每天Bob告诉Alice自己干了什么, Alice要从这些信息中去猜测Bob所在城市的天气情况, 请问如何做?
Alice的做法是这样的, 他认为每天天气的转变就像是一个马尔科夫链, 有两个状态: “雨天”, “晴天”. 但是无法直接观察到. 每天, Bob都有一定的概率去散步,购物或者打扫(只干这3件事), Bob会告诉Alice自己的活动, 这些活动就是Alice的间接观测数据, 通过这些观测数据去推测当天天气情况, 这整个系统就是一个HMM.
// HMM模型参数W// 状态数目: 雨天, 晴天 (下面代码基于python) states = ('Rainy', 'Sunny')observation = ('Walk','Shop','Clean') // 每个状态可能的观测值(Bob的行为)start_probability = {'Rainy': 0.6,'Sunny': 0.4} // 每种状态的初始概率分布// 状态转移概率,比如今天是Rainy,明天是Rainy的概率是0.7, 是Sunny的概率是0.3transition_probability={'Rainy': {'Rainy': 0.7, 'Sunny': 0.3},'Sunny':{'Rainy': 0.7, 'Sunny': 0.3}}// 给定状态下,观测值的概率分布, 比如Bob在Rainy天Walk的概率是0.1emission_probability={'Rainy',{'Walk',0.1, 'Shop':0.4, 'Clean': 0.5},'Sunny',{'Walk',0.6, 'Shop':0.3, 'Clean': 0.1}}
解释以及问题提出:
这里,start_probability可以从一年中Rainy/Sunny的天数统计而来. Alice和Bob通话的3天里, Bob告诉Alice他这3天做的事是: 散步, 购物, 清理. Alice现在有2个问题:
1) 这个观察序列O=(‘散步’,’购物’,’清理’)的出现概率是多少? (即求:
2) 如何通过观察序列推测最可能的状态序列? (根据W和O, 如何求状态序列S?)
状态转移图和发射图如下图所示:
数学表达:
如何根据观测值
随机过程中各个状态
st 的概率分布, 只与它前一个状态有关, 即P(s1|s2,s3,...)=P(s1|s2) .
问题1 HMM的训练:
从上式我们可以知道, 我们只需要知道
如果有足够多的训练样本, 我们可以统计
这个和前面的相似, 也是可以直接通过训练样本统计得到的.
训练问题: 这种训练方式需要大量的标记样本, 这点很困难, 成本很高
实用的训练方法:
我们采用无监督的方法, 即通过大量观测到的信号
鲍姆-韦尔奇算法思想:
两个不同的HMM模型可以得到相同的观测序列, 如果仅仅通过观测序列
首先找到一组能够产生观测序列
重复迭代这个过程, 直到模型的质量不再显著提高未知(又是一个EM的过程).
例子2:
考虑一个交通灯的例子, 假设交通灯的状态有4个: red–red/amber–green–amber–red,这个序列是一个状态机, 后一个状态依赖前一个状态, 这是一个确定性的系统. 状态转换图如下所示:
确定性系统的状态存在简单的依赖关系, 便于理解和分析.
[1] HMM(wiki).
[2] 专门介绍HMM的英文网站.
[3] 隐马尔可夫模型(HMM)攻略.
[4] 数学之美 第五章 隐含马尔科夫模型.
- Machine Learning--隐马尔科夫(HMM)讲解
- 隐马尔科夫模型(HMM)讲解
- HMM隐马尔科夫模型例题讲解 加深印象
- machine learning
- Machine Learning
- machine learning
- Machine Learning
- machine learning
- Machine Learning
- machine learning
- machine learning
- Machine Learning
- Machine Learning
- machine-learning
- machine-learning
- Machine Learning
- Machine Learning
- Machine Learning
- C#静态字段和静态方法
- 指针练习 1002 将数组a中的n个整数按相反顺序存放
- 学习笔记(十二)—设计模式(续)
- JSON
- hdu 5908 Abelian Period 模拟
- Machine Learning--隐马尔科夫(HMM)讲解
- 欢迎使用CSDN-markdown编辑器
- Bestcoder Round #88 problem.B Abelian Period
- Python学习:时间处理工具--dateutil两个简单用法
- 流程控制语句
- 软工视频——部分总结
- Java反射机制
- 【Maven实战】01 Maven简介
- JAVA温习课堂11