隐马尔可夫模型(Hidden Markov Model - HMM)

这又是一个和统计有关的话题,自然还是以赌场的例子开头。这个例子叫“Fair Bet Casino”(公平赌博的赌场?)。赌具十分简单:硬币,只赌两面,头(H)还是尾(T) : (Head or Tail)。当然赌场的庄家留着一手,那就是准备了两枚做了手脚的硬币,一枚叫多头(D),也就是出现H(Head)的几率要大于T(Tail),比如H占0.7的机会,T只占0.3;另一枚则是少头(S),出现H的机会要小于T,比如H占0.3的机会,T只占0.7。不过幸好这位庄家老千技术不过硬,怕被人看出破绽,不敢时时的换硬币,也就大概每十次才敢动手换一下手中的硬币(0.1的几率)。知道了这些,就让你来想办法怎样能赢。当然首先内线提供的这些情报得准确,其次,得想办法找出在哪个阶段庄家在使用哪枚硬币,然后就可以使劲的对症下药,猛押几率大的,当然再祈祷一下,庄家不要突然换硬币(赢面还是很大的,毕竟很大的可能性还是继续用同一枚硬币的(0.9 vs 0.1))。

这个例子从某种角度说明了,我们对隐藏的信息更感兴趣,也就是庄家究竟在使用哪枚硬币,但我们能直接观察到的只是H和T。比如连续出现三个H (HHH),直觉就可以判断很有可能是在用D硬币(具体的数值则是比较0.7*0.7*0.7>0.3*0.3*0.3),当然前提还必须是只使用了其中一种硬币。如果要考虑每扔一次硬币后,有机会选择下一枚硬币(0.9的概率继续使用,0.1的概率换另一枚硬币),那仍然一直使用D硬币来出现三个H的可能性就为 0.9*0.7*0.9*0.7*0.9*0.7 (这其中还是有一步假设,那就是第一步之前所使用的硬币还是D硬币;如果第一步使用之前的硬币为S硬币,则一直使用D硬币来出现三个H的概率就变为0.1*0.7*0.9*0.7*0.9*0.7)。不管怎样,只是在连续3个H的这种情况下,很大的可能性是在一直使用着D硬币,但如果是HTHHTTTHH..,或者更随机的情况呢,它究竟是D硬币还是S硬币产生的呢,或者其间还换了硬币?

除了上述这个赌场问题,其实隐马尔可夫模型(HMM)更十分广泛使用于语音识别,因为电脑或机器直接接受的是音频音调,然后来猜测实际要表达的词汇。它也广泛应用于生物信息学(bioinformatics),比较著名的例子就是探测DNA序列中的CG岛的存在。众所周知,A、T、C、G四个碱基交替出现组成DNA链,尽管只有四个组员,C和G却一般不常碰头,据说两个碰在一起了,比较容易被甲基化,把基因的遗传信息给弄坏了可是件大事,所以两者也就拘束着。但在一些地方,可能由于某些保护机制,这两者在一起的概率要远远大于其他区域,这些CG可以自由碰面的地区也就被称为CG岛。这些CG岛也就被猜测为对DNA遗传信息的控制有着一定的作用,所以被scorp称为游手好闲的家伙们就会来计算一下,究竟基因的那些区域属于CG岛。同样他们用的也是HMM的原理。

本来还想编个小程序来展示一下,如何解那个赌场问题,可是想不通怎样很好的记录最有可能的隐蔽态(Hidden state )。所以也就不在这儿献丑了。

参考资料:

Hidden Markov model: http://en.wikipedia.org/wiki/Hidden_Markov_model

Viterbi algorithm:http://en.wikipedia.org/wiki/Viterbi_algorithm

Comments 2

  1. johnthu wrote:

    你举的这个例子,是我看到的最好的一个HMM例子,呵呵

    Posted 31 Jan 2008 at 10:43 am
  2. paul deng wrote:

    确实,你的这个例子还不错,谢谢了

    Posted 29 Apr 2008 at 4:46 am

Post a Comment

Your email is never published nor shared. Required fields are marked *