PGM(Probabilistic Graphical Models)系列--4. HMM

前言-- 废话

在这么多篇的基础后,终于可以开始我一开始想学习的东西这里,也就是HMM,Hidden Markov Models,基于前三篇的内容,可以理解和学习这一篇的内容。
PGM(Probabilistic Graphical Models)系列--1.基础
PGM(Probabilistic Graphical Models)系列--2. 贝叶斯网络
PGM(Probabilistic Graphical Models)系列--3. 马尔科夫模型

过渡到HMM

在学习过程中,其实我是十分的confused的,因为传统的HMM和MRF不太一样,跟贝叶斯网络也不太一样,很难说是其中任何一个的直接衍生物。更像是二者的结合物?

例如

一个常规的HMM

一个常规的HMM即说的是,隐含层的y会产生变化,我们观测到的x随着y的变化而变化,但我们只能看到表现层x的变化。这里我们直观上看,这是一个贝叶斯网络。

但实际上,又是一个MRF,为什么呢?
重点在于,y的变化是指发生在y的几种可能性之间。

若引用wiki 的一张图来阐释。

HMM的局部状态

每一次的Y以及导致的X之间的关系,应该由上图来进行阐释。
如:
Y1 = Healthy -->X1 = Cold
这样到了第二天,可能Y1继续产生了变化,当然也有可能没有变化。(这其中都带有一个所谓的概率转移矩阵(类似于CPDs))。
其中由于概率转移矩阵的双向能力,所以也类似于CRF的感觉。

用下面一个图来展示各种图模型的关系。


感谢知乎上的这个问题

那么我们还是把它当做一个独立的模型先去理解。

HMM

定义:每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态。
(也就是上上图所表示的,y的概率只与其前后的有关。)

概率转移矩阵(Transition Probability Matrix):由于一个特征有多个状态,即假设Y有N个状态,则概率转移矩阵就为一个N^2的矩阵。(主要说的是隐含层)
混淆矩阵 (confusion matrix):由隐含层的特征多个状态与观察层的特征多个状态的关联,由于观察到的是有限的,所以隐含层的单个状态对应的观察层多个状态的概率之和为1。

这样一个马尔科夫过程就建立起来,即一个具有时间序列的贝叶斯网络。

三个重要假设

解释一下:
第一个即只与前后的相关,所以其它都条件独立,可以约去
第二个即前后的转移概率不以时间改变而改变
第三个即观察层的概率只与隐含层的相关

那么由上面的这些总结可知。由于HMM的假设十分的简单,那么我们其实可以用一个五元的参数来表达一个特定的HMM。
{N, M, π,A,B}

N为隐含的状态数
M为观察的状态数
π为初始的状态概率
A为转移矩阵
B诶混淆矩阵
λ 可以代表π,A,B的集合

用HMM解决的三大类问题

若已经有λ和M,N,若在所有可能的隐藏状态序列下,给定的可观察状态序列的概率(前向算法)

直观的去思考,大概分为以下求解步骤。

  1. 假设给定一个隐藏序列,通过混淆矩阵,求出概率。

  2. 通过只与前后相关的马尔科夫假设,求出隐含状态层的概率

对所有的隐含层求解以上两步,并累加,可得出给定的一个观察序列的概率

当然,算法上怎么解决当序列长时穷举产生的巨大的复杂度的问题,请看后面算法部分。

根据可观察状态的序列找到一个最可能的隐藏状态序列

在已知一个HMM下,这也是一个比较符合现实情况的问题,我们记录下了观察到的序列,求解可能性最大的隐藏状态的序列。

同样的,
如果用穷举的方法,同样可以算出以上的最大值,穷举所有隐藏序列,计算隐藏序列的转移概率,计算隐藏序列到观察序列的概率。

根据观察到的序列集来找到一个最有可能的 HMM。

除去上述的情况外,现实情况中更加有可能的是不知道HMM的各个参数,只能先进行ML中的学习。由于给定的可观察状态序列 O 来说,没有任何一种方法可以精确地找到一组最优的 HMM 参数 λ 使 P(O | λ) 最大。所以人们使用前向后向算法(也称为Baum-Welch算法)近似的求解HMM。

HMM中求解问题使用到的算法

前向算法(Forward -Backward Algorithm)

由于上面说到的大多数的计算方法都是穷举去计算所有的时间序列下的所有情况,这样就会随着时间序列的增加而指数级的增长算法的复杂度。这显然对计算机是一个十分大的负担,为了加快速度和减少计算机资源的使用。

我们利用概率不随时间的变化而变化的特性来降低开销

前向算法是为了解决在所有可能的隐藏序列下,给定的可观察状态序列的概率。

那么用 αt(j) 来表示在 t 时刻是隐含状态 j 的概率,αt(j)=Pr(观察状态 | 隐含状态 j ) x Pr(t 时刻到达隐含状态 j 的所有路径)。

对于这么个隐含层,观察序列为最下面的dry,damp,soggy。这个可以作为t=2时的概率。由于各个时间点均为各自独立,所以我们可以递归的沿着时间链去独立计算每一个时间点下各个状态的概率。

  1. t=1时,即初始概率表π乘以观测序列第一个状态到各自隐含状态的混淆矩阵中的值
  2. t>1时,即t-1的时间点的各个状态的值即包含了 Pr(t 时刻到达隐含状态 j 的所有路径),所以我们只需要计算Pr(观察状态 | 隐含状态 j )。大大的节省了时间。



    算到了最后一个时间点时,所有状态的概率之和即结果。

维特比(Viterbi) 算法

这个算法比较广泛的使用在自然语言处理中的词性标注。句子中的单词是可以观察到的,词性是隐藏的状态。通过根据语句的上下文找到一句话中的单词序列的最有可能的隐藏状态序列,我们就可以得到一个单词的词性(可能性最大)

这个算法本身与前向算法是十分类似的,也是利用了概率不随时间变化而变化,通过逐步递归的方法减少计算量。其中最大的不同就是在t时刻最可能到达某个状态的一条路径的概率,而不是所有概率之和

用 δ(i, t) 来表示在t时刻,到隐含状态i的所有可能的序列(路径)中概率最大的序列的概率。

  1. t = 1时,由于不存在t = 0的前置状态,所以直接用即初始概率表π乘以观测序列第一个状态到各自隐含状态的混淆矩阵中的值。
  2. t > 1时,我们就要使用t-1时的值,求解从t-1各个状态到t时特定状态时的概率,从中选出最大的值,再加上与混淆矩阵的计算,则可以得到当前的 δ(i, t)。
  3. 总结可知

    ,即aji 表示从状态 j 转移到状态 i 的概率,bikt 表示状态i被观察成 kt 的概率,乘上t-1时为j的概率,整体的最大值。即得到 t 时刻可观察状态为 kt 的第 i 个状态的最大部分概率。

确定终点后,反过来往前回溯,确定前一个最佳的点。从而确定一个隐藏状态的时间序列。

Baum-Welch Algorithm

大概的思路是类似于EM算法的,通过初始化一个参数,并多次的评估参数的有效性去更新它的参数,从而逐步的渐进最有可能的参数。而且由于是一个最大似然估计,所以得到的是一个局部最优解。那么实际上是怎么操作呢?

先定义一个后向变量,作为β,即当前状态下后面特定观察序列的概率,同样的,可以用递归的方法去计算,所以得到一个类似于前向算法的值。最后综合前后向变量,可以得到一个特定观察序列的概率。

  1. 先定义两个辅助变量。
    a. 定义为 t 时状态 i 和 t+1 时状态 j 的概率
    用前后的时刻的i,j来定义。通过代入前后向变量可以展开为

    b. 后验概率
    同样的,代入前后向变量可以展开为

从上述两个辅助变量可得,在任意时刻,从状态i转移到状态j的期望为

那么如果我们一开始初始化一个HMM模型的参数λ,可以利用以上参数去计算上面三个式子的右侧。再定义重新估计后HMM模型为
,重新计算上面三个式子的左端。由于已经有定理

所以我们就可以迭代的去计算上述三个式子直到差值收敛到一定的程度。

后序

由于HMM的强大,使得HMM至今还在语音语义识别领域发挥着重要的作用,但是由于HMM的假设过于简单,从而也导致了大家产生了扩展HMM的需求。也就产生了N-1阶的HMM,若N=2,即我们这里说的HMM,一般用到的N=3,更高阶的模型用到的就很少了,由于每一阶的扩展都是在指数级上的复杂度的提高
但由于自然语言的特性,上下文之间的联系绝对不仅仅是几个词之间的联系可以说得通的。有一些甚至需要联系前后的好几个段落才能够说明白一个词的语义,所以对于一些长距离的词性依赖,是很难解决的。这时就需要别的统计模型进行解读。

参考

http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-3
[转载]转:隐马尔科夫模型HMM攻略
http://blog.csdn.net/xueyingxue001/article/details/52396494
数学之美 吴军

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

推荐阅读更多精彩内容