隱馬爾可夫模型--更加接近真相。

隱馬爾可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些學者發表在一系列的統計學論文中,隨後在語言識別,自然語言處理以及生物信息等領域體現了很大的價值。上篇我們已經了解了馬爾可夫模型,不過在實際應用中,隱馬爾可夫模型使用的頻率會更加高,為了更好的理解模型,我們生活中的場景來理解它。

考慮交通燈的變化規律,一種變化序列可能是紅-綠-橙-紅。這個序列可以畫成一個狀態機,不同的狀態按照這個狀態機互相交替,每一個狀態都只依賴於前一個狀態,如果當前的是綠燈,那麼接下來就是橙燈:

這是一個確定性系統,因此更容易理解和分析,只要這些狀態轉移都是已知的。但是在實際當中還存在許多不確定性系統。

在日常生活當中,我們總是希望根據當前天氣的情況來預測未來天氣情況,和上面的交通燈的例子不同,我們不能依靠現有知識確定天氣情況的轉移,但是我們還是希望能得到一個天氣的模式。一種辦法就是假設這個模型的每個狀態都只依賴於前一個的狀態,這個假設被稱為馬爾科夫假設,這個假設可以極大簡化這個問題。顯然,這個假設也是一個非常糟糕的假設,導致很多重要的信息都丟失了。

當涉及到天氣的時候,馬爾科夫假設描述為,假設如果我們知道之前一些天的天氣信息,那麼我們就能預測今天的天氣。當然,這個例子也是有些不合實際的。但是,這樣一個簡化的系統可以有利於我們的分析,所以我們通常接受這樣的假設,因為我們知道這樣的系統能讓我們獲得一些有用的信息,儘管不是十分準確的。

下面是天氣所有可能的一階轉移:

注意一個含有 N 個狀態的一階過程有 N^{2} 個狀態轉移。每一個轉移的概率叫做狀態轉移概率 (state transition probability),就是從一個狀態轉移到另一個狀態的概率。這所有的 N^{2} 個概率可以用一個狀態轉移矩陣來表示,其表示形式如下:

其中:

a_{ij}=P(q_{t}=j|q_{t-1}=i)  1leq i,jleq N

對於該矩陣有如下約束條件:

a_{ij}geq 0,forall i,j

sum_{j=1}^{N}{a_{ij}}=1,forall i

昨天和今天天氣變化的一個狀態轉移矩陣為:

這個矩陣表示,如果昨天是晴天,那麼今天有50%的可能是晴天,37.5%的概率是陰天,12.5%的概率會下雨,很明顯,矩陣中每一行的和都是1。

為了初始化這樣一個系統,我們需要一個初始的概率向量:

這個向量表示第一天是晴天。

到這裡,我們就為上面的一階馬爾科夫過程定義了以下三個部分:

  狀態:晴天、陰天和下雨

  初始向量:定義系統在時間為0的時候的狀態的概率

  狀態轉移矩陣:每種天氣轉換的概率

所有的能被這樣描述的系統都是一個馬爾科夫過程

然而,當馬爾科夫過程不夠強大的時候,我們又該怎麼辦呢?在某些情況下,馬爾科夫過程不足以描述我們希望發現的模式。例如,一個隱居的人可能不能直觀的觀察到天氣的情況,但是民間傳說告訴我們海藻的狀態在某種概率上是和天氣的情況相關的。在這種情況下我們有兩個狀態集合,一個可以觀察到的狀態集合(海藻的狀態)和一個隱藏的狀態(天氣狀況)。我們希望能找到一個演算法可以根據海藻的狀況和馬爾科夫假設來預測天氣的狀況,這個過程中我們需要知道一個細節,隱藏狀態的數目和可以觀察到的狀態的數目可能是不一樣的,也就是說,在一個有3種狀態的天氣系統(sunny、cloudy、rainy)中,也許可以觀察到4種潮濕程度的海藻(dry、dryish、damp、soggy)。

不過有一點我們是可以確定的,就是可以觀察到的狀態序列和隱藏的狀態序列是概率相關的。於是我們可以將這種類型的過程建模為有一個隱藏的馬爾科夫過程和一個與這個隱藏馬爾科夫過程概率相關的並且可以觀察到的狀態集合。這就是傳說中的隱馬爾可夫模型。

 隱馬爾可夫模型 (Hidden Markov Model) 是一種統計模型,用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來作進一步的分析。下圖是一個三個狀態的隱馬爾可夫模型狀態轉移圖,其中x 表示隱含狀態,y 表示可觀察的輸出,a 表示狀態轉換概率,b 表示輸出概率。

下圖顯示了天氣的例子中隱藏的狀態和可以觀察到的狀態之間的關係。我們假設隱藏的狀態是一個簡單的一階馬爾科夫過程,並且他們兩兩之間都可以相互轉換。

對 HMM 來說,有如下三個重要假設,儘管這些假設是不現實的。

假設1:馬爾可夫假設(狀態構成一階馬爾可夫鏈)

P(X_{i}|X_{i-1}...X_{i-1})=P(X_{i}|X_{i-1})

假設2:不動性假設(狀態轉換矩陣與具體時間無關)

P(X_{i+1}|X_{i})=P(X_{j+1}|X_{j}),forall i,j

假設3:輸出獨立性假設(輸出僅與當前狀態有關)

P(O_{1},....O_{T}|X_{i},......X_{T})=prod_{}^{}P(O_{t}|X_{t})

隱藏的狀態和可觀察到的狀態之間有一種概率上的關係,也就是說某種隱藏狀態 H 被認為是某個可以觀察的狀態 O1 是有概率的,假設為 P(O1 | H)。如果可以觀察的狀態有3種,那麼很顯然 P(O_{1} | H)+P(O_{2 }| H)+ P(O_{3} | H) = 1

這樣,我們也可以得到一個另一個矩陣,稱為混淆矩陣 (confusion matrix)。這個矩陣的內容是某個隱藏的狀態被分別觀察成幾種不同的可以觀察的狀態的概率,在天氣的例子中,這個矩陣如下圖:

上邊的圖示都強調了 HMM 的狀態變遷我們來用圖表示出模型的演化過程:

其中綠色的圓圈表示隱藏狀態,紫色圓圈表示可觀察到狀態,箭頭表示狀態之間的依存概率。

現在我們可以知道,需要用一個5元組 left{ N,M,pi,A,B right} 來表示一個HMM模型,其中 N 表示隱藏狀態的數量,我們要麼知道確切的值,要麼猜測該值;M 表示可觀測狀態的數量,可以通過訓練集獲得; π={πi} 為初始狀態概率; A=left{ a_{ij} right} 為隱藏狀態的轉移矩陣  P(X_t| X_{t-1}) ;B={bik} 表示某個時刻隱藏狀態到可觀察狀態的概率,即混淆矩陣Pr(Ot| Xt) 。在狀態轉移矩陣和混淆矩陣中的每個概率都是時間無關的,即當系統演化時,這些矩陣並不隨時間改變。

所以,對於一個 N 和 M 固定的 HMM 來說,用 λ={ π, A, B } 表示 HMM 參數。

在正常的馬爾可夫模型中,狀態對於觀察者來說是直接可見的。這樣狀態的轉換概率便是全部的參數。而在隱馬爾可夫模型中,狀態並不是直接可見的,但受狀態影響的某些變數則是可見的。每一個狀態在可能輸出的符號上都有一概率分布。因此輸出符號的序列能夠透露出狀態序列的一些信息。

今天就到這裡先,晚安。


推薦閱讀:

《NLP》第二章The Language Modeling Problem
Attention is All You Need | 每周一起讀

TAG:自然语言处理 |