【ML-13-3】隱馬爾科夫模型HMM--Baum-Welch(鮑姆-韋爾奇)
【ML-13-4】隱馬爾科夫模型HMM--預測問題Viterbi(維特比)算法
目錄
- 基礎--HMM常用概率的計算
- HMM模型參數求解概述
- Baum-Welch算法原理
- Baum-Welch算法推導
- Baum-Welch算法總結
一、基礎--HMM常用概率計算
利用前向概率和后向概率,我們可以計算出HMM中單個狀態和兩個狀態的概率公式。
1.1 單個狀態的概率
求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si的概率,記做:
單個狀態概率的意義主要是用於判斷在每個時刻最可能存在的狀態,從而可以得到一個狀態序列作為最終的預測結果。
利用前向概率和后向概率的定義可知:
由上面兩個表達式可知:
1.2 兩個狀態的聯合概率
求給定模型λ和觀測序列Q的情況下,在時刻t處於狀態si並時刻t+1處於狀態sj概率,記做:
1.3 上述兩種求和可以得到:
二、HMM模型參數求解概述
在本篇我們會討論HMM模型參數求解的問題,即已知觀測序列Q={q1,q2,...,qT},估計模型λ=(A,B,π)的參數,使得在該模型下觀測序列P(Q|λ)最大。這個問題在HMM三個問題里算是最復雜的。在研究這個問題之前,建議先閱讀這個系列的前兩篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理總結
HMM模型參數求解根據已知的條件可以分為兩種情況。第一種情況較為簡單,就是我們已知D個長度為T的觀測序列和對應的隱藏狀態序列,直接利用大數定理的結論"頻率的極限是概率",直接給出HMM的參數估計;
1.1 假設所有樣本中初始隱藏狀態為qi的頻率計數為S(i),那么初始概率分布為:
1.2 假設樣本從隱藏狀態qi轉移到qj的頻率計數是Sij,那么狀態轉移矩陣求得為:
1.3 假設樣本隱藏狀態為qj且觀測狀態為vk的頻率計數是qjk,那么觀測狀態概率矩陣為:
可見第一種情況下求解模型還是很簡單的。但是在很多時候,我們無法得到HMM樣本觀察序列對應的隱藏序列,只有D個長度為T的觀測序列,此時我們能不能求出合適的HMM模型參數呢?這就是我們的第二種情況,也是我們本文要討論的重點。它的解法最常用的是鮑姆-韋爾奇算法(Baum-Welch),其實就是基於EM算法的求解,只不過Baum-Welch算法出現的時代,EM算法還沒有被抽象出來,所以我們本文還是說鮑姆-韋爾奇算法法。這也提示我們抽象一種具體算法可能也是很重要的工程。
三、Baum-Welch算法原理
在M步,我們極大化上式,然后得到更新后的模型參數如下:
四、Baum-Welch算法推導
我們需要先計算聯合分布P(Q,I;λ)的表達式如下:
E步得到的期望表達式為:
在M步要極大化上式:
- 我們看看對模型參數Π的求導。由於Π只在上式中括號里的第一部分出現,因此我們對於Π的極大化式子為:
極大化上式,使用拉格朗日乘子法:
求和相加可得:
再代入可得到:
- 極大化L,使用拉格朗日乘子法,求解aij的值:
- 同理:極大化L,使用拉格朗日乘子法,求解bij的值
- 匯總:極大化L函數,分別可以求得π、a、b的值。
五、Baum-Welch算法總結
這里我們概括總結下鮑姆-韋爾奇算法的流程。
輸入: D個觀測序列樣本
輸出:HMM模型參數
具體流程:
1)隨機初始化所有的πi,aij,bij
2) 對於每個樣本d=1,2,...D,用前向后向算法計算γ,ξ
3) 更新模型參數:
4) 如果πi,aij,bij的值已經收斂,則算法結束,否則回到第2)步繼續迭代。