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 個觀察值對應的狀態序列的子串, 所以這是個動態規划問題.
滿足動態規划的兩個條件:
- 重疊子問題
- 最優子結構
所以現在我們需要確定的在表單中填寫什么, 這一直是動態規划最關鍵的一環.
很直觀的就是, 我們看看, 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\) 的概率為后向概率, 記作:
算法:
輸入: 隱馬爾可夫模型λ, 觀測序列 O
輸出: 觀測序列概率 P(O|λ)
(1) \(\beta_{T-1}(i) = b_i(o_T)\)
(2) 對 \(t = T-2, T-3,\cdots, 2, 1\)
\(P(O|λ) = \sum_{i=1}^N \pi_ib_i(o_1)\beta_1(i)\)
通過該公式, 設置 \(\beta_{T}(i) = 1\), 也可以,不過很難解釋其意義, 只有數學上計算而已.