1. 程式人生 > >隱馬爾科夫模型,學習筆記

隱馬爾科夫模型,學習筆記

1. 隱馬爾科夫模型的三個基本問題

1. 概率計算問題,已知模型和觀測序列,計算在當前模型下觀測序列出現的概率。

2. 學習問題。已知觀測序列,來估計模型的引數(轉移概率等等),使得在該模型下已知的觀測序列出現的概率最大(極大似然)

3. 預測(解碼)問題,已知模型和觀測序列,求最有可能對應的狀態序列。

2. 求解概率計算問題

如果已經知道模型的話,那麼狀態轉移概率矩陣,初始狀態概率向量,觀測概率矩陣都已知。

首先考慮暴力的直接計演算法

直接計演算法:(不現實)

就是直接按照概率公式。

1.求出所有的可能出現的狀態序列,

2.對於每種可能出現的狀態序列,計算已知的觀測序列出現的概率(乘上對應的觀測概率矩陣)

3.將全部的概率相加,就是已知的觀測序列出現的概率。

前向演算法:

前向概率:到一個時刻t,時刻t時狀態為q(而非觀測),觀測序列為(o1,o2.....ot)的概率。

前向演算法:

1. 計算初值:根據初始狀態概率向量,和觀測概率矩陣,計算出每一種狀態對應的t=1的前向概率。

2. 遞推:計算每一種狀態轉移到當前狀態i的概率和,再乘上觀測概率。

3. 終止:概率計算為:對T時刻的每一種狀態i的前向概率求和。

後向演算法:

基本和前向演算法很類似。

具體而言,定義t時刻狀態為q,但已知觀測序列為(ot+1,ot+2.....oT)

後向演算法:

1. 初始T時刻的所有狀態i的後向概率為1。(因為後向概率就是這麼定義的。“在時刻t的狀態為i的條件下”)

2. 前推,前一時刻,對於所有t+1時刻狀態j  *  轉移概率i->j  *  觀測概率觀測到Oj   求和

3. 終止。

利用前向和後向概率,我們可以求什麼(應用)

1. 時刻t,處於狀態qi的概率:參見統計機器學習P179(前向*後向)/(對於所有狀態求和前向*後向)

2.時刻t處於狀態qi,且時刻t+1,處於狀態qj的概率:

3. 觀測O下狀態i出現的期望值

4.觀測O下由狀態i轉移的期望值

5. 觀測O下由狀態i轉移到狀態j的期望值

3.學習演算法(已知觀測序列,求模型引數,即構建模型)

1.監督學習方法:訓練資料中包含觀測序列和對應的狀態序列

極大似然估計法。

1.估計轉移概率:用頻數做比,i->j  /  i->所有狀態

2. 估計觀測概率:頻數做比 ,狀態j觀測為k/狀態j觀測為任意狀態

3. 初始狀態概率:S個樣本中初始狀態為i的概率

2. 非監督學習方法:Baum-Welch演算法

只給出S個觀測序列,而沒有給出對應的狀態序列。

使用EM演算法。

(略)

3. 預測演算法:(根據模型和觀測序列,得到最優的狀態序列)

就像是訓練出模型之後,輸入樣本(觀測序列),得到輸出(狀態序列)

1. 近似演算法

在每個時刻t選擇在該時刻最有可能出現大的狀態i,從而得到一個狀態序列作為預測的結果。

(這裡用到之前計算的某一時刻狀態i的概率,在前向和後向演算法那裡)

計算某一時刻t下,所有狀態i的概率,取其中的最大值。

計算所有時刻,形成一個序列。

2. 維特比演算法

使用動態規劃解馬爾可夫模型預測問題。(求概率最大的路徑,這時一條路徑對應一個狀態序列)

根據動態規劃原理,如果最優路徑(狀態序列),在時刻t通過節點(狀態)i,那麼之後的部分路徑也一定是最優的。

即子路徑最優原則。

參見統計機器學習中的例子。很詳細。