人工智能裏的數學修煉 | 隱馬爾可夫模型:前向後向算法

人工智能裏的數學修煉 | 概率圖模型 : 隱馬爾可夫模型
人工智能裏的數學修煉 | 隱馬爾可夫模型:前向後向算法
人工智能裏的數學修煉 | 隱馬爾可夫模型 : 維特比(Viterbi)算法解碼隱藏狀態序列
人工智能裏的數學修煉 | 隱馬爾可夫模型:基於EM的鮑姆-韋爾奇算法求解模型參數
已經較爲清楚的講述了隱馬爾可夫模型及其在實際應用的三個問題:1. 生成觀察序列概率, 2. 預測問題, 3. 模型參數學習問題。
這裏介紹求解第一個生成觀察序列概率的前向後向算法,前向後向算法實際上是兩個算法的合成,即前向算法和後向算法,二者相似,這裏主要以前向算法爲例進行介紹

一、前向算法

前向算法針對的是隱馬爾可夫模型的概率計算問題,即給定一個模型參數已知的隱馬爾可夫模型(HMM)和一組觀測序列x1,x2,...,xnx_{1},x_{2},...,x_{n},求HMM生成這組觀測序列的概率

前向算法定義了一個“前向概率”的定義,即:
給定隱馬爾可夫模型λ\lambda,定義1到t時刻部分的觀測序列爲x1,x2,...,xtx_{1},x_{2},...,x_{t},則t時刻的狀態xtx_{t}ii的概率qiq_{i}爲前向概率, 記做
ct(i)=P(x1,x2,...,xt,ii=qiλ)c_{t}(i)=P(x_{1},x_{2},...,x_{t},i_{i}=q_{i}|\lambda)

定義說明:由於每個狀態生成一個觀測變量,那麼在tt時刻就會生成tt個觀測變量,在tt時刻處於狀態ii的概率就是前向概率。狀態ii的的取值範圍爲o1,o2,...,oMo_{1},o_{2},...,o_{M},詳見 人工智能裏的數學修煉 | 概率圖模型 : 隱馬爾可夫模型

利用定義的前向概率,可以很容易的從1到遞推到tt得到觀測序列概率P(x1,x2,...,xtλ)P(x_{1},x_{2},...,x_{t}|\lambda),共有三步:

  1. 計算初值(t=1)
    c1(i)=πjbji,j={1,2,...,N}c_{1}(i)=\pi_{j}b_{ji}, j=\{1,2,...,N\} 這裏πj\pi_{j}表示初始狀態下狀態變量爲jj的概率, bjib_{ji}表示從狀態jj推出觀測ii的輸出觀測概率
  2. 遞推環節,對於t=1,2,...,T1t=1,2,...,T-1
    ct+1(i)=[k=1Nct(k)akj]bji,k=1,2,...,Nc_{t+1}(i)=[\sum_{k=1}^{N}c_{t}(k)a_{kj}]b_{ji},k=1,2,...,N這裏的akja_{kj}表示由狀態kk轉移到狀態jj的狀態轉移概率,bjib_{ji}表示由狀態jj推出觀測ii的輸出觀測概率
  3. 到達指定時刻T
    P(x1,x2,...,xtλ)=i=1NcTiP(x_{1},x_{2},...,x_{t}|\lambda)=\sum_{i=1}^{N}c_{T}{i}
    前向算法的求解過程其實是相當簡潔明瞭的,即從1到T時刻,對應於每一個觀測值xtx_{t}都計算其由前一時刻狀態轉移後狀態輸出概率各種可能的和。

二、後向算法

後向算法是前向算法的逆過程,定義了相應的“後向概率”,其原理其實是相似的,這裏不做多餘的贅述

三、更多資源下載

微信搜索“老和山算法指南”獲取更多下載鏈接與技術交流羣
在這裏插入圖片描述
有問題可以私信博主,點贊關注的一般都會回覆,一起努力,謝謝支持。

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