隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

HMM 隱性馬爾科夫模型

隱馬爾科夫模型(Hidden Markov Model,HMM)通常用於處理時間序列數據,即樣本之間有時間序列關係的數據。學生的作答信息是天然的、有時間屬性的序列,非常適合用HMM進行建模。其他的場景還有股票時長,天氣,等等

馬爾科夫模型

為了更好地理解HMM,我們可以先從"一階馬爾科夫模型"說起 [1] 一階馬爾科夫模型的基本思想是,一系列事件會相繼發生,後一個事件發生的概率僅僅取決於前一個事件的狀態。這一系列事件就像串起來的珠子。下圖表示一個簡單的馬爾科夫模型,x1 是第一個事件,第二個事件x2 是否發生,以及如何發生,都依賴於x1。依次類推,x3的情況僅僅依賴於x2,x4的情況僅僅依賴於x3 ... ...

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

馬爾科夫模型

高階馬爾科夫模型

然而很多實際問題的依賴關係往往沒有這麼簡單,x4的情況可能不僅依賴於x3,還與x2有關。為了表達當前狀態與更早的狀態之間的關係(例如 x4 和 x2),可以引入高階馬爾科夫。概括來說,M階馬爾科夫性是指當前狀態取決於之相鄰的前M個狀態,但是與更早的狀態無關。高階馬爾科夫性雖然達到了關聯當前狀態與更早的狀態的目的,但是因為模型參數呈指數性爆炸,計算複雜度大大增加。

隱性馬爾科夫模型

那麼,有沒有一種方法即能將當前狀態與更早的狀態關聯起來,又不需要那麼多參數呢?當然,這裡有一種非常強大的手段,即引入隱變量。這裡如果假設隱變量構成一階馬爾科夫模型 (z1, z2, z3, z4, ... ),而在每一個時間點上我們所觀測到的情況僅僅和當前的隱變量有關 (x1 和 z1 相關,x2 和 z2 相關 .... )。這個就是HMM模型。這裡隱變量 (z)就是我們無法觀測的,比如學生對知識點的掌握情況: 不會,不熟練 等等。 而可見變量(x)就是我們從學生作答中看到的,比如 作答正確,選擇錯誤選項B,選擇錯誤答案C,等等。

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

隱馬爾科夫模型

HMM模型有三個非常重要的參數:初始概率分佈(start probability)、轉移概率模型(transition matrix)和發射概率矩陣(emission matrix)。對狀態空間模型建模實際就是對這三者進行建模。而且此時觀測變量(x)之間不再具有任何馬爾科夫性。

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

參數說明

案例分析

我有兩個色子,一個是正常的包含1,2,3,4,5,6 這六個個點 (A),一個是特殊的,有1,2,3,4,四個點(B),下圖展示了各種色子:

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

市面上各種各樣的色子


隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

一個完整的可用的HMM模型就是需要知道上邊的三個參數比如: 
初始概率分佈: 初始選擇A色子的概率是 0.45 ,那麼選擇B色子的概率是0.55
轉移概率: 如果前一個是A色子,那麼接下來 40%的概率還是A 60% 的概率是B, 如果前一個是B色子,50% 的概率是A,50% 的概率是B,這個是一個矩陣

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

結合上邊的數字就是:

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

發射概率矩陣: 也是一個矩陣,表示從色子的類別,到觀察到的點數的概率,針對我們這個情況,他的形式如下

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

因為色子是均勻的,我們可以得到

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

那麼模型的完整工作流程是下邊這樣的:

隱性馬爾科夫模型簡介,只聊原理,(保證沒有數學)

隱性馬爾科夫模型

關於HMM有兩個主要問題:

已知上述三個參數,和當前觀測序列,求解隱藏狀態的變化
所有參數未知,只有數據,如何獲得三個參數
python 提供了hmmlearn包,可以非常方便的實現以上兩個問題,我們會在下一個文章中介紹如何實現

[1] . farewell (2018.4.22), 隱馬爾科夫模型, 知乎 [blog post]. Retrieved from https://zhuanlan.zhihu.com/p/27907806


分享到:


相關文章: