隱馬爾可夫模型的Viterbi解碼演算法

2021-09-11 10:17:21 字數 1375 閱讀 5776

前面在做自然語言處理時涉及到一些詞性標註的工作,一般會使用隱馬爾科夫模型(hmm)來實現詞性標註,而hmm模型的解碼實現演算法一般就會使用viterbi演算法。

hmm模型有多種應用,這裡說的是其中乙個常見應用,即根據觀察序列找到最可能的隱含狀態序列。最樸素的想法就是直接窮舉所有可能的隱含狀態序列,並計算出每個組合成的狀態序列的概率,概率最大的那個組合序列即是最可能的隱含狀態序列。舉個水藻和天氣的例子,窮舉出所有可能的隱含狀態序列的概率,如下,

p(dry,damp,soggy | sunny,sunny,sunny), p(dry,damp,soggy | sunny,sunny,cloudy), p(dry,damp,soggy | sunny,sunny,rainy), . . . . p(dry,damp,soggy | rainy,rainy,rainy),最大值對應的序列即為最可能的隱含狀態序列。窮舉的路徑一共有3的t次方條,可以看到隨著序列還有狀態數的增加,計算量是非常大的。

這裡寫描述

上面的窮舉法需要的計算量很大,為減少複雜度引入viterbi演算法,viterbi演算法要解決的解碼問題就是多步且每步多重選擇的最優選擇的問題。根據下圖就能很清晰看到viterbi的核心思想,隨著時刻增加,每個節點都儲存了前一時刻所有節點到該節點的最優值的子路徑,如圖中紅色箭頭,當前時刻的某一節點可能的路徑為上一時刻所有節點到該節點的路徑,但我們只保留其中一條最優路徑。依次計算完所有步後,最後通過回溯的方法得到整個過程的最優路徑。

這裡寫描述

下面用乙個例子說明整個過程,假設有3中狀態,序列為t個時刻,p(a1)表示a1節點的值,p(b1)表示b1節點的值,同理其他的節點也一樣。對於不同時刻,狀態之間的轉換概率是不變的,所以p(aa)表示從a狀態轉移到a狀態的概率,不管是從1時刻到2時刻,還是從2時刻到3時刻,都是相同的。同理還有p(ab)、p(ac)、p(ba)...。

這裡寫描述

t+1時刻節點值的計算公式為

其中x,y都屬於a,b,c一種狀態。

我們計算t=2時刻的p(a)的值,它可能從a1到a2、b1到a2或c1到a2,假如a1到a2這條路徑計算出來的p(a)最大,那麼就保留該路徑。同理分別計算p(b)和p(c)的最大值,保留b1到b2的路徑,b1到c2的路徑。接著計算t=3時刻的p(a)、p(b)和p(c),最後到達t時刻,計算該時刻最大的p(a)、p(b)和p(c),選擇出它們最大的值的節點,再根據保留的上一時刻的路徑依次往前回溯,就得到最優的序列。比如ct是最大的節點,那就是

即最可能的序列為bcb...cc。

*****===廣告時間*****===

鄙人的新書《tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以到 item.jd.com/12185360.ht… 進行預定。感謝各位朋友。

為什麼寫《tomcat核心設計剖析》

這裡寫描述

隱馬爾可夫模型

隱 馬爾可夫模型 hidden markov model,hmm 作為一種統計分析模型,創立於20世紀70年代。80 年代得到了傳播和發展,成為訊號處理的乙個重要方向,現已成功地用於語音識別 行為識別,文字識別以及故障診斷等領域。隱馬爾可夫模型是馬爾可夫鏈的一種,它的狀態不能直接觀察到,但能通過觀測...

隱馬爾可夫模型

對隱馬爾可夫模型的解釋,個人覺得一句簡單概括就是 在馬爾可夫鏈的情況下對每乙個狀態都加入乙個單獨輸出口,而我們把這個輸出口定為可視視窗,可把馬爾可夫鏈放到裡面藏起來。ok!這樣就是知道隱馬爾可夫模型的結構了。通過如下例子來說明hmm的含義。假定乙個暗室中有n個口袋,每個口袋中有m種不同顏色的球,乙個...

隱馬爾可夫模型

搖色子的比喻很好 它解釋了模型的概念 模型的n個狀態 s 對應於色子的種類 隱狀態 真實不可見狀態s的序列,是每次用的色子種類d4 d6 d8組成的序列 觀測狀態 o 是可見的狀態,這裡是色子搖出的點數 觀測概率 是當確定用d4 d6 d8搖的色子的種類,求產生某種點數的概率 如 d4產生點數1的概...