這篇要討論的可不是哲學議題,而是希望以一個“數學工具”的角度來看隱馬可夫模型(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 運用在預測股價的狀態上,不過文獻就不如前述兩個領域那么豐富了。
隱馬可夫模型當然也有它使用上的限制。例如,觀測與模擬的現象必須是序列(或者該說是馬可夫鏈),兩個序列之間的關系要夠明確等等,否則很容易就變成用十字螺絲起子去轉六角螺絲:或許可以運作,但是結果不盡然是原本想要的。
如果有這樣的數學工具,你會想要用來預測什么看不到的現象呢?
原文發布于PanSci,作者:活躍星系核,轉載時文字部分有修改。
檢測咨詢請撥打:020-89209195 傳真:020-89209065 客戶服務應急電話:18022399778 18924300161
地址:廣東省廣州市海珠區福場路5號富力金禧商務中心2008室 郵編:510220 E-mail:Arthaitesting@163.com