隱馬爾可夫模型后向算法詳細推導


HMM 是關於時序的概率模型, 為\(\bf\color{red}{生成模型}\),

隱馬爾可夫模型描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。 隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱為狀態序列(state sequence);每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱為觀測序列(observation sequence)。序列的每一個位置又可以看作是一個時刻。

2個基本假設

1. 齊次馬爾可夫性的假設, 即假設隱藏的馬爾可夫鏈在任意時刻 t 的狀態只依賴前一時刻的狀態, 與其他時刻的狀態及觀測無關, 也與時刻無關

2. 觀測獨立性假設, 即假設任意時刻的觀測只依賴於該時刻的馬爾可夫鏈的狀態,與其他的觀測及狀態無關.

概率計算問題

給定模型 \(\lambda = (A, B, \pi)\) 和 觀測數據 \(O=(o_1, o_2, \cdots, o_3)\), 計算模型 λ 下觀測序列 O 出現的概率 P(O|λ), 由於直接計算法復雜度太高, 選擇其他方法

前向算法

直接計算方法有太多重疊的子問題, 比如對於只有最后一位 T 不同的 N 個狀態序列, 我們還是需要計算復雜度為 O(NT), 如果我們能將前 T -1 位的概率計算結果保存下來, 那我們只需要 O(N) 的計算復雜度. 而且該問題具有最優子結構, T-1 觀察序列對應的狀態序列必定在 T 個觀察值對應的狀態序列的子串, 所以這是個動態規划問題.

滿足動態規划的兩個條件:

  1. 重疊子問題
  2. 最優子結構

所以現在我們需要確定的在表單中填寫什么, 這一直是動態規划最關鍵的一環.

很直觀的就是, 我們看看, t 觀察序列可以如何通過 t-1 得到?

想知道第 t 個觀察值是吧, 那么我們需要先知道 t 個觀察值對應的狀態值 \(q_i\), 當然 t-1 序列不會包含 \(i_t=q_i\)的信息, 如果我們想知道 \(q_i\) 信息, 只能通過 \(i_{t-1}=q_j\) 來得知, 所以我們 t-1 序列提供的信息包含 \(i_{t-1}=q_j\), 即表中信息包含狀態碼, 知道了 \(q_i\), 知道對應觀測值概率事件很簡單的事.

后向算法

后項概率: 給定馬爾可夫模型λ, 定義在時刻 t 狀態的為 \(q_i\) 的條件下, 從 t+1 到 T 的部分觀測序列為\(o_{t+1}, o_{t+2},\cdots,o_T\) 的概率為后向概率, 記作:

\[\beta_{t}(i)=P(o_{t+1}, o_{t+2},\cdots,o_T|i_t=q_i,\lambda) \]

算法:
輸入: 隱馬爾可夫模型λ, 觀測序列 O
輸出: 觀測序列概率 P(O|λ)

(1) \(\beta_{T-1}(i) = b_i(o_T)\)
(2) 對 \(t = T-2, T-3,\cdots, 2, 1\)

\[\begin{align*} \beta_{t}(i) &= P(o_{t+1}, o_{t+2},\cdots,o_T|i_t=q_i,\lambda) \\ &=\sum_{j=1}^N{P(o_{t+1}, o_{t+2},\cdots,o_T, i_{t+1}=q_j|i_t=q_i,\lambda)} \\ &=\sum_{j=1}^N{P(o_{t+1}, o_{t+2},\cdots,o_T|i_{t+1}=q_j, i_t=q_i,\lambda)} \cdot P(i_{t+1}=q_j|i_t=q_i,\lambda)\\ &=\sum_{j=1}^N{P(o_{t+1}, o_{t+2},\cdots,o_T|i_{t+1}=q_j, i_t=q_i,\lambda)} \cdot a_{ij}\\ &=\sum_{j=1}^N{P(o_{t+1}, o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)} \cdot a_{ij}\quad \leftarrow 假設1 \\ &=\sum_{j=1}^N{P(o_{t+1}| o_{t+2},\cdots,o_T,i_{t+1}=q_j,\lambda)\cdot P(o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)} \cdot a_{ij}\quad \\ &=\sum_{j=1}^N{P(o_{t+1}|i_{t+1}=q_j,\lambda)\cdot P(o_{t+2},\cdots,o_T|i_{t+1}=q_j,\lambda)} \cdot a_{ij}\quad \leftarrow 假設2\\ &=\sum_{j=1}^N a_{ij}\cdot b_j(o_{t+1})\cdot \beta_{t+1}(j) \quad \end{align*}\]

\(P(O|λ) = \sum_{i=1}^N \pi_ib_i(o_1)\beta_1(i)\)

通過該公式, 設置 \(\beta_{T}(i) = 1\), 也可以,不過很難解釋其意義, 只有數學上計算而已.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM