標籤:
這篇要討論的可不是哲學議題,而是希望以一個“數學工具”的角度來看隱馬可夫模型(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 運用在預測股價的狀態上,不過文獻就不如前述兩個領域那麼豐富了。
隱馬可夫模型當然也有它使用上的限制。例如,觀測與類比的現象必須是序列(或者該說是馬可夫鏈),兩個序列之間的關係要夠明確等等,否則很容易就變成用十字螺絲起子去轉六角螺絲:或許可以運作,但是結果不盡然是原本想要的。
如果有這樣的數學工具,你會想要用來預測什麼看不到的現象呢? http://www.guokr.com/article/437179/
隱馬可夫模型:探索看不到的世界的數學工具