统计学习方法笔记 -- 隐马尔可夫模型

参考,隐马尔可夫模型(HMM)攻略

首先看看确定的状态序列,这种状态序列中状态的变化是确定的,比如 
红绿灯,一定是绿灯->红灯->黄灯,这样的状态序列 
当然也有些不确定状态序列,比如 
天气,今天是晴天,你不能确定明天也一定是晴天或雨天 
于是我们用概率来表示这种不确定性,称为马尔可夫过程 (Markov Process),马尔可夫过程的阶数表示当前状态依赖于过去几个状态,出于简单考虑往往用一阶马尔可夫过程,即当前状态仅仅取决于前一个状态。

马尔可夫过程,由状态集合,初始状态和状态转移矩阵组成, 
以天气为例子, 
状态集合为,晴天、阴天和下雨 
初始状态为,晴天 
  
状态转移矩阵,表示每个状态之间的迁移概率 
 

用马尔可夫过程模型,已经可以观察和model各种状态序列,但如果想要切开表面,发现事物的本质,就需要隐马尔可夫模型(Hidden Markov Model)

 

隐马尔可夫模型

隐马尔可夫模型用于表述,两个状态序列之间的关系,即本质状态序列和表象状态序列之间的关系。 
可想而知,有了隐马尔可夫模型,我们可以根据本质状态序列来预测表象状态序列,或反过来,根据表象状态序列来探索本质状态序列

还是天气的例子, 
比如一个人被监禁在房子里无法出去,无法直接观察到天气的状态,但是房子里面有盆植物,它会更加不同的天气发生状态变化 
那么他能做的,就是根据植物的状态去猜测天气状况,这就是根据表象去探索本质的例子

其中,

隐含的状态列表,sun,cloud,rain 
观察到的状态列表,soggy,damp,dryish,dry 
隐含状态的转移矩阵为A 
隐含状态和观察状态之间的关系矩阵为B,表示在隐含状态a时,出现观察状态b的概率

给出隐马尔可夫模型形式化表示,

表示当在t时刻状态为qi, 那么在t+1时刻,状态变为qj的概率

表示在t时刻,当状态为qj时,观测状态为Vk的概率

表示在1时刻,状态为qi的概率

综合,隐马尔可夫模型就可以用上面的三要素来表示, 

并且隐马尔可夫模型做了两个假设,

齐次马尔可夫性假设,即一阶马尔可夫模型假设,t时刻的隐藏状态,只依赖于前一时刻的隐藏状态,和其他时刻的隐藏状态或任意时刻的观察状态都无关 

观测独立性假设,即t时刻的观测状态,只依赖于t时刻的隐藏状态,和其他时刻的观测状态或隐藏状态都无关

 

隐马尔可夫模型的3个基本问题

1. 概率计算问题

计算 , 即在该模型下,出现这组观测序列的概率是多少

2. 学习问题

用极大似然估计出参数,使得该观测序列出现概率最大

3. 预测问题

已知模型和观测状态序列,求解使得P(I|O)最大的隐藏状态序列,

 

下面就分别来看看每种问题的解法

概率计算问题

比较直接的方法,穷举法,就是找出所有可能的长度为t的隐藏状态序列,并乘以在该隐藏状态序列下得到该观测序列的概率,可以想象这个复杂度为,

前向算法和后向算法

定义,前向概率 

即在t时刻观测序列为 ,且t时刻状态为 的概率

前向算法,其实就是定义一个递归算法,即用上一层的前向概率来计算当前的前向概率

 

看看下图,

如果穷举,3的3次方,计算27次,因为对于这个case,长度为3的隐藏状态序列的可能性为27 
而如果用前向算法,需要计算3×3 + 3×3 = 18次,因为它避免了重复计算

可以看到计算复杂度从,降到

前向算法的核心思路,就是避免重复计算,其实是一种动态规划算法

 

后向算法的思路和前向是一样的

定义后向概率,当t时刻的状态为 ,那么 的概率,就为后向概率

 

后向算法,

 

首先初始化,对于T时刻的状态,没有后续状态,所以后向概率默认设为1 
接着给出递推公式,可以反向推出前一层的后向概率,求到第一层的时候,把所有状态的后向概率求和就得到

可以看到用前向或后向算法,都可以递推的最终求得

 

学习算法

监督学习算法 
如果训练集中,有S个长度相同的观测序列和对应的隐藏状态序列 

那么直接用极大似然来拟合参数,即直接统计

 ,其中

即在i状态转移到j状态的次数除以从i状态转移的总数

 ,其中

这个方法很简单,但是问题是训练集是很难获取的 
所以实际用到的都是无监督算法

 

无监督算法,Baum-Welch算法

只有S个长度为T的观测状态序列, 

需要拟合出隐马尔可夫的参数, 

这就是含有隐变量的概率模型,

求解这种问题的典型算法是EM算法,具体算法这里不列,后面有空再细看

 

预测问题

近似算法

找出对于观测状态序列,在每个时刻t,最有可能出现的隐藏状态 , 从而得到

那么先看看如何计算,

并且有前向,后向概率定义可知

所以,只需求得,

这个算法计算简单,但不能保证预测的状态序列整体上是最有可能的状态序列

 

Viterbi 算法

其实就是用动态规划算法来求解最优路径 
预测问题是隐马尔可夫比较重要的问题和常见的问题,因为用隐马尔可夫往往就是为了同观测状态去挖掘隐藏状态 
比如上面通过房子中的植物状态去推测天气的状态 
或者自然语言处理中,去推测每个词的词性

 

动态规划算法,关键就是写出递归式,

如果我知道到t-1时刻到3个状态A,B,C的最优路径 
那么如果要找到到x节点的最优路径,很简单,从A+AX,B+BX,C+CX这3个路径中找到个最优的即可

形式化的表示,

定义,

在t时刻,到达状态i的所有路径中,最优路径的概率;最优路径即概率最大的路径

于是得到递归式,

 

t时刻每个状态的最佳路径概率值×迁移到i状态的概率×i状态得到观测值Ot+1的概率,求其最大值 
得到t+1时刻,最优路径的概率

当到T时刻,找到所有状态节点的最优路径中,概率最大的,就是全局最优路径

但此时,只知道最优路径最后的状态是i,过程中的路径需要回溯回去,

所以在求解时,需要buffer每一时刻,每一状态的最优路径的上个节点,即来自上一时刻哪个状态

和求解公式比,少了个b,是因为对于相同i,b是一样的,所以略去

最终,完整的Viterbi算法

  

本文章摘自博客园,原文发布日期:2014-09-01 

时间: 2024-10-04 16:58:06

统计学习方法笔记 -- 隐马尔可夫模型的相关文章

一文搞懂HMM(隐马尔可夫模型)

什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序,意味着具有确定和有规则的运动状态.熵的中文意思是热量被温度除的商.负熵是物质系统有序化,组织化,复杂化状态的一种度量. 熵最早来原于物理学. 德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表示任何一种能量在空间中分布的均匀程度,能量分布得越均匀,熵就越大. 一滴墨水滴在清水中,部成了一杯淡蓝色溶液 热水晾在空气中

【问】一个多用户文本编辑的数据挖掘问题,类似隐马尔科夫模型

问题描述 [问]一个多用户文本编辑的数据挖掘问题,类似隐马尔科夫模型 是一个多用户的文本编辑系统.对于一段文字的编辑,从最终的编辑结果来看,每个用户在编辑过程中的编辑位置是不确定的,有什么概率模型可以让我们大致模拟出每个新来的用户的编辑位置? 比如有一段已经编辑过的文本如下: 1166633355552222777744444(假设每个数字代表一个用户,数字的多少和位置代表用户编辑的多少和位置),然后现在有个新来的数字8用户,我们可以用怎样的模型来计算概率得出他最可能的编辑位置?

隐马尔可夫模型的Viterbi解码算法

前言 前面在做自然语言处理时涉及到一些词性标注的工作,一般会使用隐马尔科夫模型(HMM)来实现词性标注,而HMM模型的解码实现算法一般就会使用Viterbi算法. 关于穷举法 HMM模型有多种应用,这里说的是其中一个常见应用,即根据观察序列找到最可能的隐含状态序列.最朴素的想法就是直接穷举所有可能的隐含状态序列,并计算出每个组合成的状态序列的概率,概率最大的那个组合序列即是最可能的隐含状态序列.举个水藻和天气的例子,穷举出所有可能的隐含状态序列的概率,如下, P(dry,damp,soggy |

隐马尔科夫模型研究 stock 以及 lotto

说明 本文参考了这里 由于数据是连续的,因此使用了高斯隐马尔科夫模型:gaussianHMM 一.stock代码 import tushare as ts import pandas as pd import numpy as np from hmmlearn.hmm import GaussianHMM from matplotlib import cm, pyplot as plt import seaborn as sns sns.set_style('white') ''' 假定隐藏状态

小波域 隐马尔可夫 模型

问题描述 有没有人研究过小波域隐马尔可夫树模型的图像分割,这方面的理论国内外很多学者以及研究过,较为成熟,现在根据别人的论文,实现模型,可是在编程实现的时候有些问题,不知道有没有人做过这方面的研究,如果有的话,想请教一下 解决方案 解决方案二:帮顶了,研究图像的应该还是有很多人的

一篇文章教你用隐马尔科夫模型实现中文分词

  什么问题用HMM解决 现实生活中有这样一类随机现象,在已知现在情况的条件下,未来时刻的情况只与现在有关,而与遥远的过去并无直接关系. 比如天气预测,如果我们知道"晴天,多云,雨天"之间的转换概率,那么如果今天是晴天,我们就可以推断出明天是各种天气的概率,接着后天的天气可以由明天的进行计算.这类问题可以用 Markov 模型来描述. markov 进一步,如果我们并不知道今天的天气属于什么状况,我们只知道今明后三天的水藻的干燥湿润状态,因为水藻的状态和天气有关,我们想要通过水藻来推测

统计学习方法笔记 -- 概论

统计学习方法是基于训练数据构建统计模型,从而对数据进行预测和分析.  统计学习分为,监督学习(supervised learning),非监督学习,半监督学习和强化学习(reinforcement learning),其中以监督学习最为常见和重要,所以这里只讨论监督学习 统计学习的过程如下,  1. 获取训练数据集合  2. 确定假设空间,即所有可能的模型的集合  3. 确定模型选择的准则(什么是最优模型的标准),即学习的策略 4. 实现求解最优模型的算法(如何获取最优模型),即学习的算法 5.

增强学习——马尔科夫决策过程(MDP)

增强学习--马尔科夫决策过程(MDP),最近因为研究需要,要开始学习机器学习了.之前只是懂些CNN什么的皮毛,对机器学习的整体认识都比较缺乏,后面我会从头开始一点点打基础,正好也用博客把自己的学习历程记录一下,如果有大牛看到博文中有错误,欢迎指正! 增强学习(reinforcement learning,RL)是近年来机器学习和智能控制领域的主要方法之一.在增强学习中有三个概念:状态.动作和回报. "状态(state)"是描述当前情况的.对一个正在学习行走的机器人来说,状态是它的两条腿

马尔科夫转移矩阵法

一.马尔科夫转移矩阵法的涵义单个生产厂家的产品在同类商品总额中所占的比率,称为该厂产品的市场占有率.在激烈的竞争中,市场占有率随产品的质量.消费者的偏好以及企业的促销作用等因素而发生变化.企业在对产品种类与经营方向做出决策时,需要预测各种商品之间不断转移的市场占有率.市场占有率的预测可采用马尔科夫转移矩阵法,也就是运用转移概率矩阵对市场占有率进行市场趋势分析的方法.马尔科夫是俄国数学家,他在20世纪初发现:一个系统的某些因素在转移中,第n次结果只受第n-1的结果影响,只与当前所处状态有关,与其他