隱馬爾可夫模型:狀態序列估計問題

隱馬爾可夫模型:狀態序列估計問題(維特比算法)

維特比(Viterbi)算法用於求解HMM的第二個問題,即給定觀察序列O=O1O2OTO = O_{1} O_{2} \cdots O_{T}和模型μ=(A,B,π)\mu = (\mathbf{A}, \mathbf{B}, \mathbf{\pi}),選擇在一定意義下“最優”的狀態序列Q=q1q2qTQ = q_{1} q_{2} \cdots q_{T},使得該狀態序列“最好地解釋”觀察序列。該問題的答案並不唯一,它取決於對“最優狀態序列”的理解。一種理解是,使該狀態序列中每一個狀態都單獨地具有最大概率,即使γt(i)=P(qt=siO;μ)\gamma_{t}(i) = P(q_{t} = s_{i} | O; \mu)最大。

根據貝葉斯公式,

γt(i)=P(qt=siO;μ)=P(qt=si,O;μ)P(O;μ)=αt(i)βt(i)i=1Nαt(i)βt(i)(6-19)\begin{aligned} \gamma_{t}(i) & = P(q_{t} = s_{i} | O; \mu) \\ & = \frac{P(q_{t} = s_{i}, O; \mu)}{P(O; \mu)} \\ & = \frac{\alpha_{t}(i) \beta_{t}(i)}{\sum_{i = 1}^{N} \alpha_{t}(i) \beta_{t}(i)} \\ \end{aligned} \tag {6-19}

tt時刻的最優狀態爲

q^t=arg max1iNγt(i)\hat{q}_{t} = \argmax_{1 \leq i \leq N} \gamma_{t}(i)

這種只考慮使每個狀態的出現都單獨達到最大概率而忽略狀態序列中相鄰兩個狀態之間關係的“最優狀態序列”,可能導致相鄰兩個狀態qtq_{t}qt+1q_{t + 1}之間的轉移概率爲0,即aq^tq^t+1=0a_{\hat{q}_{t}\hat{q}_{t + 1}} = 0。因此,這種“最優狀態序列”可能爲非法序列。

通常,對“最優狀態序列”的理解爲:在給定模型μ)\mu)和觀察序列OO的條件下,使條件概率P(QO;μ)P(Q | O; \mu)最大的狀態序列,即

Q^=arg maxQP(QO,μ)(6-20)\hat{Q} = \argmax_{Q} P(Q | O, \mu) \tag {6-20}

這種理解可避免“斷序”問題。維特比算法運用動態規劃搜索算法求解這種最優狀態序列。

定義6-3(維特比變量δt(i)\delta_{t}(i):在tt時刻,HMM沿某一條路徑到達狀態sis_{i},並輸出觀察序列O=O1O2OtO = O_{1} O_{2} \cdots O_{t}的最大概率:

δt(i)=maxq1,q2,,qt1P(q1,q2,,qt1,qt=si,O1O2Ot;μ)(6-21)\delta_{t}(i) = \max_{q_{1}, q_{2}, \cdots, q_{t - 1}} P(q_{1}, q_{2}, \cdots, q_{t - 1}, q_{t} = s_{i}, O_{1} O_{2} \cdots O_{t}; \mu) \tag {6-21}

遞歸關係爲:

δt+1(i)=bi(Ot+1)maxjδt(j)aji(6-22)\delta_{t + 1}(i) = b_{i}(O_{t + 1}) \max_{j} \delta_{t}(j) a_{ji} \tag {6-22}

爲記錄tt時刻,HMM通過哪一條概率最大的路徑到達狀態sis_{i},維特比算法設置變量ψt(i)\psi_{t}(i)保存路徑,ψt(i)\psi_{t}(i)記錄該路徑上狀態sis_{i}的前一個(t1t - 1時刻)狀態。

算法6-3(維特比算法,Viterbi algorithm)

  1. 初始化

δ1(i)=πibi(O1), 1iN\delta_{1}(i) = \pi_{i} b_{i}(O_{1}), \ 1 \leq i \leq N

ψ1(i)=0\psi_{1}(i) = 0

  1. 歸納計算

δt(j)=bj(Ot)max1iNδt1(i)aij, 2tT,1jN\delta_{t}(j) = b_{j}(O_{t}) \max_{1 \leq i \leq N} \delta_{t - 1}(i) a_{ij}, \ 2 \leq t \leq T, 1 \leq j \leq N

記憶回溯路徑:

ψt(i)=arg max1iNδt1(i)aij\psi_{t}(i) = \argmax_{1 \leq i \leq N} \delta_{t - 1}(i) a_{ij}

  1. 終結

Q^T=arg max1iNδT(i)\hat{Q}_{T} = \argmax_{1 \leq i \leq N} \delta_{T}(i)

P^(Q^T)=max1iNδT(i)\hat{P}(\hat{Q}_{T}) = \max_{1 \leq i \leq N} \delta_{T}(i)

  1. 路徑(狀態序列)回溯:

q^t=ψt+1(q^t+1), t=T1,T2,,1\hat{q}_{t} = \psi_{t + 1}(\hat{q}_{t + 1}), \ t = T - 1, T - 2, \cdots, 1

維特比算法的計算時間複雜度爲O(N2T)\mathcal{O}(N^{2}T)。實際應用中,通常搜索nn個最佳(nn-best)路徑,因此,格架的每個結點上需要記錄mm個最佳(mm-best,m<nm \lt n)狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章