在隱馬爾科夫模型中,評估和解碼都是需要在已知模型引數的情況下進行的,但是我們往往並不知道這個模型引數,只有能夠得到的觀察序列,因而我們需要對模型引數進行估計,這便是隱馬爾科夫模型的學習問題。
前向-後向演算法,通過乙個給定的觀察序列,對模型引數進行估計,並通過迭代計算不斷地對模型引數進行調整,直到達到最優,即使得在該模型引數下給定的觀察序列概率達到最大。
前向演算法在隱馬爾可夫模型之前向演算法和維特比演算法中已有介紹,後向演算法和前向演算法類似。
再次定義一下前向演算法中的區域性概率,將其稱為前向變數,後向演算法中同樣有後向變數為β_t (i)。
β_t (i) = p(o_t+1, o_t+2, ..., o_t | q_t = i, ϕ);ϕ表示為乙個hmm模型。
1. 初始化
β_t (i) = a_ie,1 <= i <= n;e為終止狀態,a_ie = 1;
2. 遞迴
3. 終止
重估轉移概率a_ij:
a_ij = c(q_i -> q_j) / ∑_k▒ c(q_i -> q_k);c(q_i -> q_j)表示從q_i轉移到q_j的數目。
定義在給定模型ϕ和觀察序列o_1...t時,t時刻處在狀態i,t+1時刻處在狀態j的概率為ξ_t:
ξ_t (i,j) = p(q_t = i, q_t+1 = j | o, λ)
ξ_t (i,j) = a_t(i) * b_t(i) / (a_t (a_f));重估混淆矩陣b:轉移概率:
定義在給定模型和觀察序列下,在時刻t處在狀態j的概率為γ_t (j):
混淆矩陣:(ps:前向-後向演算法理解的並不是很好,大多公式都是從網上截圖下來的。。)
馬爾科夫模型與隱馬爾科夫模型
隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...
隱馬爾科夫模型
隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...
隱馬爾科夫模型
一 介紹 introduction 我們通常都習慣尋找乙個事物在一段時間裡的變化模式 規律 這些模式發生在很多領域,比如計算機中的指令序列,句子中的詞語順序和口語單詞的因素修咧等等,事實上任何領域中的一系列事件都有可能產生有用的模式。考慮乙個簡單的例子,有人試圖通過一片海藻推斷天氣 民間傳說告訴我們...