HMM——前向后向算法
1. 前言
解決HMM的第二個問題:學習問題, 已知觀測序列,需要估計模型參數,使得在該模型下觀測序列 P(觀測序列 | 模型參數)最大,用的是極大似然估計方法估計參數。根據已知觀測序列和對應的狀態序列,或者說只有觀測序列,將學習過程分為監督和無監督學習方法
主要參考《李航統計學習》、《PRML》
2. 監督學習方法
給定了s個長度相同的觀測序列和對應的狀態序列(相當于有s個樣本,所有樣本長度一樣)
然后我們需要做的就是統計三種頻率:
① 在樣本中,從t 時刻的各狀態轉移到 t+1時刻的各狀態的頻率,比如第一個狀態轉移到第二個狀態共有3次,第2個狀態轉移到第三個狀態共有10次,等。。。。。
據此能夠推導出狀態轉移概率
② 在樣本中,每對(某個狀態j,某個觀測k)出現的頻率,就是狀態為j 觀測為k的概率,即混淆矩陣
③在樣本中,統計s個樣本中初始狀態為?的頻率就是初始狀態概率πi
缺點就是:監督學習需要人工標注訓練數據,代價高
3.前向-后向算法
3.1 目標
其它稱呼有:Baum-Welch算法
主要針對只有觀測序列沒有對應的狀態序列的情況
這一部分在《統計學習方法》中推導的非常好,主要利用的是拉格朗日乘子法求解
已知:訓練數據是S個長度為T的觀測序列,沒有對應的狀態序列
求解:學習隱馬爾科夫的參數,包括:轉移矩陣、混淆矩陣、初始概率
思路:
因為HMM中引入了隱狀態,所以設隱狀態序列為I,那么HMM就可以當做一個具有隱變量的概率模型:
其實這個式子就有點像一種邊緣概率:
只不過將這個概率加了一個條件,是在HMM的模型參數下計算的,就變成了條件概率。
求解的時候利用E-M算法求解即可(EM中,E代表expectation,是求期望;M代表的是maximization,求極大;合起來EM算法就被稱為期望值最大化算法)
3.2 EM步驟簡述
摘自《統計學習方法》
輸入:觀測變量數據Y,隱變量數據Z,聯合分布 P(Y, Z | θ),條件分布 P( Z | Y , θ)
輸出:模型參數 θ
步驟:
① 選擇參數初值,開始迭代
② E步:記為第 i 次迭代參數θ的估計值,在第 i+1 次迭代E步,計算
第二個等式的第二項是給定觀測數據Y和當前的估計參數下隱變量數據Z的條件概率分布
③ M步:求使得極大化的θ,確定第 i+1 次迭代的參數的估計值
④ 重復第②和③步,直到收斂
3.3求解HMM模型參數
(1) 確定完全數據的對數似然函數
觀測數據:
隱藏數據:
完全數據:
完全數據的對數似然函數就是
②EM算法之E:求Q函數
式子中是HMM模型參數的當前估計值,λ 是要極大化的HMM模型參數
對于前面一半,根據概率有向圖的聯合概率分布,我們知道
兩式相乘就可以得到:
根據P(O,I | λ)可以將 Q 函數可以改寫為:
式中的求和是對所有訓練數據的序列長度T進行的
③ EM算法之M:極大化Q函數求解模型參數π、A、B
觀察E步驟的式子發現三個參數剛好分別在三項中,所以單獨對每一項求解就行了
第一步先求π:
注意,π只與初始狀態有關,第一項可以寫成
意思就是在模型參數已知的條件下,初始時候的各種狀態以及對應的初始觀測的概率的和
限制條件就是對于某種觀測,初始的所有狀態,其概率和為1,例如,第一天觀測為晴天時候,海藻的干燥、濕潤、潮濕三個狀態概率和為1
那么就可以根據拉格朗日乘法計算了,設
那么令其偏導數等于零
對 i 求和得到
再帶回偏導為0的式子中得到
第二步求轉移矩陣A
將第二項改寫為
找到約束條件為
意思就是上一個隱狀態到當前所有隱狀態的轉移概率和為1,比如今天是晴天,那么到明天得隱狀態轉移:晴天->多云,晴天->雨天,晴天->晴天的概率和為1
依舊根據拉格朗日乘子法得到
第三步求混淆矩陣
將第三項改寫為
找到約束條件為
也就是說一個隱狀態對應的所有觀測概率和為1,比如天氣為晴天的時候,對應的海藻干燥、濕潤、潮濕的概率和為1
但是有一個需要注意的是只有當觀測狀態為當前所求導的狀態時候,對的偏導數才不為0,其實也就相當于的時候才是偏導不為0,書中用表示,最終偏導以后求得:
3.4 Baum-Welch算法
該求得都求了,那么具體的HMM模型參數估計算法就是:
輸入:觀測數據
輸出:HMM的模型參數
(1) 初始化:
對n=0,選取得到模型
(2) 遞推,對n=1,2,...
分別計算上面的三個偏導
(3) 計算到最后一次迭代就得到最終結果了
后續分析一下HMM的代碼再另行添加
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的HMM——前向后向算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS——inline-block属性
- 下一篇: Unity3D之UGUI学习笔记(二):