RNN的開端!最詳細推導HMM模型+例子(二):forward算法backward算法

詳細推導HMM算法+直觀例子+項目應用(二):forward算法與backward算法

HMM模型介紹

本文將幫您深入淺出的徹底理解HMM模型架構和其中用於參數估計的forward算法與backward算法,全文閱讀大約需要10分鐘,如果您希望親自手推公式,則總耗時約20分鐘。

本文爲HMM系列的第二篇,第一篇請見
RNN的開端!最詳細推導HMM算法推導+例子(一):維特比算法和模型建立

本文爲貪心學院課程的學習筆記,講師爲李文哲博士。
閱讀本文需要概率論中的概率相關與不相關的基礎知識。

HMM參數估計

在第一篇文章中,我們介紹瞭如何通過complete case,即已知所有參數的情況下,求解維特比算法,從而獲得隱藏狀態z的序列。
現在我們將介紹,如何通過incomplete case轉換成complete case,算法即是forward算法和backward算法,分別簡稱爲F算法和B算法。

FB算法的目標和拆分

Forward and Backward算法目標:計算P(zkz_{k}|x)
拆分成兩個算法:
F算法:P(zk,x1:kz_{k},x_{1:k})聯合概率
B算法:P(x1:kx_{1:k}| zkz_{k})

在這裏插入圖片描述
接下來對這兩個概率進行一點處理:

  • p(zk|x)正比於p(zk,x),只差常數項
  • P(x1:kx_{1:k}| zkz_{k}),希望知道條件獨立從而簡化P。條件獨立要求x1到k的全部信息全包含到了zk上,假設xk+1和x1到k條件獨立於zk。

根據D-seperation判斷出無關,則P(x1:kx_{1:k}| zkz_{k})可做如下簡化:
在這裏插入圖片描述
同理P(zk|x)也可以做簡化:
在這裏插入圖片描述

實際項目應用:Change Detection

假設通過HMM,在風控裏關心組團記賬,風險的東西,那麼需要知道,在哪些時間節點裏,網絡結構經過了很大變化,變化的時候就存在風險

方法1:直接比較網絡圖之間的相似度,如果相似度小於某個閾值,那麼久說明網絡經過了很大的變化
方法2:HMM模型法,隱式變量無法觀測到,能觀察到的是網狀結構,現在想知道那些地方出現了很大的變化。現在未必計算相似度,而是計算不同狀態下,生成網狀圖的可能性,用0,1序列表示狀態,0表示好,1表示風險高

只要評估p(zkzk+1x)p(z_{k} \not =z_{k+1}|x)是否超過閾值,就能知道k到k+1是否發生了突變。爲了計算p(zkzk+1x)p(z_{k} \not =z_{k+1}|x),可用FB算法

Forward算法詳解

在計算P(zk,x1:k)P(z_{k},x_{1:k})時,用遞歸的思想,想拆分成子問題P(zk1,x1:k1)P(z_{k-1},x_{1:k-1})乘以某個數。

則先邊緣化,再提取p(zk1,x1:k1)p(z_{k-1},x_{1:k-1})
在這裏插入圖片描述
右邊的式子目前仍然比較複雜,希望進一步簡化

其中,p(zk|zk-1,x1:k-1)很好算,第三個式子很像生成概率,接下來只要確認條件獨立,進行拆分
在這裏插入圖片描述
考慮概率獨立性,判斷zk是否依賴於zk-1和前面x1:k-1?

顯然是的,zk和x1:k-1條件獨立,因爲x1:k-1已經把一切都傳給了zk-1,因此把x1:k-1劃掉
在這裏插入圖片描述
同理,一旦包含zk,沒必要包含zk-1和前面一系列x
在這裏插入圖片描述
分別是:子問題+A矩陣可算+B矩陣可算,則此刻可以遞歸計算
同時注意 base case,即初始是什麼
在這裏插入圖片描述
Forward算法結束

Backward算法詳解

目標:計算和F算法相反的p(xk+1:n|zk),同樣希望拆分成子問題
在這裏插入圖片描述
同樣進行展開和提取
在這裏插入圖片描述
仍然採用邊緣化性質,zk和zk+1之後的xk+1:n無關
在這裏插入圖片描述
與F算法相反,從後往前算
在這裏插入圖片描述
該算法的複雜度:O(n*m2)

至此,forward和backward算法結束,HMM模型中我們獲得了概率。

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