隐含马尔科夫模型的训练

在这里我们仍然使用非常简单的天气模型来做说明。

在这个马尔可夫模型中,存在三个状态,Sunny, Rainy, Cloudy,同时图片上标的是各个状态间的转移概率(如果不明白什么是转移概率,那建议先去学习什么是马尔可夫再来看HMM)。

现在我们要说明什么是 HMM。既是隐形,说明这些状态是观测不到的,相应的,我们可以通过其他方式来『猜测』或是『推断』这些状态,这也是 HMM 需要解决的问题之一。

举个例子,我女朋友现在在北京工作,而我还在法国读书。每天下班之后,她会根据天气情况有相应的活动:或是去商场购物,或是去公园散步,或是回家收拾房间。我们有时候会通电话,她会告诉我她这几天做了什么,而闲着没事的我呢,则要通过她的行为猜测这几天对应的天气最有可能是什么样子的。

以上就是一个简单的 HMM,天气状况属于状态序列,而她的行为则属于观测序列。天气状况的转换是一个马尔可夫序列。而根据天气的不同,有相对应的概率产生不同的行为。在这里,为了简化,把天气情况简单归结为晴天和雨天两种情况。雨天,她选择去散步,购物,收拾的概率分别是0.1,0.4,0.5, 而如果是晴天,她选择去散步,购物,收拾的概率分别是0.6,0.3,0.1。而天气的转换情况如下:这一天下雨,则下一天依然下雨的概率是0.7,而转换成晴天的概率是0.3;这一天是晴天,则下一天依然是晴天的概率是0.6,而转换成雨天的概率是0.4. 同时还存在一个初始概率,也就是第一天下雨的概率是0.6, 晴天的概率是0.4.

根据以上的信息,我们得到了 HMM的一些基本要素:初始概率分布 π,状态转移矩阵 A,观测量的概率分布 B,同时有两个状态,三种可能的观测值。

现在,重点是要了解并解决HMM 的三个问题。

问题1,已知整个模型,我女朋友告诉我,连续三天,她下班后做的事情分别是:散步,购物,收拾。那么,根据模型,计算产生这些行为的概率是多少。

问题2,同样知晓这个模型,同样是这三件事,我女朋友要我猜,这三天她下班后北京的天气是怎么样的。这三天怎么样的天气才最有可能让她做这样的事情。

问题3,最复杂的,我女朋友只告诉我这三天她分别做了这三件事,而其他什么信息我都没有。她要我建立一个模型,晴雨转换概率,第一天天气情况的概率分布,根据天气情况她选择做某事的概率分布。(惨绝人寰)

而要解决这些问题,伟大的大师们分别找出了对应的算法。问题一,Forward Algorithm,向前算法,或者 Backward Algo,向后算法。 问题二,Viterbi Algo,维特比算法。问题三,Baum-Welch Algo,鲍姆-韦尔奇算法(中文好绕口)。

尽管例子有些荒谬(天气情况要复杂的多,而且不太可能满足马尔可夫性质;同时,女朋友要做什么往往由心情决定而不由天气决定。而从问题一来看,一定是天数越多,这个概率就会越低;从问题三来看,观察到的行为越多,模型才能更准确一些),但是应该已经简单却又详尽地解释了什么是 HMM。如果只是想了解个大概,到此为止。

问题1的解决1:遍历算法。

要计算产生这一系列行为的概率,那我们把每一种天气情况下产生这些行为都罗列出来,那每种情况的和就是这个概率。有三天,每天有两种可能的天气情况,则总共有 2的三次=8种 情况.
举例其中一种情况 : P(下雨,下雨,下雨,散步,购物,收拾)=P(第一天下雨)P(第一天下雨去散步)P(第二天接着下雨)P(下雨去购物)P(第三天还下雨)P(下雨回家收拾)=0.6X0.1X0.7X0.4X0.7X0.5=0.00588
当然,这里面的 P(第二天接着下雨)当然是已知第一天下雨的情况下,第二天下雨的概率,为0.7.
将八种情况相加可得,三天的行为为{散步,购物,收拾}的可能性为0.033612. 看似简单易计算,但是一旦观察序列变长,计算量就会非常庞大(的复杂度,T 为观测序列的长度)。

问题1 的解决2:向前算法。

先计算 t=1时刻,发生『散步』一行为的概率,如果下雨,则为 P(散步,下雨)=P(第一天下雨)X P(散步 | 下雨)=0.6X0.1=0.06;晴天,P(散步,晴天)=0.4X0.6=0.24

t=2 时刻,发生『购物』的概率,当然,这个概率可以从 t=1 时刻计算而来。

如果t=2下雨,则 P(第一天散步,第二天购物, 第二天下雨)= 【P(第一天散步,第一天下雨)X P(第二天下雨 | 第一天下雨)+P(第一天散步,第一天晴天)X P(第二天下雨 | 第一天晴天)】X P(第二天购物 | 第二天下雨)=【0.06X0.7+0.24X0.3】X0.4=0.0552

如果 t=2晴天,则 P(第一天散步,第二天购物,第二天晴天)=0.0486 (同理可得,请自行推理)

如果 t=3,下雨,则 P(第一天散步,第二天购物,第三天收拾,第三天下雨)=【P(第一天散步,第二天购物,第二天下雨)X P(第三天下雨 | 第二天下雨)+ P(第一天散步,第二天购物,第二天天晴)X P(第三天下雨 | 第二天天晴)】X P(第三天收拾 | 第三天下雨)=【0.0552X0.7+0.0486X0.4】X0.5= 0.02904

如果t=3,晴天,则 P(第一天散步,第二天购物,第三天收拾,第三天晴天)= 0.004572

那么 P(第一天散步,第二天购物,第三天收拾),这一概率则是第三天,下雨和晴天两种情况的概率和。0.02904+0.004572=0.033612.

以上例子可以看出,向前算法计算了每个时间点时,每个状态的发生观测序列的概率,看似繁杂,但在 T 变大时,复杂度会大大降低。

问题1的解决3:向后算法

顾名思义,向前算法是在时间 t=1的时候,一步一步往前计算。而相反的,向后算法则是倒退着,从最后一个状态开始,慢慢往后推。

初始化: (第一次使用知乎的公式编辑,还蛮靠谱的嘛)

递推:
=0,.7x0.5x1+0.3x0.1x1=0.38
其中第一项则是转移概率,第二天下雨转到第三天下雨的概率为0.7;第二项则是观测概率,第三天下雨的状况下,在家收拾的概率为0.5;第三项就是我们定义的向后变量(backward variable)。
同理推得\beta_1(Rainy)=0.1298\\
\beta_1(Sunny)=0.1076" eeimg="1">

结束:P(散步,购物,收拾) ==0.6×0.1×0.1298+0.4×0.6×0.1076

=0.033612

三种算法的答案是一致的。

问题2的解决:维特比算法

维特比算法致力于寻找一条最佳路径,以便能最好地解释观测到的序列。

初始化:\delta_1(Sunny)=\pi_S\times b_S(O_1=Walk)=0.24" eeimg="1">

初始路径:\phi_1(Sunny)=0" eeimg="1">

递推,当然是要找出概率比较大的那条路径。

那么,到达第二天下雨这一状态的最佳路径,应该是:

也就是说,第一天是晴天的可能性更大。

同样地,可以推得,\phi_2(Sunny)=Sunny\\
\delta_3(Rainy)=0.01344\\
\phi_3(Rainy)=Rainy\\
\delta_3(Sunny)=0.002592\\
\phi_3(Sunny)=Sunny
" eeimg="1">

结束:比较 的大小,发现前者较大,则最后一天的状态最有可能是 下雨天。

回推:根据 可知,到达第三天下雨这一状态,最有可能是第二天也下雨,再根据可知,到达第二天下雨这一状态,最有可能是第一天是晴天。

由此,我们得到了最佳路径,即,晴天,雨天,雨天。

作者:henry
链接:https://www.zhihu.com/question/20962240/answer/64187492
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/zzdbullet/p/10049805.html

时间: 2024-11-18 05:50:12

隐含马尔科夫模型的训练的相关文章

马尔科夫及隐含马尔科夫模型

转自: http://zipperary.com/2013/10/15/an-introduction-to-hmm/ http://www.52nlp.cn/hmm%E7%9B%B8%E5%85%B3%E6%96%87%E7%AB%A0%E7%B4%A2%E5%BC%95 总结(Summary) 由一个向量和两个矩阵(pi,A,B) ( 隐藏状态初始概率分布.隐藏状态转移概率矩阵.隐藏-观察状态混淆矩阵 ) 描述的隐马尔科夫模型对于实际系统有着巨大的价值,虽然经常只是一种近似,但它们却是经得起

隐马尔可夫模型和隐含马尔可夫模型的训练

概率论的发展从(相对静态的)随机变量到相对动态的随机过程应该是个很大的飞跃吧! 所谓随机过程,就是随着时间的变化状态转移的过程. 也就是说每一个时刻都对应着一个状态.(这个时刻的)状态到(下一个时刻的)状态的改变的过程,就是(随机)过程. 所谓随机是指,某一个时刻的状态是不能够确切的知道的(动态的,随机的)所以说是随机的. 马尔可夫链(马尔可夫)就是根据随机过程提出的一种假设 那么他是怎么假设的呢? 该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未

隐含马尔科夫模型

雅格布森通信六要素:发送者,信道,接受者,信息,上下文和编码. 马尔科夫假设:随机过程中各个状态的概率分布只与它的前一个状态有关.满足这个假设即为马尔科夫过程(马尔科夫链). 隐马尔可夫模型:任意时刻t的状态s是不可见的,但是其输出o是可见的,且o有且仅和s相关(独立输出假设). 训练算法:鲍姆-韦尔奇算法:解码算法:维特比算法. 原文地址:https://www.cnblogs.com/auhz/p/9614020.html

《概率统计》14.状态解码:隐马尔科夫模型隐含状态揭秘

隐含状态解码问题的描述 上一篇我们讲完了概率估计问题,这里我们再来讲一下隐马尔科夫模型的状态解码问题. 解码 Decoding,就是给定一个已知的观测序列,求它最有可能对应的状态序列.那么用形式化的语言来说,就是已知模型λ = (A, B, π)和观测序列\(O = (o_{1},o_{2},...,o_{T})\),求使得条件概率P(I|O)最大的隐状态序列I = (\(i_{1},i_{2},...,i_{T}\)) 我们一步一步地来,先不考虑输出观测,仅仅只考虑隐状态的转移,来体会一下思路

隐马尔科夫模型python实现简单拼音输入法

在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此训练得出隐马尔科夫模型,用维特比算法实现了一个简单的拼音输入法.githuh地址:https://github.com/LiuRoy/Pinyin_Demo 原理简介 隐马尔科夫模型 抄一段网上的定义: 隐马尔可夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含

HMM隐马尔科夫模型

马尔科夫过程 在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名.马尔可夫过程是不具备记忆特质的(memorylessness).换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立.不相关的. 一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程.这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态.最简单的马尔科夫过程是一阶模型,它的状态

隐含马尔可夫模型在语言处理中的应用

终于下定决心要了解一下马尔科夫链了.当然经典的那个tutorial必是参考文献,另外找了一个浙大教授写的PPT,很不错,用中文讲tutorial的东西理出来了.下面这篇文章写的也不错. http://googlechinablog.com/2006/04/blog-post_17.html转自上述地址的一篇文章数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用2006年4月17日 上午 08:01:00 发表者:吴军,Google 研究员 前言:隐含马尔可夫模型是一个数学模型,到目前为之

隐马尔科夫模型学习笔记

隐马尔科夫模型在股票量化交易中有应用,最早我们找比特币交易模型了解到了这个概念,今天又看了一下<统计学习方法>里的隐马尔科夫模型一章. 隐马尔科夫模型从马尔科夫链的概念而来,马尔科夫链是指下一个状态只和当前的n个状态有关,和历史状态无关的一个时间上的事件链,隐马尔科夫模型在这个状态链的基础上,让每一个状态都能产生观测值,从而可以产生一个可观测的数据链,让原来的状态链变成了幕后产生数据的状态链,称为因马尔科夫链. 隐马尔科夫链应用比较广泛,主要能够处理三类问题:. 一个是给定了马尔科夫模型参数和

隐马尔科夫模型(HMM)分词研究

第一部分 模型简介 隐马尔可夫模型是马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生.所以,隐马尔可夫模型是一个双重随机过程 ----具有一定状态数的隐马尔可夫链和显示随机函数集.自20 世纪80年代以来,HMM被应用于语音识别,取得重大成功.到了90年代,HMM还被引入计算机文字识别和移动通信核心技术"多用户的检测".HMM在生物信息科学.故障诊断等领域也