HMM

Blackteaxx發表於2024-05-08

1. Background

頻率派:定義 loss function 並進行最佳化
貝葉斯派:計算後驗機率,使用數值積分的方式計算

2. HMM

HMM 是一個屬於機率圖模型中的動態模型(ref:機率圖模型),並不要求資料是獨立同分布的,又是一個混合模型

HMM 中的變數可以分為兩組,一組為狀態變數\(y=\{y_1, \dots, y_n \}\),其中\(y_i\)表示第 i 時刻狀態,一組為觀測變數\(x= \{x_1, \dots, x_n \}\),狀態變數是隱藏的,觀測變數是可見的,因此狀態變數又被稱作隱變數。

系統常在多個狀態中轉移,如果狀態變數是離散的,那麼 動態模型就為 HMM,如果狀態變數是連續的,那麼動態模型就是 Kalman Filter / Parlide filter。

flowchart TD subgraph one y1-->x1 end subgraph two y2-->x2 end subgraph three ... end y1 --> y2 y2 --> ...

根據機率圖模型筆記中的因子分解,HMM 的聯合機率分佈可以寫成:

\[p(x,y) = p(y_1) p(x_1|y_1) \prod_{i=2}^n p(y_i|y_{i-1}) p(x_i|y_i) \]

引數

除去結構資訊之外,HMM 還有三個引數\(\lambda = [A, B, \pi]\), \(A\)為狀態轉移矩陣,\(B\)為輸出觀測矩陣,\(\pi\)為初始狀態機率。

假設狀態變數的取值為\(S=\{s_1, \dots, s_n\}\),觀測變數的取值為\(O=\{o_1, \dots, o_m\}\),則有:

  • 狀態轉移機率

    \[a_{ij} = p(y_{t+1}=s_j|y_t=s_i) \]

  • 輸出觀測機率

    \[b_{jk} = p(x_t=o_k|y_t=s_j) \]

  • 初始狀態機率

    \[\pi_i = p(y_1=s_i) \]

兩個假設

  1. 齊次馬爾科夫性假設(無後效性):當前時刻的狀態只與前一個時刻的狀態有關,與其他時刻無關
    \(p(s_t | x_1, \dots s_{t-1},s_{t+1},\dots, s_{p}) = p(s_t | s_{t-1})\)
  2. 觀測獨立性假設:當前時刻的觀測只與當前時刻的狀態有關,與其他時刻的狀態和觀測值無關
    \(p(o_t|s_1,\dots,s_t,o_1,\dots, o_{t-1}) = p(o_t|s_t)\)

三個問題

  1. Evaluation Problem:給定模型\(\lambda\)和觀測序列\(O\),計算在模型\(\lambda\)下觀測序列\(O\)出現的機率。一般使用前向演算法或者後向演算法計算。
  2. Learning Problem:給定觀測序列\(O\),估計模型\(\lambda\),使得在該模型下觀測序列\(O\)出現的機率最大。一般使用 Baum-Welch/EM 演算法進行估計。
  3. Decoding Problem:給定模型\(\lambda\)和觀測序列\(O\),求解最有可能的狀態序列\(S\),即\(S = \arg \max_S P(S|O;\lambda)\)
    1. 預測:\(p(s_{t+1}|s_1, \dots, s_t)\)
    2. 濾波:\(p(s_t|o_1, \dots, o_t)\)

例如在 Text-to-Speech 中,HMM 可以用來建模音素的序列,狀態變數表示音素,觀測變數表示音訊訊號,狀態轉移機率表示音素之間的轉移機率,輸出觀測機率表示音素對應的音訊訊號的機率。