【ML-13-3】隱馬爾科夫模型HMM--Baum-Welch(鮑姆-韋爾奇)
【ML-13-4】隱馬爾科夫模型HMM--預測問題Viterbi(維特比)算法
目錄
- 基礎--HMM常用概率的計算
- HMM最可能隱藏狀態序列近似算法
- Viterbi(維特比)算法
- Viterbi(維特比)算法舉例
HMM模型最后一個問題的求解:求給定觀測序列條件下,最可能出現的對應的隱藏狀態序列。即給定模型λ=(A,B,π)和觀測序列Q={q1,q2,...,qT},求給定觀測序列條件概率P(I|Q,λ)最大的隱含狀態序列 I。在閱讀本篇前,建議先閱讀這個系列的第一篇以熟悉HMM模型。
HMM模型的解碼問題最常用的算法是維特比Viterbi(維特比)算法,當然也有其他的算法可以求解這個問題。同時維特比算法是一個通用的求序列最短路徑的動態規划算法,也可以用於很多其他問題,比如文本挖掘的分詞原理中單獨用維特比算法來做分詞。
本文關注於用維特比算法來解碼HMM的的最可能隱藏狀態序列。
一、基礎--HMM常用概率的計算
利用前向概率和后向概率,我們可以計算出HMM中單個狀態和兩個狀態的概率公式。
1.1 單個狀態的概率
求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si的概率,記做:
單個狀態概率的意義主要是用於判斷在每個時刻最可能存在的狀態,從而可以得到一個狀態序列作為最終的預測結果。
利用前向概率和后向概率的定義可知:
由上面兩個表達式可知:
1.2 兩個狀態的聯合概率
求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si並時刻t+1處於狀態sj概率,記做:
1.3 上述兩種求和可以得到:
二、HMM最可能隱藏狀態序列近似算法
在HMM模型的解碼問題中,給定模型λ=(A,B,Π)和觀測序列,求給定觀測序列Q條件下,最可能出現的對應的狀態序列I={i1,i2,...iT},即P(I|Q)要最大化。直接在每個時刻t時候最優可能的狀態作為最終的預測狀態,使用下列公式計算概率值:
只要求得滿足使得上式概率最大的值,可以通過前向和后向求得。
近似算法很簡單,但是卻不能保證預測的狀態序列是整體是最可能的狀態序列,因為預測的狀態序列中某些相鄰的隱藏狀態可能存在轉移概率為0的情況。
而維特比算法可以將HMM的狀態序列作為一個整體來考慮,避免近似算法的問題,下面我們來看看維特比算法進行HMM解碼的方法。
三、Viterbi(維特比)算法
Viterbi算法實際是用動態規划的思路求解HMM預測問題,求出概率最大的"路徑",每條"路徑"對應一個狀態序列:
時刻t隱藏狀態為i所有可能的狀態轉移路徑i1,i2,...it中的概率最大值。記為δt(i):
由δt(i)的定義可以得到δ的遞推表達式:
計算時刻T最大的δT(i),即為最可能隱藏狀態序列出現的概率。
使得上式最大后,最終得到最有可能的隱藏狀態序列I∗={i∗1,i∗2,...i∗T}
四、Viterbi(維特比)算法舉例
4.1 例題
假設有三個盒子,編號為1,2,3;每個盒子都裝有黑白兩種顏色的小球,球的比例如下:
按照下列規則的方式進行有放回的抽取小球,得到球顏色的觀測序列:
- 按照π的概率選擇一個盒子,從盒子中隨機抽取出一個小球,記錄顏色后,放回盒子中;
- 按照某種條件概率選擇新的盒子,重復該操作;
- 最終得到觀測序列:"白黑白白黑
- 狀態集合:S={盒子1,盒子2,盒子3}
- 觀測集合:O={白,黑}
- 狀態序列和觀測序列的長度T=5
- 初始概率分布π
- 狀態轉移概率矩陣A
- 觀測概率矩陣B
在給定參數π、A、B的時候,得到觀測序列為"白黑白白黑",求出最優的隱藏狀態序列。
4.2 計算過程
最終盒子序列為: (2, 3, 2, 2, 3),詳細推到見下面的表格
附件一:手寫練習
附件二:考點