隱馬爾可夫模型:狀態序列估計問題(維特比算法)
維特比(Viterbi)算法用於求解HMM的第二個問題,即給定觀察序列O=O1O2⋯OT和模型μ=(A,B,π),選擇在一定意義下“最優”的狀態序列Q=q1q2⋯qT,使得該狀態序列“最好地解釋”觀察序列。該問題的答案並不唯一,它取決於對“最優狀態序列”的理解。一種理解是,使該狀態序列中每一個狀態都單獨地具有最大概率,即使γt(i)=P(qt=si∣O;μ)最大。
根據貝葉斯公式,
γt(i)=P(qt=si∣O;μ)=P(O;μ)P(qt=si,O;μ)=∑i=1Nαt(i)βt(i)αt(i)βt(i)(6-19)
則t時刻的最優狀態爲
q^t=1≤i≤Nargmaxγt(i)
這種只考慮使每個狀態的出現都單獨達到最大概率而忽略狀態序列中相鄰兩個狀態之間關係的“最優狀態序列”,可能導致相鄰兩個狀態qt、qt+1之間的轉移概率爲0,即aq^tq^t+1=0。因此,這種“最優狀態序列”可能爲非法序列。
通常,對“最優狀態序列”的理解爲:在給定模型μ)和觀察序列O的條件下,使條件概率P(Q∣O;μ)最大的狀態序列,即
Q^=QargmaxP(Q∣O,μ)(6-20)
這種理解可避免“斷序”問題。維特比算法運用動態規劃搜索算法求解這種最優狀態序列。
定義6-3(維特比變量δt(i)):在t時刻,HMM沿某一條路徑到達狀態si,並輸出觀察序列O=O1O2⋯Ot的最大概率:
δt(i)=q1,q2,⋯,qt−1maxP(q1,q2,⋯,qt−1,qt=si,O1O2⋯Ot;μ)(6-21)
遞歸關係爲:
δt+1(i)=bi(Ot+1)jmaxδt(j)aji(6-22)
爲記錄t時刻,HMM通過哪一條概率最大的路徑到達狀態si,維特比算法設置變量ψt(i)保存路徑,ψt(i)記錄該路徑上狀態si的前一個(t−1時刻)狀態。
算法6-3(維特比算法,Viterbi algorithm)
- 初始化
δ1(i)=πibi(O1), 1≤i≤N
ψ1(i)=0
- 歸納計算
δt(j)=bj(Ot)1≤i≤Nmaxδt−1(i)aij, 2≤t≤T,1≤j≤N
記憶回溯路徑:
ψt(i)=1≤i≤Nargmaxδt−1(i)aij
- 終結
Q^T=1≤i≤NargmaxδT(i)
P^(Q^T)=1≤i≤NmaxδT(i)
- 路徑(狀態序列)回溯:
q^t=ψt+1(q^t+1), t=T−1,T−2,⋯,1
維特比算法的計算時間複雜度爲O(N2T)。實際應用中,通常搜索n個最佳(n-best)路徑,因此,格架的每個結點上需要記錄m個最佳(m-best,m<n)狀態。