隱馬可夫模型(Hidden Markov Model, HMM)是一種具有隱含未知參數的馬可夫鏈(Markov Chain),隱馬可夫模型常被使用在許多AI與Machine Learning的應用。既然隱馬可夫模型是一種馬可夫鏈,一開始先來簡單介紹一下什麼是馬可夫鏈
馬可夫鏈是指從一個狀態轉移到另一個狀態的隨機過程,且下一個狀態只能由當前狀態決定,根據機率分布從一個狀態轉移到另一個狀態,或是保持目前狀態,不同狀態間改變的機率稱為轉移機率(Transition Probability)。
以上面的例子來說明,這是一個具有兩個狀態的馬可夫鏈,S1是雨天(Rainy),S2是晴天(Sunny)。其中S1可以轉移到S2也可以保持在S1,S2可以轉移到S1,也可以保持在S2。使用天氣變化這個例子來說明的話,可以表示成如果今天是雨天,明天可能是晴天也可能維持雨天。
如果我們有一個地區的天氣變化歷史紀錄,就可以統計出此地區晴天和雨天的轉移機率,並算出未來是晴天或是雨天的機率。假設已經知道今天是雨天,我們就可以從上面的樹狀範例可以輕易的計算出後天是雨天的機率是0.61,也可以使用矩算運算來算出後天是雨天和晴天的機率。
再來開始談談什麼是隱馬可夫模型,在隱馬可夫模型被隱藏起來不可見的就是狀態本身,雖然狀態被隱藏起來看不到了,但是卻可以透過「觀察序列」來間接的透露出狀態的訊息。
以wiki上面的天氣例子來說明,假設我本來每天都可以直接看到我居住地區的天氣狀態,有一天我搬家了沒辦法直接觀察原本地區的天氣狀態。雖然我無法直接看到原本地區的天氣狀態,但是我知道住在原本那個地區的朋友,在雨天的時候會有10%機率出門散布、40%機率出門購物,和50%在家打掃;在雨天的時候會有60%機率出門散布、30%機率出門購物,和10%在家打掃。
隱馬可夫模型讓我們可以透過觀察「看得到的」現象去推測另一個「看不到的」現象。以上面舉的例子來說,雖然我無法得知該地區的天氣狀況,但是我就可以透過觀察朋友每天的連續行為,來推測該地區的天氣狀況,並且以上面的方式來呈現一個隱馬可夫模型。
通常隱馬可夫模型有三大重要的問題:
- 已知HMM模型,找出一個特定輸出序列的機率
- 已知HMM模型,找出一個特定輸出序列的隱藏狀態序列
- 未知HMM模型,找到最可能的狀態轉移和輸出機率
不同的演算法都有相對應的演算法可以使用,後續有機會再陸續介紹
參考資料:
Wiki - Hidden_Markov_model
演算法筆記 - HiddenMarkovModel
隱馬可夫模型:探索看不到的世界的數學工具
馬可夫鏈