Hidden Markov Model

隐马模型

Posted by Wenlong Shen on December 18, 2016

我女朋友是双子座的,有好多好多人格(隐藏状态),不同人格下都有各种各样的表现(观测状态),如果她今天的状态只跟昨天相关(一阶、齐次),那么这就是个HMM…

简介

日常生活中有很多事情都可以看作是一件件离散地、有序地、前后联系地发生着,像是每天的天气,女朋友的心情、赌桌上压大小,甚至如语音识别、中文分词等。复杂的模型描述也许更准确,但也可能带来更多计算资源的消耗,很多时候还是要讲究性价比的。马尔科夫链是一个简单有效、在一定程度上不失准确性的模型,其核心在于:任一时刻的状态只依赖于前一时刻,与其他无关。这一假设看似简单粗暴,却往往很有效,并大大降低了模型的复杂度。进一步地,如果每种表象(观测)下都有着真相(隐藏),这就是HMM。

HMM包含五个要素:观测状态、隐藏状态、初始概率、转移概率、发射概率。通常可以用三个矩阵来表示。 model HMM主要有以下三种应用:

评估

已知HMM,找出一个观测序列的概率。其实就是最简单的概率计算问题,可以直接用暴力穷举,但是这样计算消耗很大(指数级),所以通常会用到forward算法,用递归降低复杂度(线性)。

解码

已知HMM,根据观测序列找出最可能的隐藏序列。同样地,既然知道了HMM,就可以暴力穷举…然而天才的数学家们是不会容忍这种事的,这时候,我们可以用到Viterbi算法。

学习

如果已知HMM五个要素的全部信息,对数据进行模拟就是一件很简单的事情,当然现实生活不会给你好脸色,大部分时候参数都是缺失的,尤其是转移概率和发射概率,我们能得到的往往只有观测序列,这时就要用到forward-backward算法来解析出HMM中的其它参数。

真的适用么?

好用易用,在一些情况下也很准确,ENCODE中的ChromHMM用于识别基因组上不同的state(包括promoter、enhancer等)就是一个非常经典的例子。然而,HMM模型假设其所有的概率在整个序列中是不变的,并且每个状态都只跟前一个状态相关,基因组序列是否符合这些假设?特别是随着基因组三维高级结构研究的开展,我们已经知道DNA元件间存在大量的相互作用,不同结构性区域存在不同的表观修饰和基因表达特性等等,这一切都为HMM打上问号,但是HMM对于序列分析的基本思想仍然值得我们学习和借鉴。