隐马尔可夫模型-完整
- 格式:ppt
- 大小:964.50 KB
- 文档页数:22
隐马尔可夫模型(一)——马尔可夫模型马尔可夫模型(Markov Model)描述了一类随机变量随时间而变化的随机函数。
考察一个状态序列(此时随机变量为状态值),这些状态并不是相互独立的,每个状态的值依赖于序列中此状态之前的状态。
数学描述:一个系统由N个状态S= {s1,s2,...s n},随着时间的推移,该系统从一个状态转换成另一个状态。
Q= {q1,q2,...q n}为一个状态序列,q i∈S,在t时刻的状态为q t,对该系统的描述要给出当前时刻t所处的状态s t,和之前的状态s1,s2,...s t, 则t时刻位于状态q t的概率为:P(q t=s t|q1=s1,q2=s2,...q t-1=s t-1)。
这样的模型叫马尔可夫模型。
特殊状态下,当前时刻的状态只决定于前一时刻的状态叫一阶马尔可夫模型,即P(q t=s i|q1=s1,q2=s2,...q t-1=s j) =P(q t=s i|q t-1=s j)。
状态之间的转化表示为a ij,a ij=P(q t=s j|q t-1=s i),其表示由状态i转移到状态j的概率。
其必须满足两个条件: 1.a ij≥ 0 2.=1对于有N个状态的一阶马尔科夫模型,每个状态可以转移到另一个状态(包括自己),则共有N2次状态转移,可以用状态转移矩阵表示。
例如:一段文字中名词、动词、形容词出现的情况可以用有3个状态的y一阶马尔科夫模型M 表示:状态s1:名词状态s2:动词状态s3:形容词状态转移矩阵: s1 s2 s3A=则状态序列O=“名动形名”(假定第一个词为名词)的概率为:P(O|M) = P(s1,s2,s3,s4} = P(s1)*p(s2|s1)p(s3|s2)p(s1|s3)=p(s1)*a12*a23*a31=1*0.5*0.2*0.4=0.04在马尔可夫模型中,每一个状态都是可观察的序列,是状态关于时间的随机过程,也成为可视马尔可夫模型(Visible Markov Model,VMM)。
爱情的隐式马尔可夫模型(Love in the Hidden Markov Model)首先感谢原英文作者Tom Yeh的精彩描述,生动地讲述了HMM模型的原理,在此我斗胆用我自己的语言用中文修改描述一次.感兴趣的可以点击这里下载latex生成的pdf 版本男生和女生分别是来自不同星球的科学事实已经众所周知的了.男生们总是认为,女生们都是迷一样的生物,他们的情感状态浮动似乎是以秒单位在变化的,难以理解,更勿论预测了! 而女生们觉得男生都是没有感觉动物,完全不能理解什么叫感受-尽管已经告诉他们N次了!这种男女之间的根本差别,导致了他们之间的感情关系是受一种超级无敌复杂的系统所支配的.不过,我们可以用一个叫隐式马尔可夫(Hidden Markov Model)的数学模型来分析这个系统.决定性系统首先我们来看看一种最简单的预测系统- 决定性系统.在这个系统中,如果我们知道我们目前所在的状态,那么我们也就能够毫无疑问地预测出下一个状态是什么. 比如一年四季的轮替就是一个决定性系统:每个季节的交替是完全可以预测的,如果现在是春天,那么下一个季节就一定会是夏天,冬天的前一个状态就一定是秋天等等.另外值得一提的是,冬天过后,下一个季节就又会回到春天,以此循环...另外一个常见的决定系统,就是交通灯的轮换: 红灯过后就应该是绿灯. 绿灯过后就应该是黄灯,然后又回到红灯.这种系统非常常见,人的一生大致也能看作是这种系统. 有婴儿,少年,成年,老年,然后死亡等几种状态. 不过不同的是,人的一生又不是完全遵循这种状态轮换的, 每个人都有那么丁点的可能性会跳过其中一个或者多个状态,直接到达死亡的状态...(更勿论Benjamin Buttons的情况了,呵呵).讲到这里,聪明的男生或许已经能想到,我们的世界里最为精妙,最雷人的非决定性系统就是-- 你女朋友的情感状态!对于大部分男生来说,精确地预测女朋友的下一种的情感状态基本上属于扯淡. 一个mm现在可能心情很好,可是下一秒却进入抓狂;她或许某个时刻处于悲伤,下个时刻却变得异常兴奋.在每个女生的情感状态里面,都有一种基于概率却又难以预测的本质,这种无序的本质直接导致无数男生直接蹲地画圈圈......尽管看上去女生的情感状态似乎毫无预测性可言,经过一段长时间的观察,却能发现这种现象是有规律的! 于是小明,作为一名计算机科学家, 决定要系统地去分析他女朋友的情感不确定性, 挖掘出里面的规律!于是乎,小明仔细地记录了半年来他女朋友小丽每天的喜怒哀乐变化状态, 并作了一张图表(Table1)来表示小丽的历史情感变化.小明想知道, 有了这些数据,他能否从中得出知道, 如果小丽某天的情感状态是高兴, 那么第二天她更多的是保持好心情呢,还是更多地变得悲伤了.如此等等...数据胜于雄辩, 小明从这半年的数据里面发现,当小丽高兴的时候,3/4的情况下第二天她仍然保持着好心情,只有1/4的情况小丽第二天心情会改变,比如变得气愤,悲伤等等(小明真TM走运!).小明继续分析其他各种情感状态变化情况,比如从高兴到悲伤, 悲伤到气愤, 高兴到气愤等所有的可能组合.很快小明就得到所有的组合变化数据,从中得知对于任意小丽的某天情感状态下,下一个最有可能的情感状态.为了便于教学,我们假设小明只关心小丽的四种感情状态: 高兴悲伤气愤还有忧虑高兴悲伤气愤忧虑高兴0.75 0.1 0.10.05悲伤0.05 0.5 0.250.2气愤0.15 0.2 0.40.25忧虑0.05 0.2 0.250.5 Table 1: 小丽的情绪状态变化表在这个表格中, 每个数字代表了小丽情绪从某列转变到某行的概率. 比方说, 如果小丽某天的情绪是高兴,那么她将有0.1的概率下一天她会变得悲伤或者是气愤, 有0.05的可能性转变为忧虑. 每一行代表了从某种情绪转变到各种情绪的概率,因此每行的概率之和为 1.同理,每一列代表了由各种情绪转变为该列所代表的情绪的概率,因此每列的概率总和也应该为1.我们可以画一个状态图(图1)来表示表格1, 每个圆圈代表着一种心情状态, 每两种心情变化由一个有向弧,从当前的心情状态指向下一个心情状态表示,每个弧上均带有一个状态转换的概率.Figure 1: 小丽的情绪状态变化图有了这个图表,小明就可以非常直观地看得到小丽最有可能的下个心情会是如何. 她会很有可能变得悲伤吗?(准备好鲜花巧克力),还是更有可能是气愤?(赶紧闪开!) 每天小明只需要看看哪个弧指向的心情概率最大就可以了.这个过程,同学们,就是有名的"马尔可夫过程" (Markov process)不过需要注意的是, 马尔可夫过程有一些假设的前提. 在我们的例子里面, 预测下一天小丽的心情, 我们只依赖当天小丽的心情,而没有去考虑更先前她的心情. 很明显这种假设下的模型是远不够精确的. 很多时候,随着日子一天一天的过去,女生一般会变得越来越体谅.经常女生生气了几天后,气就会慢慢消了. 比方说如果小丽已经生气了3天了,那么她第二天变得高兴起来的可能性,在多数情况下,要比她只生气了一天而第二天变得高兴的可能性要高. 马尔可夫过程并没有考虑这个, 用行话讲, 就是马尔可夫模型忽略远距离历史效应( longrange dependency).我很佩服各位能坚持读到这里, 不过,还没完呢, 我仍然没有说,隐式马尔可夫模型(Hidden Markov Model)是什么呢! 诸位如果已经有点头昏脑涨,请就此打住,以免大脑过热死机!隐式马尔可夫模型- Hidden Markov Model, or HMM for short.有些时候,我们无法直接观测一个事物的状态. 比方说, 有些女生是很能隐瞒自己的情感而不流露出来的! 他们可能天天面带微笑但不代表他们就天天高兴.因此我们必须要有窍门, 去依赖某些我们能够直接观察到的东西.话说回来我们的主人公小明, 自从被小丽发现他这种近乎变态的科学分析行为后,变得非常善于隐藏自己的心情,导致某天小明错误估计了小丽的心情!在误以为那天小丽会心情好的情况下,小明告诉小丽自己不小心摔坏了她心爱的iPod...,小明没想到其实那天小丽正因为前一天错过了商场名牌打折扣的活动而异常气愤... 一场血雨腥风过后,两个人最终分手了.不过很快小明凭着自身的英俊高大潇洒,很快又交上了另外一个女朋友- 小玲. 鉴于小明意识到,女生表面的情感流露非常不可靠, 小明决定要另寻他径, 继续预测女朋友的心情! (作为一个科学家,小明的确有着不怕碰壁的精神!)小明每个月都帮小玲付信用卡的费用(真不明白,有这样的男朋友,小玲有什么理由不高兴啊!), 因此小明每天都可以通过Online banking知道小玲每天都买了什么东西. 小明突然灵机一动: "没准我能通过观测她的购物规律,推导预测出小玲的心情!".听起来有点匪夷所思,不过这个过程,的的确确是可以使用叫作隐式马尔可夫的数学模型来表示并分析的.由于我们需要预测的变量- 心情状态是无法直接观测的,是隐藏(Hidden)起来的.因此这种模型才叫隐式马尔可夫模型.在一次和小玲的好朋友们一起吃饭的时候, 小明得知了以下重要的信息:"小玲高兴的时候经常去买一大堆新衣服", "那天小玲一个人去超市买了一堆吃的,一定是有什么心事了(忧虑)", "你千万不要惹小玲生气阿,不然她会刷爆你的信用卡的!", "小玲好几次伤心难过的时候,一整天都宅在家里看杂志.". 知道了这些信息,小明扩展了他原先一直采用的马尔可夫模型, 为每种隐藏的状态(心情)赋予了新的可观测状态(Observables),这些可观测状态为:1.大部分(>50%)花费是Fashion商场(O1)2.大部分(>50%)花费在超市(O2)3.Oh my God! 一天刷了5000元以上!!! (O3)4.Oh yeah! 这一天她都没花钱(O4)为图简便,我们假设小玲和小明的ex小丽,有着同样的实际心情转换概率(图1).小明通过归类统计小玲过往的信用卡帐单(天啊,怎么这么多!),发现了如表2所示的每天心情与每天信用卡消费之间的关系:Table 2: 小玲的每天情绪状态与当天信用卡花费的关系概率表我要加一句的是, 由于概率的归一性(各种可能性之和为1), 我们为了不降低本文的娱乐搞笑性, 规定如果某天小玲大部分的花费是Fashion或者是在超市,那么她的花费不可能超过5000, 这样我们才有各行的O1+O2+O3+O4 =1.也就是说,当小玲高兴的时候, 小明发现80%的情况下那些天小玲基本都买性感小衣衣了(:Q), 也有那么10%的情况下大部分买吃的了, 令小明郁闷的是,居然小玲高兴了,还有那么5%的情况,刷了他5000+ ;最后剩下5%的情况小玲可能因为太高兴而顾不上消费了(小明暗笑:"对对,就是那次,她心情特好, we BEEP all day, it was the best we ever had!" )自此, 小玲心情的隐式马尔可夫模型就出来了(图2).Figure2: 小玲的隐式马尔可夫模型有了这个模型,我们就可以回答这个问题:"如果我知道了小玲的信用卡花费规律,我能否找出她最有可能的心情变化序列是什么?"具体一点吧, 某次小玲到外地出差了一个星期, 小明每天打电话给她问她今天开心嘛? 小玲都说"开心"...但实际呢?小明自言自语说, 哼你不告诉我, 我就只好算算了! 小明Login到了小玲信用卡网站,打开statement,统计了一下,发现小玲这一个星期的消费规律是:"O2 O1 O4 O2 O3 O1 O4" (对应着消费序列穿的, 吃的, 没刷, 吃的, 刷爆, 穿的, 没刷)有了这个消费序列和图2的模型, 有办法找出小玲这7天最有可能的心情序列是什么吗?信不信由你, Viterbi search algorithm (维特比搜索算法)就是用来计算出HMM模型中给定观测序列O(消费规律), 对应的最有可能的隐藏状态序列(心情变化). 关于Viterbi的原理和实现已经超出本文的讲解范围了,有兴趣的同学可以去Wiki或者动手Google一下. 简单来说Viterbi属于动态规划(Dynamic programming) 算法的一种,用来比较高效地计算出一个转移矩阵及其观测矩阵(分别对应我们的Table1 和Table2)制约下的最大可能的隐藏状态转移序列-如果我们事先知道观测序列的话.根据以上的转移矩阵(table 1})和观测矩阵(table 2), 建立起HMM模型并采用Viterbi算法(HMM还需要添加一个状态起始概率来表示每种状态作为起始状态的可能性,由于小明没有办法知>道这个数字,因此只能作最简单的假设- 假设他们都是均匀分布的(uniformly distributed),所以每种状态的起始>概率均为1/4).可以知道,对应以上观察序列,小玲那七天最为可能的情绪序列为:忧虑悲伤悲伤忧虑气愤高兴悲伤概率为p=1.4x10^-5看来小玲这次出差压力不小啊!呜呼! 至此整个Hidden Markov Model就介绍完了.当然,中间仍然有很多细节我是直接忽略了. 而且在现实使用当中,HMM模型中的规模要大得多,无论是隐藏的状态数目,还是可观测的状态数目,都超过千计. HMM 及其相关算法被大量广泛使用在各行各业.在计算机信息学中, 大量语音识别, 中文分词,中文拼音汉字转换系统采用的都是隐式马尔可夫模型.。
机器学习之隐马尔科夫模型(HMM)机器学习之隐马尔科夫模型(HMM)1、隐马尔科夫模型介绍2、隐马尔科夫数学原理3、Python代码实现隐马尔科夫模型4、总结隐马尔可夫模型介绍马尔科夫模型(hidden Markov model,HMM)是关于时序的概率模型,描述由一个隐藏的马尔科夫随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程,属于一个生成模型。
下面我们来从概率学角度定义马尔科夫模型,从一个典型例子开始:假设有4个盒子,每个盒子里面有不同数量的红、白两种颜色的球,具体如下表:盒子编号1234红球数5368白球数5742现在从这些盒子中取出T个球,取样规则为每次选择一个盒子取出一个球,记录其颜色,放回。
在这个过程中,我们只能观测到球的颜色的序列,观测不到球是从哪个盒子中取出来的,即观测不到盒子的序列,这里有两个随机序列,一个是盒子的序列(状态序列),一个是球的颜色的观测序列(观测序列),前者是隐藏的,只有后者是可观测的。
这里就构成了一个马尔科夫的例子。
定义是所有的可能的状态集合,V是所有的可能的观测的集合:其中,N是可能的状态数,M是可能的观测数,例如上例中N=4,M=2。
是长度为T的状态序列,是对应的观测序列:A是状态转移概率矩阵:其中, 是指在时刻处于状态的条件下在时刻转移到状态的概率。
B是观测概率矩阵:其中, 是指在时刻处于状态的条件下生成观测的概率。
是初始状态概率向量:其中, 是指在时刻=1处于状态的概率。
由此可得到,隐马尔可夫模型的三元符号表示,即称为隐马尔可夫模型的三要素。
由定义可知隐马尔可夫模型做了两个基本假设:(1)齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻的状态只和-1状态有关;(2)观测独立性假设,观测只和当前时刻状态有关;仍以上面的盒子取球为例,假设我们定义盒子和球模型:状态集合: = {盒子1,盒子2,盒子3,盒子4}, N=4观测集合: = {红球,白球} M=2初始化概率分布:状态转移矩阵:观测矩阵:(1)转移概率的估计:假设样本中时刻t处于状态i,时刻t+1转移到状态j 的频数为那么转台转移概率的估计是:(2)观测概率的估计:设样本中状态为j并观测为k的频数是那么状态j观测为k的概率, (3)初始状态概率的估计为S个样本中初始状态为的频率。
马尔科夫过程马尔科夫过程可以看做是一个自动机,以一定的概率在各个状态之间跳转。
考虑一个系统,在每个时刻都可能处于N个状态中的一个,N个状态集合是{S1,S2,S3,...S N}。
我们如今用q1,q2,q3,…q n来表示系统在t=1,2,3,…n时刻下的状态。
在t=1时,系统所在的状态q取决于一个初始概率分布PI,PI(S N)表示t=1时系统状态为S N的概率。
马尔科夫模型有两个假设:1. 系统在时刻t的状态只与时刻t-1处的状态相关;〔也称为无后效性〕2. 状态转移概率与时间无关;〔也称为齐次性或时齐性〕第一条详细可以用如下公式表示:P(q t=S j|q t-1=S i,q t-2=S k,…)= P(q t=S j|q t-1=S i)其中,t为大于1的任意数值,S k为任意状态第二个假设那么可以用如下公式表示:P(q t=S j|q t-1=S i)= P(q k=S j|q k-1=S i)其中,k为任意时刻。
下列图是一个马尔科夫过程的样例图:可以把状态转移概率用矩阵A表示,矩阵的行列长度均为状态数目,a ij表示P(S i|S i-1)。
隐马尔科夫过程与马尔科夫相比,隐马尔科夫模型那么是双重随机过程,不仅状态转移之间是个随机事件,状态和输出之间也是一个随机过程,如下列图所示:此图是从别处找来的,可能符号与我之前描绘马尔科夫时不同,相信大家也能理解。
该图分为上下两行,上面那行就是一个马尔科夫转移过程,下面这一行那么是输出,即我们可以观察到的值,如今,我们将上面那行的马尔科夫转移过程中的状态称为隐藏状态,下面的观察到的值称为观察状态,观察状态的集合表示为O={O1,O2,O3,…O M}。
相应的,隐马尔科夫也比马尔科夫多了一个假设,即输出仅与当前状态有关,可以用如下公式表示:P(O1,O2,…,O t|S1,S2,…,S t)=P(O1|S1)*P(O2|S2)*...*P(O t|S t) 其中,O1,O2,…,O t为从时刻1到时刻t的观测状态序列,S1,S2,…,S t那么为隐藏状态序列。