分享本文至 E-mail 信箱

學術引用格式

MLA (點一下全選)

APA (點一下全選)

EndNote(.enw)

隱馬可夫模型:探索看不到的世界的數學工具

文 / T.S.Yo

這篇要討論的可不是哲學議題,而是希望以一個「數學工具」的角度來看隱馬可夫模型Hidden Markov Model, HMM)是什麼,它的背後假設、長處與限制,以理解這樣的工具可以拿來做什麼用,而不是只與特定的應用綁在一起。

Hidden Markov Model 是機器學習(Machine Learning)領域中常常用到的理論模型,從語音辨識(Speech Recognition)、手勢辨識(gesture recognition),到生物資訊學(Bioinformatics)裡的種種應用,都可以見到這個工具的身影。

既然名字裡有「馬可夫」,想當然耳的,這又是一個馬可夫模型Markov model)的延伸。之前在介紹 n-gram 的文章裡已經提到過,馬可夫模型所描述的,是一連串事件接續發生的機率:

馬可夫鏈,用白話說,就是同類型的事件(不同的狀態)依序發生的機率,舉例來說,假設天氣有三種狀態:「晴天」、「陰天」跟「雨天」。如果昨天是雨天,那麼今天是「雨天」的機率,會跟昨天是「晴天」而今天是「雨天」的機率有所不同,這是因為我們相信天氣現象在時間上有某種連續性,前面發生的狀態會影響到後面發生的狀態,而馬可夫模型就是描述這種前後關係的數學語言。

那麼,「隱馬可夫模型」,顧名思義的,約莫就是有什麼東西「隱藏」起來了。我們沿用之前天氣的例子,假設我因為腳受傷,必須住在一個房間裡,看不到外面的天氣(我知道這聽起來不太合理,但是我實在不想把自己關在禁閉室裡,所以請通融一下),但是我可以看到我隔壁房間的室友每天從事的運動:「跑步」、「健身操」或是「游泳」三者之一。

如果把室友每天從事的運動項目記錄下來,就是他「運動」這個事件的馬可夫鏈,這是我可以觀察的到的現象。然後,我又依照過去的經驗,知悉在每種天氣狀況下,他從事各項運動的機率,那麼我是不是可以透過我的觀察和知識,去推測每天的天氣?

在這個例子裡,有兩個事件的序列:一個是我觀察得到的,室友每天所從事的運動項目;另一個是我看不到的,也就是對我來說是隱藏的,外面每天的天氣。由於我知悉這兩個馬可夫鏈之間的關係,所以我便可以由其中一個馬可夫鏈的狀態,去預測另一個馬可夫鏈的狀態。而「隱馬可夫模型」,便是描述這樣的兩個序列的關係的統計模型。

簡單的說,「隱馬可夫模型」提供了一套數學的理論以及工具,讓我們可以利用「看得到的」連續現象去探究、預測另一個「看不到的」連續現象。

當然,這裡的「看不到」並不表示真的無從觀察,以前面所舉的例子來說,我在腳沒受傷的時候,還是可以到外面去觀察天氣的,只是在某個特定的條件之下,天氣對我來說被隱藏起來了。

文章的附圖,講的是柏拉圖的洞穴預言Allegory of Cave),講的是「我們看到的世界」跟「真實的世界」的關係,或許恰好可以用來比喻一下隱馬可夫模型的作用。

我們還可以進一步用「語音辨識」當做例子,來說明 HMM 的用處。

在語言學上,我們可以把人說話發出的聲音分成各種音節syllable),所以理論上,我們如果有一段錄音,只要能分辨每一個音節發的音是哪些母音與子音,就能夠把這個人講的話辨識成文字。

任何「理論上」可行的事情,必然伴隨著實務上的困難。

這種「音節對應」的工作看似容易,但是實際上會遇到很多「模稜兩可」的情況。以中文為例,兩個三聲的字連著念,前面的會讀成二聲,加上同音字、破聲字,同字的語音與讀音…等等,都增加了這個「分辨」過程的難度。

那麼,HMM 是怎麼跑進來的呢?試想,「語音」,是一連串的「音節」,而我們想要辨識成的文字,則是一連串的「字」;對語音辨識系統而言,語音這個「音節序列」是看得到的訊號,而系統想要做的是推測出與其相對應的,看不到的「文字序列」,所以正好是 HMM 所模擬的狀況。隱馬可夫模型在語音辨識的的應用,大抵始於1970年代晚期的 IBM 計畫(Jelinek),時至今日,我們生活中可以看到的各種語音辨識系統,例如 Apple 的 siriGoogle 的 voice search,微軟前不久在北京展示的中英同步口譯,背後都是以 HMM 作為基礎技術。至於技術的細節,有興趣可以參考 MIT 的教材,這裡就不討論了。

生物資訊學(bioinformatics)是另一個大量使用到 HMM 的領域,從 DNA 序列的比對到演化歷程的推論,只要是跟基因序列有關的,幾乎都看得到 HMM 的應用。以DNA定序為例,一段採集到的DNA序列,包含了「外顯子」(exon)和「內隱子」(intron)兩種段落,兩者在細胞複製上有不同的功能,但都是由眾多的基因(gene,有A, T, C, G 四種)排列成的序列,因此在一串看得到的基因序列中,要如何標記出哪一段是「外顯子」,哪一段又是「內隱子」,這些看不到的段落,也是 HMM 可以發揮作用之處。簡單的說,「外顯子」和「內隱子」各自包含 A,T,C,G基因的比例不同,於是我們可以利用 HMM 相關的演算法,找出哪一個基因是「外顯子」和「內隱子」的起點或終點。

現實中,股票的價格變化也是一個「序列」,這是另一個充滿經濟誘因的預測標的,想當然耳的,也有不少人把 HMM 運用在預測股價的狀態上,不過文獻就不如前述兩個領域那麼豐富了。

隱馬可夫模型當然也有它使用上的限制。例如,觀測與模擬的現象必須是「序列」(或者該說是馬可夫鏈),兩個序列之間的關係要夠明確等等,否則很容易就變成用十字螺絲起子去轉六角螺絲:或許可以運作,但是結果不盡然是原本想要的。

如果有這樣的數學工具,你會想要用來預測什麼看不到的現象呢?

 

科技大觀園延伸閱讀:

也可以上科技大觀園搜尋「數學」

關於作者

活躍星系核

活躍星系核(active galactic nucleus, AGN)是一類中央核區活動性很強的河外星系。這些星系比普通星系活躍,在從無線電波到伽瑪射線的全波段裡都發出很強的電磁輻射。 本帳號發表來自各方的投稿。附有資料出處的科學好文,都歡迎你來投稿喔。