解碼
HMM的隱鏈的狀態(tài)在很多情況下都是我們關(guān)心的量,甚至是我們構(gòu)建模型的目標(biāo);例如:在分詞和語音識別中就是如此隔箍。關(guān)于這個任務(wù),也有個經(jīng)典的高效算法脚乡,稱為Viterbi算法蜒滩。
給定模型參數(shù),給定觀測序列俯艰,我們想要求出與之對應(yīng)的最可能的隱狀態(tài)序列
,即求
锌订,其中
為鏈的狀態(tài)序列竹握,在
中取值。
因為我們的概率模型是關(guān)于隱變量和觀測變量
的聯(lián)合概率分布辆飘,因此我們希望引入
啦辐,顯然可以由貝葉斯公式得到:
Viterbi算法分為兩步,先計算出蜈项,再逆向得到最優(yōu)路徑
芹关。為了在第一步中高效地計算出最大概率,先要定義遞歸變量
紧卒,為了使得公式稍微簡介一些侥衬,引入記號:
則遞歸變量的定義為:
用語言敘述即:是 在遍歷前
時間步所有狀態(tài)路徑時,看到觀測
跑芳,并最終在時間步
處于狀態(tài)
進(jìn)而觀測到
的最大概率浇冰。下面推導(dǎo)變量
的遞歸表達(dá)式:
到目前為止,只是簡單地應(yīng)用了事件的概率乘法法則將其展開聋亡,看起來比較麻煩的式子肘习。注意到,這里有意分解出了一個遞歸項:
下面我們就可以應(yīng)用一系列條件獨立性將其化簡坡倔,包括:
代入到上面的中得到:
這里的漂佩,不妨用整數(shù)
來代替脖含;回想前面定義的轉(zhuǎn)移概率和觀測概率,有
养葵,所以:
Remark:上面推導(dǎo)過程中將求n個狀態(tài)上的聯(lián)合最大值,化為
這樣的及聯(lián)求最大值是成立的瘩缆。
有了遞歸公式关拒,我們就可以從時間步1開始計算,根據(jù)定義有:
最后庸娱,我們回溯得到最優(yōu)序列:
利用上面遞歸式着绊,我們從開始計算,在每一時間步n熟尉,對每個狀態(tài)
計算出
形成一列归露,最后得到一張
的表格。而最優(yōu)序列對應(yīng)的概率就在表格的最后一列之中斤儿。
設(shè)當(dāng)時剧包,
達(dá)到最大值,因此接上面推導(dǎo)有:
其中:是使得
取最大值的那個狀態(tài)往果。如此反復(fù)下去疆液,就得到了最優(yōu)狀態(tài)路徑
。