• 隐马可夫模型:探索看不到的世界的数学工具


      这篇要讨论的可不是哲学议题,而是希望以一个“数学工具”的角度来看隐马可夫模型(Hidden Markov Model, HMM)是什么,它的背后假设、长处与限制,以理解这样的工具可以拿来做什么用,而不是只与特定的应用绑在一起。

      隐马可夫模型?隐藏的马可夫模型?

      隐马可夫模型是机器学习(Machine Learning)领域中常常用到的理论模型,从语音识别(Speech Recognition)、手势辨识(gesture recognition),到生物信息学(Bioinformatics)里的种种应用,都可以见到这个工具的身影。

    既然名字里有“马可夫”,想当然,这又是一个马可夫模型(Markov model)的延伸。马可夫模型所描述的,是一连串事件接续发生的机率:

    马可夫链,通俗地说,就是同类型的事件(不同的状态)依序发生的机率,举例来说,假设天气有三种状态:晴天、阴天跟雨天。如果昨天是雨天,那么今天是雨天的机率,会跟昨天是晴天而今天是雨天的机率有所不同,这是因为我们相信天气现象在时间上有某种连续性,前面发生的状态会影响到后面发生的状态,而马可夫模型就是描述这种前后关系的数学语言。

    而隐马可夫模型,顾名思义的,就是有什么东西“隐藏”起来了。我们沿用之前天气的例子,假设我因为脚受伤,必须住在一个房间里,看不到外面的天气(这听起来不太合理,但是大家理解意思就好),但是我可以看到我隔壁房间的室友每天从事的运动:跑步、健身操或是游泳三者之一。

      如果把室友每天从事的运动项目记录下来,就是他“运动”这个事件的马可夫链,这是我可以观察的到的现象。然后,我又依照过去的经验,知悉在每种天气状况下,他从事各项运动的机率,那么我是不是可以透过我的观察和知识,去推测每天的天气?

    在这个例子里,有两个事件的序列:一个是我观察得到的,室友每天所从事的运动项目;另一个是我看不到的,也就是对我来说是隐藏的,外面每天的天气。由于我知悉这两个马可夫链之间的关系,所以我便可以由其中一个马可夫链的状态,去预测另一个马可夫链的状态。而隐马可夫模型,便是描述这样的两个序列的关系的统计模型。

    简单的说,隐马可夫模型提供了一套数学的理论以及工具,让我们可以利用看得到的连续现象去探究、预测另一个看不到的连续现象。

    当然,这里的看不到并不表示真的无从观察,以前面所举的例子来说,我在脚没受伤的时候,还是可以到外面去观察天气的,只是在某个特定的条件之下,天气对我来说被隐藏起来了。

                           
      柏拉图的洞穴预言(Allegory of Cave),讲的是“我们看到的世界”跟“真实的世界”的关系,恰好可以用来比喻一下隐马可夫模型的作用。

    语音识别离不开隐马可夫模型

    我们还可以进一步用语音识别当做例子,来说明HMM的用处。

    在语言学上,我们可以把人说话发出的声音分成各种音节(syllable),所以理论上,我们如果有一段录音,只要能分辨每一个音节发的音是哪些元音与子音,就能够把这个人讲的话辨识成文字。

    任何理论上可行的事情,必然伴随着实务上的困难。这种音节对应的工作看似容易,但是实际上会遇到很多模棱两可的情况。以中文为例,两个三声的字连着念,前面的会读成二声,加上同音字、破声字,同字的语音与读音…等等,都增加了分辨过程的难度。

    那么,HMM 是怎么跑进来的呢?试想,语音是一连串的音节,而我们想要辨识成的文字,则是一连串的字;对语音识别系统而言,语音这个音节序列是看得到的讯号,而系统想要做的是推测出与其相对应的,看不到的文字序列,所以正好是 HMM 所模拟的状况。

    隐马可夫模型在语音识别的的应用,大抵始于1970年代晚期的 IBM 计划(Jelinek),时至今日,我们生活中可以看到的各种语音识别系统,例如Apple 的siri,Google的voice search,微软前不久在北京展示的中英同步口译,背后都是以HMM作为基础技术。

      隐马可夫模型:生物信息学、股票价格预测都有应用

      生物信息学(bioinformatics)是另一个大量使用到 HMM 的领域,从DNA 序列的比对到演化历程的推论,只要是跟基因序列有关的,几乎都看得到 HMM 的应用。以DNA定序为例,一段采集到的DNA序列,包含了外显子(exon)和内隐子(intron)两种段落,两者在细胞复制上有不同的功能,但都是由众多的基因(gene,有A、T、C、G 4种)排列成的序列,因此在一串看得到的基因序列中,要如何标记出哪一段是外显子,哪一段又是内隐子,这些看不到的段落,也是HMM可以发挥作用之处。简单的说,外显子和内隐子各自包含 A、T、C、G基因的比例不同,于是我们可以利用 HMM 相关的算法,找出哪一个基因是外显子和内隐子的起点或终点。

      现实中,股票的价格变化也是一个序列,这是另一个充满经济诱因的预测目标,想当然耳的,也有不少人把 HMM 运用在预测股价的状态上,不过文献就不如前述两个领域那么丰富了。

      隐马可夫模型当然也有它使用上的限制。例如,观测与模拟的现象必须是序列(或者该说是马可夫链),两个序列之间的关系要够明确等等,否则很容易就变成用十字螺丝起子去转六角螺丝:或许可以运作,但是结果不尽然是原本想要的。

      如果有这样的数学工具,你会想要用来预测什么看不到的现象呢?

  • 相关阅读:
    PHP的Tag标签
    PHP 常量
    MySQL知识点链接
    Codeforces Round #593 (Div. 2)D(螺旋形模拟)
    【PAT甲级】1060 Are They Equal (25 分)(需注意细节的模拟)
    【PAT甲级】1059 Prime Factors (25 分)
    【PAT甲级】1058 A+B in Hogwarts (20 分)
    【PAT甲级】1057 Stack (30 分)(分块)
    【PAT甲级】1056 Mice and Rice (25 分)
    Atcoder Grand Contest 039C(容斥原理,计数DP)
  • 原文地址:https://www.cnblogs.com/wangxiaochu/p/3691524.html
Copyright © 2020-2023  润新知