隱馬爾科夫模型HMM學習(一)

介紹

崔曉源 翻譯

我們通常都習慣尋找一個事物在一段時間裏的變化規律。在很多領域我們都希望找到這個規律,比如計算機中的指令順序,句子中的詞順序和語音中的詞順序等等。一個最適用的例子就是天氣的預測。

首先,本文會介紹聲稱概率模式的系統,用來預測天氣的變化

然後,我們會分析這樣一個系統,我們希望預測的狀態是隱藏在表象之後的,並不是我們觀察到的現象。比如,我們會根據觀察到的植物海藻的表象來預測天氣的狀態變化。

最後,我們會利用已經建立的模型解決一些實際的問題,比如根據一些列海藻的觀察記錄,分析出這幾天的天氣狀態。

Generating Patterns

有兩種生成模式:確定性的和非確定性的。

確定性的生成模式:就好比日常生活中的紅綠燈,我們知道每個燈的變化規律是固定的。我們可以輕鬆的根據當前的燈的狀態,判斷出下一狀態。

 

非確定性的生成模式:比如說天氣晴、多雲、和雨。與紅綠燈不同,我們不能確定下一時刻的天氣狀態,但是我們希望能夠生成一個模式來得出天氣的變化規律。我們可以簡單的假設當前的天氣只與以前的天氣情況有關,這被稱爲馬爾科夫假設。雖然這是一個大概的估計,會丟失一些信息。但是這個方法非常適於分析。

馬爾科夫過程就是當前的狀態只與前n個狀態有關。這被稱作n階馬爾科夫模型。最簡單的模型就當n=1時的一階模型。就當前的狀態只與前一狀態有關。(這裏要注意它和確定性生成模式的區別,這裏我們得到的是一個概率模型)。下圖是所有可能的天氣轉變情況:

 

對於有M個狀態的一階馬爾科夫模型,共有M*M個狀態轉移。每一個狀態轉移都有其一定的概率,我們叫做轉移概率,所有的轉移概率可以用一個矩陣表示。在整個建模的過程中,我們假設這個轉移矩陣是不變的。

 

該矩陣的意義是:如果昨天是晴,那麼今天是晴的概率爲0.5,多雲的概率是0.25,雨的概率是0.25。注意每一行和每一列的概率之和爲1。

另外,在一個系統開始的時候,我們需要知道一個初始概率,稱爲 P 向量。

 

到現在,我們定義了一個一階馬爾科夫模型,包括如下概念:

狀態:晴、多雲、雨

狀態轉移概率

初始概率


 


馬爾科夫模型也需要改進!

當一個隱士不能通過直接觀察天氣狀態來預測天氣時,但他有一些水藻。民間的傳說告訴我們水藻的狀態與天氣有一定的概率關係。也就是說,水藻的狀態與天氣時緊密相關的。此時,我們就有兩組狀態:觀察狀態(水藻的狀態)和隱含狀態(天氣狀態)。因此,我們希望得到一個算法可以爲隱士通過水藻和馬爾科夫過程,在沒有直接觀察天氣的情況下得到天氣的變化情況。

更容易理解的一個應用就是語音識別,我們的問題定義就是如何通過給出的語音信號預測出原來的文字信息。在這裏,語音信號就是觀察狀態,識別出的文字就是隱含狀態。

這裏需要注意的是,在任何一種應用中,觀察狀態的個數與隱含狀態的個數有可能不一樣的。下面我們就用隱馬爾科夫模型HMM來解決這類問題。

HMM

下圖是天氣例子中兩類狀態的轉移圖,我們假設隱狀態是由一階馬爾科夫過程描述,因此他們相互連接。

 
隱狀態和觀察狀態之間的連線表示:在給定的馬爾科夫過程中,一個特定的隱狀態對應的觀察狀態的概率。我們同樣可以得到一個矩陣:

注意每一行(隱狀態對應的所有觀察狀態)之和爲1。
到此,我們可以得到HMM的所有要素:兩類狀態和三組概率
 
兩類狀態:觀察狀態和隱狀態;
三組概率:初始概率、狀態轉移概率和兩態對應概率(confusion matrix)

 


HMM 定義

HMM是一個三元組 (P,A,B).

P : the vector of the initial state probabilities;

A :  the state transition matrix;

B :  the confusion matrix;

這其中,所有的狀態轉移概率和混淆概率在整個系統中都是一成不變的。這也是HMM中最不切實際的假設。

 

HMM的應用

有三個主要的應用:前兩個是模式識別後一個作爲參數估計

(1) 評估

根據已知的HMM找出一個觀察序列的概率。

這類問題是假設我們有一系列的HMM模型,來描述不同的系統(比如夏天的天氣變化規律和冬天的天氣變化規律),我們想知道哪個系統生成觀察狀態序列的概率最大。反過來說,把不同季節的天氣系統應用到一個給定的觀察狀態序列上,得到概率最大的哪個系統所對應的季節就是最有可能出現的季節。(也就是根據觀察狀態序列,如何判斷季節)。在語音識別中也有同樣的應用。

我們會用forward algorithm 算法來得到觀察狀態序列對應於一個HMM的概率。

(2) 解碼

根據觀察序列找到最有可能出現的隱狀態序列

回想水藻和天氣的例子,一個盲人隱士只能通過感受水藻的狀態來判斷天氣狀況,這就顯得尤爲重要。我們使用viterbi algorithm來解決這類問題。

viterbi算法也被廣泛的應用在自然語言處理領域。比如詞性標註。字面上的文字信息就是觀察狀態,而詞性就是隱狀態。通過HMM我們就可以找到一句話上下文中最有可能出現的句法結構。

(3) 學習

從觀察序列中得出HMM

這是最難的HMM應用。也就是根據觀察序列和其代表的隱狀態,生成一個三元組HMM (,A,B)。使這個三元組能夠最好的描述我們所見的一個現象規律。

我們用forward-backward algorithm來解決在現實中經常出現的問題--轉移矩陣和混淆矩陣不能直接得到的情況。

總結 HMM可以解決的三類問題

1.Matching the most likely system to a sequence of observations -evaluation, solved using the forward algorithm;
2.determining the hidden sequence most likely to have generated a sequence of observations - decoding, solved using the Viterbi algorithm;
3.determining the model parameters most likely to have generated a sequence of observations - learning, solved using the forward-backward algorithm.

發佈了27 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章