幾個常用機器學習算法 - 隱馬爾可夫模型

1

先引入一個知乎上看到的例子:

假設你的手中有三個不同的骰子。 
第一個是我們平常都能見到的骰子(稱其爲D6),6個面,每個面(1,2,3,4,5,6)出現的概率是1/6; 
第二個有4個面(稱其爲D4),每個面(1,2,3,4)出現的概率是1/4; 

第三個有8個面(稱其爲D8),每個面(1,2,3,4,5,6,7,8)出現的概率是1/8。


現在你要開始擲骰子了。 
先從三個骰子裏挑一個,挑到每一個骰子的概率都是1/3。 
接着擲骰子,得到1,2,3,4,5,6,7,8中的一個點數。 
你不停地重複上述過程,會得到一串數字,每個數字都是1,2,3,4,5,6,7,8中的一個。例如你得到了這麼一串數字(擲了10次):1 6 3 5 2 7 3 5 2 4

這串擲出的骰子點數叫做可見狀態鏈。但是在隱馬爾可夫模型中,我們不僅僅有這麼一串可見狀態鏈,還有一串隱含狀態鏈。 
在這個例子裏,這串隱含狀態鏈就是你用的骰子的序列,比如隱含狀態鏈有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8

一般來說,HMM中說到的馬爾可夫鏈是指隱含狀態鏈,因爲隱含狀態(骰子)之間存在轉換概率(transition probability)。 
在上面的例子中,D6的下一個狀態是D4,D6,D8的概率都是1/3。D4,D8的下一個狀態是D4,D6,D8的轉換概率也都一樣是1/3。你可以更改轉換概率,那就是新的HMM了。

儘管可見狀態之間沒有轉換概率,但是隱含狀態和可見狀態之間有一個概率叫做輸出概率(emission probability)。 
上面的例子中,六面骰(D6)產生1的輸出概率是1/6。產生2,3,4,5,6的概率也都是1/6。

而最開始抽到骰子的概率,則是初始狀態概率。這裏初始抽到三種骰子的概率分別都爲1/3.

而我們學習HMM模型,是因爲當一個系統可以作爲HMM被描述,那麼我們就能解決以下三種問題

1)預測問題:你知道了骰子有幾種(隱含狀態數量),每種骰子是什麼(轉換概率),骰子擲出的結果(可見狀態鏈),但你想知道每次擲出來的都是哪種骰子(隱含狀態鏈)。

也叫做解碼問題。

2)概率計算問題:你知道了骰子有幾種(隱含狀態數量),每種骰子是什麼(轉換概率),骰子擲出的結果(可見狀態鏈),但你想知道擲出這個結果的概率。

這個問題看似意義不大,但這個問題可以幫你驗證觀察到的結果和已知的模型是否吻合;因爲如果很多次結果都對應了比較小的概率,那麼就說明你已知的模型很有可能是錯的,有人偷偷把你的骰子給換了。

3)學習問題:你知道了骰子有幾種(隱含狀態數量),觀測到了很多次擲骰子的結果(可見狀態鏈),但你想反推出每種骰子是什麼(轉換概率)。

這個問題很重要,因爲這是最常見的情況。很多時候我們只有可見結果,不知道HMM模型裏的參數,我們需要從可見結果估計出這些參數,這是建模的一個必要步驟。

2

接下來要介紹上述三個問題的解決算法,所以需要一些符號來定義問題。

隱馬爾科夫模型可以用三元符號表示

#相關的問題求解


                                        因爲有狀態qj到狀態qi有n種可能

在t時刻爲狀態qj 到 t+1時刻爲qi的概率爲aji   t+1時刻狀態爲qi輸出爲o(t+1)的概率爲bi






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章