Machine Learning--隐马尔科夫(HMM)讲解

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.3
transition_probability={
  'Rainy': {
  'Rainy': 0.7, 'Sunny': 0.3},'Sunny':{
  'Rainy': 0.7, 'Sunny': 0.3}}
// 给定状态下,观测值的概率分布, 比如Bob在Rainy天Walk的概率是0.1
emission_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=(‘散步’,’购物’,’清理’)的出现概率是多少? (即求: P(O|W) )?
2) 如何通过观察序列推测最可能的状态序列? (根据W和O, 如何求状态序列S?)

状态转移图和发射图如下图所示:
状态转换图

数学表达:
如何根据观测值 o1,o2,o3... 来推测信号源发送的信息 s1,s2,s3,... 呢? 用概率的角度就是最大化下式:

P(s1,s2,s3,...|o1,o2,o3,...)=P(o1,o2,o3,...|s1,s2,s3,...)P(s1,s2,s3,...)P(o1,o2,o3,...)  (1)

s1,s2,s3,...=argmaxalls1,s2,...P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值