隐马尔科夫模型(1)基本概念和概率计算

隐马尔科夫模型 HMM


本文我们介绍一个机器学习中常用的模型————隐马尔科夫模型(Hidden Markov Model,HMM),后文我们简称为HMM。HMM是一种概率图模型,常用于对有序数据进行处理。下面我们通过一个简单的例子来理解下什么是HMM。

引子

假设你的邻居家有个正在上小学的儿子,我们称之为小明吧,小明每天都在早上背上小书包去上学,然后到晚上的时候回家。假设我们现在对小明在学校里的表现很感兴趣,认为小明在学校里的状态有三种,分别是被老师批评了,被老师表扬了,和既没被表扬也没被批评,我们分别记为q_{0},q_{1},q_{2}

小明在学校到底过得怎么样呢

那么怎么能确定他在学校的状态呢?最好的办法就是去小明的学校盯着他。但是谁吃饱了撑的有那个时间去盯他呢?于是我们左思右想,想到一个好主意,小明如果被表扬,他应该心情不错吧,如果被批评了,他不开心的概率可能更大一点。所以我们可以在他放学回家时的心情来估计下他今天的表现。但是凡事也有例外,比如他今天虽然被批评了,但是喜欢的小红成为了他的邻桌,那么他可能会忘掉老师带来的不愉快,而因为小红开心的不得了。所以啊,我们只能说被表扬的情况下,他开心的可能性比较大,但也不会是1,而同样,被批评的时候,不开心概率比较大,但也不会是1,而我们要是看到他今天平平淡淡地回家,那么他比较有可能是既没被批评也没被表扬。这里我们记我们观测到他的心情好、坏、一般分别为v_{0},v_{1},v_{2}。那么假设我们观察了一星期,观测到他的心情序列为v_{0}v_{0}v_{1}v_{1}v_{2}v_{0}v_{1},请问小明同学这一星期在学习的状态序列应该是什么呢?

是不是感觉无从下手?是不是感觉这种又有看得见的变量(观测值),又有看不见的变量(状态),还有变量序列的问题很变态很棘手?没关系,在马尔科夫大神和各位数据分析前辈的努力下,我们已经有了解决这种问题的数学工具啦!这就是我们今天要讲的隐马尔科夫模型。

首先让我们先一睹下马老爷子的真容

隐马尔科夫模型的基本定义

在《统计学习方法》一书中,隐马尔科夫模型用于描述这样一个过程:

隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。

隐藏的马尔科夫链随机生成的不可观测的状态随机序列,就称为是状态序列,而由状态序列生成的观测随机序列为观测序列。读到这里,读者可能已经意识到了,如果要利用隐马尔可夫模型,模型的状态集合和观测集合应该事先给出。隐马尔科夫模型的形式定义如下

  • 状态集合Q=\{q_{0},q_{1},q_{2}......q_{N-1}\}N为状态数量。在上面的例子中,Q=\{q_{0},q_{1},q_{2}\}
  • 可能的观测集合V=\{ v_{0},v_{1},v_{2},......v_{M-1} \}M为可能的观测数量。在上面的例子中,V=\{v_{0},v_{1},v_{2}\}
  • 长度为T的状态序列S=[s_{0},s_{1},s_{2},......s_{T-1}],对应得观测序列为O=[o_{0},o_{1},o_{2},......o_{T-1}]。在上面的例子中,O=[v_{0},v_{0},v_{1},v_{1},v_{2},v_{0},v_{1}]
  • 状态转移矩阵A=[a_{ij}]_{N\times N},其中a_{ij}表示状态q_{i}转变为状态q_{j}的概率a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i})。在上面的例子中,就是前一天小明的状态对第二天小明的状态的影响,或者说前一天老师对小明的态度,对后一天老师对小明的态度的影响。
  • 观测概率矩阵B=[b_{j}(k)]_{N\times M}b_{j}(k)=P(v_{k}|q_{j}),表示状态q_{j}产生v_{k}观测的概率。在上面的例子中,就是已知小明j天的状态,小明当天的某种表现情绪的概率。
  • 初始状态概率分布\pi=[\pi_{0},\pi_{1}......\pi_{N-1}],其中\pi_{i}=P(i_{1}=q_{i})。在上面的例子中,我们第一天观察的时候,他的每个状态的可能性。

由定义可知,在给定状态集合Q和可能的观测集合V后,一个HMM模型可以由状态转移矩阵A、观测概率矩阵B以及初始状态概率分布\pi确定,因此一个HMM模型可以表示为\lambda(A,B,\pi)

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

利用隐马尔可夫模型时,通常涉及三个问题,分别是:

  • 概率计算:已知HMM的所有参数,给定长度为T的观测序列O=[o_{0},o_{1},o_{2},......o_{T-1}],求解P(O)
  • 状态解码:已知HMM的所有参数,给定长度为T的观测序列O=[o_{0},o_{1},o_{2},......o_{T-1}],求解O出现的条件下,概率最大的状态序列argmax_{I} P(I|O)
  • 参数学习:HMM参数未知,通过观测序列O学习HMM的参数,argmax_{\lambda}P(\lambda|O)

本小节首先对概率计算问题进行阐述。

概率计算

计算P(O),一个很自然的想法是计算\Sigma_{I\in I^{*}}P(O,I)。其中I^{*}为从1时刻到T时刻所有可能的状态序列,应该有N^{T}个不同的状态序列,计算的复杂度过高,很难利用该方法。
现有的方法是使用一种动态规划的方案,称之为前向算法。首先定义前向概率的概念:

给定HMM模型\lambda,时刻t时已有观测序列为o_{0},o_{1}......o_{t-1},且t时刻状态为q_{i}的概率前向概率\alpha_{t}(i)=P(o_{0},o_{1}......o_{t},s_{t}=q_{i}), 0\leq t \leq T-1

需要注意的是,当引入一个特定的前向概率时,需要说明具体的观测序列、时刻t,以及时刻t时的状态。

可以看出,前向概率\alpha_{t}(i)涵盖了从0时刻到t-1时刻为止,N^{t-1}条状态路径的所有可能性。这使得我们在计算t+1时的情况时,不必再考虑从时刻1到时刻t这段时间内的状态路径,只用考虑时间t到时间t+1间的状态路径即可。这无疑大大减少了工作量。具体的算法如下:

1.时刻1的初值:
计算\alpha_{0}(i)=\pi_{i}b_{i}(o_{1})
2.递推出时刻2,3...T时刻的前向概率:
\alpha_{t}(i)=[\Sigma_{0\leq j\leq N-1}\alpha_{t-1}(j)a_{ji}]b_{i}(o_{t})
3.求得P(O):
P(O)=\Sigma_{0\leq i\leq N-1}\alpha_{T-1}(i)

下面是一个动态演示图,图中的例子有4中状态。


前向算法动态演示图,图中的向前概率一词有误,应为前向概率

除了前向算法外,还有一种后向算法,同样是利用了动态规划的方案,这里我们同样首先定义后向概率的概念:

给定HMM模型\lambda,定义t时刻状态为q_{i}的条件下,t+1至T时刻观测序列为o_{t},o_{t+1}......o_{T-1},后向概率\beta_{t}(i)=P(o_{t},o_{t+1}......o_{T-1}|s_{t-1}=q_{i})

可以看出,前向算法是从前向后推演整个状态路径,而后向算法是从后往前推演整个状态路径。但本质原理是一样的,后向算法的具体如下:

1.时刻T的初值:
计算\beta_{T-1}(i)=1。这里是直接定义为1,从上面的后向概率概念可以看出没有对\beta_{T-1}(i)的定义。因为不存在T+1时刻。
2.递推出当t=T-2,T-3...0时刻的后向概率:
\beta_{t}(i)=\Sigma_{0\leq j\leq N-1}\beta_{t+1}(j)a_{ij}b_{j}(o_{t+1})
3.求得P(O):
P(O)=\Sigma_{0\leq j\leq N-1}\beta_{1}(i)\pi_{i}b_i (o_0)
大家可以思考一下,为什么前向概率是联合概率模式,而后向概率是条件概率模式呢?这是因为前向概率开始于一个已知量\pi,因为在描述路径的时候有一个已知的开头,可以用联合概率。而后向概率开始于未知量,在向前推演的时候,没有一个已知的开头,因此需要假设一个开头,因此得使用条件概率。

我在学习HMM的时候,一开始不是很理解后向算法,首先是直观上没有前向算法那么好理解,其次公式推导上也有点费脑。后来我推导出了后向算法,它的思路也在脑海中渐渐清晰。如果后期有时间,我会把后向算法推导更新上。
后期还会继续更新HMM的内容,包括状态解码和参数学习,欢迎一起探讨。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容