1. 程式人生 > >第九講:產生式模型:NaiveBayes, HMM(下)

第九講:產生式模型:NaiveBayes, HMM(下)

目錄

1 引言

2 隱馬爾科夫模型(HMM)

2.1 模型介紹

2.2 HMM概率計算問題及其求解演算法

2.3 預測與學習

2.4 HMM與動態系統

3 小結

參考文獻

 

1 引言

 

上一講已經提到生成式模型中的樸素貝葉斯演算法。作為生成式模型中的一員,樸素貝葉斯主要對聯合概率分佈進行建模,通過假設各個輸入特徵之間條件獨立,簡化概率計算得到聯合分佈。該模型在垃圾郵件過濾等領域有著廣泛的應用,但是,該模型“特徵之間條件獨立”這一較強的假設顯得並不符合實際。

 

本講將介紹一種新的生成式模型—隱馬爾科夫模型(HMM)。與樸素貝葉斯不同,HMM中變數分為狀態變數(隱變數)Y

與觀測變數X,兩種變數之間的依賴關係可以對實際應用中變數的相互作用進行描述,同時,HMM中X是按照時間先後順序由Y生成,故可以廣泛地應用於時序建模中。本文將在一階HMM的基礎上,推導HMM中三大問題—聯合概率的求解預測學習的求解公式,並在此基礎上推導動態系統中濾波與平滑演算法核心公式。

 

2 隱馬爾科夫模型(HMM)

 

2.1 模型介紹


 

考慮如下問題:四個盒子,每個盒子裡裝有不同數目的紅白兩色球,每次按照一定規則選取其中一個盒子有放回抽取球,如何根據五次抽取結果推斷被抽取的盒子序列(後文稱“抓球問題”)?

 

由於每次選擇的盒子受到前幾輪選擇結果的影響(每次抓球后按照一定概率選取下一個盒子),故該問題很明顯不能用樸素貝葉斯求解。除此之外,該問題還具有明顯的時序特性。HMM作為一種時序生成式模型,可被應用到該問題的求解上。HMM中,變數被分為狀態變數和觀測變數。具體到該問題,我們可以觀測到抽取的球色序列,球的顏色即

,為長度為T的觀測變數,代表了T次實驗中每次觀測到的結果。此外,由於每個盒子紅白球數目不同,每次抽取的球色還決定於當前被選中的盒子,每次選擇的盒子作為狀態變數,亦被稱作馬爾科夫鏈,不能被觀測到。

 

2.1.1 HMM的基本假設與三要素

 

生成式模型的一個永恆話題便是聯合概率分佈的求解。如果X與Y各變數之間都相互有影響,那麼求解HMM的聯合分佈將十分複雜,為簡化問題,需要做出一些基本假設[1]。

 

  • 齊次馬爾科夫假設

該假設認為馬氏鏈中t時刻狀態只與t-1時刻狀態有關,而與其他時刻狀態和觀測無關。即:

 

  • 觀測獨立性假設

該假設認為t時刻的觀測僅與t時刻狀態有關而與其他狀態和觀測無關,即:

基於這兩個假設,聯合分佈的求解將得到極大簡化,這將在2.2節進行詳細闡述。構建HMM需要三個基本要素:

 

  • 狀態轉移概率

描述狀態i轉移到狀態j的概率,在上文的案例中,這代表t時刻從盒子i抓球而t+1時刻從盒子j抓球的概率,形式化為:

其中,N為狀態數目(盒子數目)。

 

  • 初始狀態

描述初始時刻處於各個狀態的概率,在上文的案例中代表初始時刻從N個盒子中抓球的概率,是一個N維向量。

  • 觀測概率

描述當前狀態生成各個觀測的概率。在上文的案例中,代表t時刻從盒子i中抓到顏色為k的球的概率。

上式中M為觀測的類別數,即球的顏色數目。

圖 1 HMM圖模型

圖1形象地展示了HMM各變數之間的關係。當前時刻的狀態可以由上一時刻隱變數的取值和狀態轉移概率矩陣A計算得到,同時,當前時刻狀態與觀測矩陣B可生成一個觀測。HMM的模型引數完全由狀態轉移矩陣A、觀測矩陣B和初始狀態決定。總共含有(N-1)N+N(M-1)+(N-1)=N(N+M-1)-1個引數。後文將把HMM記作

 

2.1.2 HMM三大基本問題

 

討論HMM時,我們關心的是它的三要素、狀態變數和馬氏鏈生成的觀測變數。圍繞這三個部分,可以得出HMM中的三個基本問題。

  • 概率計算問題

該問題針對觀測變數而言,當給定一個馬爾科夫模型和觀測序列X後,如何確定該觀測發生的概率?對應到抓球問題,即根據和球色序列X,求解抓出這種球色序列的概率。

由於該問題中Y作為狀態序列不能被觀測到,所以上式採用隱變數加和的方式,將狀態變數X的邊緣分佈求解問題轉化成聯合概率的求解問題,從而回歸到生成式模型的永恆主題—聯合分佈的求解。該問題的求解可使用前向(後向)演算法,將在2.2節進行詳細的討論。

 

  • 狀態變數的預測

在已知模型和觀測序列X的情況下,如何推斷產生這種觀測的狀態序列?對應到抓球問題,即根據觀測到的球色,對每次抓球的盒子進行推斷。

上式推斷從k(k=1,2,…M)號盒子中取出球的概率。通過全域性對比最大值,得出每次取出的球最可能來自哪個盒子。求解該問題可使用與前向演算法極其相似的Viterbi演算法,將在2.3節進行詳細闡述。

 

  • 學習問題

該問題即HMM引數估計問題,根據得到的一系列觀測序列,估計模型的三要素。該問題又可分為兩大類子問題—有監督HMM學習與無監督HMM學習。兩者的區別在於是否知道狀態序列。對應到抓球問題中,即根據多次抓球觀測到的球色序列,計算HMM的狀態轉移矩陣A、觀測矩陣B與初始概率(有監督學習還知道每次取的球是從那個盒子裡來的)。可以猜測,有監督的學習問題根據極大似然估計建立對數似然函式進行求解,而無監督學習則根據EM演算法不斷優化似然函式下界求解模型引數。該問題將在2.3節進行詳細闡述。

 

為了與上一講的推導銜接,這裡我們統一採用上一講中的符號表示,即觀測序列上述X用O來表示,狀態序列Y用I來表示。則HMM的三個基本問題形式化為:

 

2.2 HMM概率計算問題及其求解演算法


 

2.2.1 直接求解

 

概率計算問題關鍵在於聯合概率分佈的計算。給定模型和觀測X。直接計演算法按下式計算邊緣概率:

 

稍微分析一下就可以發現,對於某個長度為T的狀態序列,求和需要花費O(T)時間,由於狀態序列共有NT種,故直接計算的演算法時間複雜度為O(TNT)。對於稍長的馬氏鏈來說,其聯合分佈的計算時間是難以忍受的。

 

2.2.2 前向演算法

 

有沒有方法能夠降低演算法的時間複雜度?直接計演算法通過列舉所有可能的狀態序列來求解概率,由於每次計算新狀態序列對應的概率時,會重複計算每個求和號中的結果,所以直接計演算法存在大量重複的運算。

 

考慮一般的多級求和問題的求解

圖 2 一般多級求和問題

 

每個靠外的求和問題都依賴於內部求和問題的求解。故每次求解時,可以儲存子問題的求解結果,避免重複計算。

 

在上一講的末尾,我們討論了當只有一個觀測、兩個觀測、三個觀測的時候的值。回顧一下:

發現規律之後,其實已經得到了概率計算的前向演算法

有了上述推導之後,在來看概率計算問題:

 

對於原本時間複雜度很高的問題,可通過變數消除法來解決,首選計算出,消去,然後據此可得到,依次類推,從內到外,依次消除變數。

 

本質上來說,的計算也是一個sum-product的過程,

在t+1時刻,狀態取值為j的概率等於在t時刻狀態取值為i的概率乘以從狀態i轉移到狀態j的概率,因為在t時刻狀態有N種可能,因此對所有狀態求和(sum),然後乘以在t+1時刻,狀態為j時產生觀測的概率(product)。

從概率的角度如何看待前向演算法呢?

 

公式第一行通過增加一個t時刻的狀態,在對i求和與原式等價,並在第二行使用貝葉斯公式展開第一項變為前向概率,後續推導繼續使用貝葉斯公式化簡。值得注意的是,由於t+1時刻的觀測與前面的觀測以及t時刻的狀態並沒有關係,故後一項條件概率可化簡為第三行的形式。

 

有了前面的分析,可以得到基於前向演算法的邊緣概率求解步驟如下:

圖 4 HMM前向演算法求解邊緣分佈

 

下面藉助“抓球問題”,介紹前向演算法求解HMM概率問題的步驟。

 

設抓球問題中有三個盒子,每個盒子中有紅白兩種顏色的球。模型引數為:

抓三次求得到的觀測序列X={紅,白,紅},求該觀測出現的概率。

 

  • Step1:初始值

初始值代表初始狀態從各個盒子中抽取球的概率分佈。第一觀測x1=紅,則計算出這種觀測來自的盒子的概率分佈為

 

上式求解的是第一次抽取的球來自各個盒子的概率。

 

  • Step2:遞推

由前向公式向前遞推計算到T=3時的前向概率

上式中,第二行第二項第一行代表從任意盒子轉移到一號盒子的概率,代表第二時刻從一號盒子拿球的概率。再結合一號盒子拿白球的概率為0.5,最終計算出第二時刻從一號盒子拿出白球的概率為0.077。類似地,可分析其他引數的實際含義。

進一步計算第三時刻的前向概率:

 

  • Step3:停止

計算得到邊緣分佈為:

我們再計算過程中可以感受到,每次計算前向概率時,都是由當前所有可能的狀態通過轉移概率轉移到某個固定的狀態qj,並對所有qj求和乘以觀測概率,得到下一時刻的前向概率。這一點可以從概率圖中得到直觀的反映。將在下一節介紹。

 

 

 

 

 

 

 

 

 

圖 5 前向演算法                     圖 6 後向演算法

相應的,有前向演算法就有後向演算法。後向演算法通過從後往前逆向計算“狀態路徑的最優結構”實現邊緣分佈的求解如圖6所示。可相似地給出後向概率的定義

以及後向概率遞推公式

藉助前後向概率,可推導一些有用的結論。

式2-23說明邊緣概率的計算可以由任意時刻t處的前向概率與後向概率得到。當t=1時,2-23轉化為後向演算法的求解公式,t=T時,轉換為前向演算法的求解公式。

 

後向演算法流程如下:

 

前後向概率通過動態規劃的思想,由於求解過程中儲存了子問題的解,使得二者能以較低的複雜度解決HMM中變數聯合分佈與邊緣分佈的求解問題。

 

2.3 預測與學習


 

預測(解碼)問題需求解以下概率:

對k=1,2,…N,該概率代表第t次觀測對應的狀態為k的概率,解碼問題希望找到最優的狀態組合

,使得整條狀態路徑能以最大概率產生觀測到的觀測序列,該問題可形式化地表示為:

如果我們貪心地求解該問題,即每次求解第i個狀態時,都以最大者作為當前狀態的估計值,那麼演算法可能會陷入區域性最優,無法找到最合適的狀態路徑。

 

考慮使用動態規劃求解該問題。假設求解馬氏鏈長度為S的HMM解碼問題時,設最優路徑為pS那麼容易證明求解規模為S+1的解碼問題時,其最優路徑必定是pS與後續解碼問題中較短路徑的組合。因此,在求解較大規模HMM的解碼問題時,可通過遞推求解較小規模的子問題實現。

 

具體到抓球問題中,仍使用前文定義的引數,推斷每次抓的球來自哪個盒子。求解該問題首先要定義如下概率:

代表t時刻的N種狀態中能使前向概率達到最大值的概率值。類比前向概率遞推式,可寫出該概率的遞推計算式:

則求解按照如下步驟進行:

 

  • Step1:初始化

第一觀測x1=紅,則計算出這種觀測來自的盒子的概率分佈為

 

  • Step2:前向推導

根據式2-26遞推求解δ函式的值,結合圖5可知,演算法每次求解到達狀態j,並且滿足該狀態下觀測的取值時,最短的路徑。

 

當t=2時,

記錄此子路徑最大概率值對應的狀態號,φ(y2=1)=3。

 

同理,可計算

對應狀態號

 

對應狀態號

 

重複迭代,當t=3時,

對應狀態號

 

對應狀態號

 

對應狀態號

 

  • Step3:終止

根據最後一輪迭代結果求解最優路徑概率:

  • Step4:回溯求解路徑

反向回溯最優路徑,知盒子序列為(3,3,3)。

 

可見,動態規劃每次都只儲存子部分的最優值(最優子路徑),從而找到從開始到結束的最短路徑。如圖7,找到最優路徑概率後,根據對應節點記錄的最優路徑來路,回溯上一時刻的狀態,即可完成問題的解答。

圖 7 DP求解解碼問題[2]

 

上述過程即Viterbi演算法,該演算法核心為動態規劃,故與前向演算法十分相似,具體求解流程圖如下。

圖 8 Viterbi演算法

 

HMM最後一大類問題為學習問題。根據一系列狀態變數和觀測變數的樣本,求解HMM三要素。該問題可分為有監督學習和無監督學習。無監督學習需要使用EM演算法求解,將在下一講介紹。本講只介紹有監督學習問題的求解。

 

求解有監督學習問題常使用極大似然估計,該方法認為出現的觀測往往對應著較高的概率,通過解析地表示出概率(似然函式),優化似然函式就可求得我們想要的某些概率,這就好比投擲一枚硬幣100次,若99次出現正面,則你會懷疑這枚硬幣是否被人動過手腳,因為只有硬幣正面朝上的概率很大,才能對該現象進行解釋(似然函式最大)。

 

推導過程如下:

上式為學習問題對應的似然函式,分為三部分,分別對應HMM中的三個引數。

 

對初始概率,可求得使似然函式最大的概率值:

直觀來看,初始概率即統計初始狀態中各個狀態出現的頻率,對應到抓球問題,即根據初始時刻各種盒子的統計資料,計算每種盒子出現的頻率。

 

同理,可推導轉移概率矩陣的學習公式

 

直觀解釋就是,根據樣本中不同狀態之間的轉移數目,計算某兩個狀態轉移的頻率,將其作為概率。

觀測概率的學習公式為

 

相似地,這可以被簡單的歸納為統計頻率的問題。這也比較符合通過頻率逼近概率的思想。

 

2.4 HMM與動態系統


 

本節介紹一些HMM重要公式,並介紹他們在動態系統中平滑和濾波問題中的應用。

 

直接上課件圖,

 

第一個公式在前面介紹預測問題時已經出現過,代表在已知觀測和模型引數的情況下,對t時刻狀態為i的概率進行估計,可以看出求解t時刻的狀態i概率問題可以轉化為t時刻前向概率與後向概率在此處乘積歸一化後的結果,只要求出前後向概率,就可用該公式快速計算出t時刻狀態為i的概率。

 

第二個公式計算的是相鄰兩個狀態分別為i和j的概率,再次說明了前後向概率在HMM相關概率計算中的重要性。第三個公式則建立了前兩個公式的聯絡。

 

利用第一個公式,可求解動態系統中的濾波問題。濾波問題指根據前t個時刻的觀測,計算t時刻狀態為某特定狀態的概率。分析可知,其概率求解模型就是上文介紹的第一個公式。濾波可以實現實時估計當前狀態隱變數的取值,因為求解濾波問題只需要得到直到當前狀態下的一系列觀測而不必考慮未來觀測的影響。

 

動態系統中,與濾波問題相似的一個問題便是平滑問題。平滑問題指根據當前收集到的觀測,估計歷史上某個時刻的狀態。由於比濾波問題具有更多的觀測樣本,所以平滑問題精度往往較濾波更高。但是它不能實時估計狀態變數的取值。平滑問題可轉換為濾波問題求解。具體參考參考文獻[3],兩類動態系統中的常見問題均可使用上文提到的重要公式進行計算。

 

3 小結


 

作為一種時序生成式模型,HMM在語音識別,手勢識別中得到了廣泛應用。由於HMM計算複雜,常見的建模方式均是基於一階HMM實現的,如果實際應用中發現效果不好,可通過提升模型階數來改善。

 

HMM中三大基本問題,均離不開聯合概率分佈的求解,但直接求解聯合分佈將面臨極高的時間複雜度,為此,前向演算法使用動態規劃的思想儲存前向概率,從而降低了演算法的時間複雜度,動態規劃這一基本思想還衍生出了Viterbi演算法用於處理HMM的預測問題。

下一講將介紹貝葉斯學習方法與EM演算法。

 

注:文中所有推導均可在課件中找到,回覆「課件」二字即可獲取,另外因為本次內容公式較多,提供有word版本方便閱讀,回覆「HMM」即可領取~

 

參考文獻


[1]李航 .統計學習方法[M]. 北京: 清華大學出版社, 2012: 171-189.

[2] https://www.zhihu.com/question/20136144, Viterbi演算法

[3] Stuart Russell, Peter Norvig. 人工智慧:一種現代方法[M]. 北京: 清華大學出版社, 2013: 473-487.