HMM超详细讲解+代码

本文详细介绍了隐马尔科夫模型(HMM)的概念、应用场景及三个经典问题:评估、预测和学习。HMM是处理观测序列与隐藏状态序列之间关系的统计模型,常见于语音识别、词性标注等领域。通过前向算法、维特比算法和Baum-Welch算法解决HMM的评估、预测和学习问题。此外,文章还探讨了HMM在实际问题中的应用和一些待解决的挑战。
摘要由CSDN通过智能技术生成


#写在前面
老习惯,正文之前瞎扯一通。HMM学了很久,最初是在《统计学自然语言处理》里面就学到了相关内容,并且知道HMM CRF一直都是NLP比较底层比较基础且较为有效的算法模型(虽然感觉还是挺难的),之前仅仅局限在了解前向算法和维特比算法上。也没有去写代码,只知道个大概思路。最近从52nlpHMM系列讲解再次入手,结合多篇博客、github项目以及李航的《统计学习方法》比较全面的对HMM做了一次学习,要求对自己强制输出,所以在整体公式推导没有什么大问题之后,昨天花了一天完善了代码,今天来做一个全面的讲解,为人为己。
本文还是坚持自己的风格,讲解和公式穿插进行,数学公式永远是最精炼的语言 ^_^

本文目标

  • Why - 什么场景下需要HMM模型
  • What - HMM模型的相关概念定义
  • How - HMM模型中的3个经典问题
  • Code - python实现一个HMM基础框架以及简单应用
  • 总结与后续问题

#Why - 什么场景下需要HMM模型
X是一个时间和状态都是离散随机过程,Xn是n时刻下的状态,如果Xn + 1对于过去状态的条件概率分布仅是Xn的一个函数,即我们通常说的状态仅与上一个状态有关,则该过程是一个一阶马尔科夫过程。公式如下:
P(Xn+1=x∣X0,X1,X2,…,Xn)=P(Xn+1=x∣Xn)
上面回顾了一下马尔科夫模型,现在来看一个实际的例子:
现在有某地一周的天气预报:
1 Sun 2 Sun 3 Rain 4 Sun 5 Rain 6 Rain 7 Sun
现在我们假设知道某地以往所有的天气,现在我们假设这是在沙漠地区,那么我们有一个2阶的状态转移矩阵:

         sun rain
sun		 0.9  0.1
rain	 0.8  0.2

那么我们现在可以很轻松的判断这一周出现这种天气的概率是多少。但是突然有一天,你被关进了一个小黑屋,你不能直接知道外面的天气,你只能看看小屋子里面苔藓的干湿情况,并且你知道天气能影响苔藓的干湿情况。那么现在如果你想了解天气情况以及相关的信息,你该怎么办?

这里先来小小总结一下,我们现实生活中有很多这种类似的例子,上述例子中天气是我们不能直接观测的(被关小黑屋的情况)称为隐藏状态,苔藓的干湿被称为观察状态,观察到的状态序列与隐藏过程有一定的概率关系,这时我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。我们生活中有很多这种无法被直接观测的例子,比如语音设备中的某些内部产出,或者是投骰子中某些骰子的状态选择(4,6,8面骰子的案例,网上很多这里不赘述),或者是词性标注中的词语词性等等。整个HMM模型都是围绕观测状态和隐藏状态建模和处理的。我们先留个印象,让我们继续往后看。

#What - HMM模型的相关概念定义
隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。以上描述来自百度百科。
HMM模型大概长像如下,偷的52NLP的图,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,通常是一阶的,对应下图就是天气之间的状态转移概率关系。以及一个与隐藏状态某种程度相关的可观察到的状态集合,对应就是天气如何影响苔藓,即我们的术语叫做发射概率或者混淆概率。
这里写图片描述
##HMM模型的5元组
每个模型都有自己相关的概念,弄清算法之前我们先来看看这个模型的基本概念,5元组。
(S,K,π,A,B):以上分别对应了HMM中的5个重要概念
S:隐藏状态的集合(Sun Cloud Rain),N为隐状态个数 N=3
K : 输出状态或者说观测状态的集合(Soggy Damp Dryish Dry),M为观测状态个数M=4
π : 对应隐藏状态的初始化概率 (sun : 0.5 cloud : 0.3 rain : 0.2)
A : 隐藏状态的状态转移概率,是一个NN的概率矩阵
B : 隐藏状态到观测状态的混淆矩阵,是一个N
M的发射概率矩阵
另外符号体系中会有对于每个序列的状态序列和观测序列,如一周的观测和状态,定义下
O : 某特定观测序列
X : 某特定隐藏状态序列
仍然是盗的图,方便大家看一下,和我上面写的基本一致。来自《统计学自然语言处理》
这里写图片描述

##HMM中的3个经典问题
关于HMM这个模型建立起来之后,其实有很多问题可以去讨论,但是一般讲学中我们讨论3个问题,即评估,预测,学习,下面我们来一起看一波吧~
这里为了解释方便,请大家无条件的接受以下两个基础条件:
1.已知对应问题的观测状态集合K
2.已知对应问题的隐藏状态集合S
如果没有以上两个问题,可能就不太属于今天要讨论的范畴了,可能属于聚类后者其他研究,总之这里我们不予考虑。
3个经典问题如下:
·观察序列概率的计算 评估(前向算法)
·隐藏状态序列最大概率解 预测(维特比算法)
·马尔科夫参数求解(π,A,B) 学习(EM算法 前后向算法)

#How - HMM模型中的3个经典问题
##评估

评估描述

给定观测序列O(o1,o2,…,oT)和模型u = (π,A,B),求出P(O | u),即给定模型下观测序列的概率是多少?对应于之前的例子,就是给定天气的转移矩阵,天气和苔藓的发射矩阵,以及天气的初始化列表

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值