2018-7-18
HMM模型參數求解是HMM模型使用中的最複雜的一個問題。
HMM模型參數求解概述
HMM模型參數求解根據已知的條件可以分爲兩種情況。
第一種情況較爲簡單,就是我們已知D個長度爲T的觀測序列和對應的隱藏狀態序列,即是已知的,此時我們可以很容易的用最大似然來求解模型參數。
假設樣本從隱藏狀態轉移到的頻率計數是,那麼狀態轉移矩陣求得爲:
假設樣本隱藏狀態爲且觀測狀態爲的頻率計數是,那麼觀測狀態概率矩陣爲:
假設所有樣本中初始隱藏狀態爲的頻率計數爲C(i),那麼初始概率分佈爲:
可見第一種情況下求解模型還是很簡單的。但是在很多時候,我們無法得到HMM樣本觀察序列對應的隱藏序列,只有D個長度爲T的觀測序列,即是已知的,此時我們能不能求出合適的HMM模型參數呢?這就是我們的第二種情況,也是我們本文要討論的重點。它的解法最常用的是鮑姆-韋爾奇算法,其實就是基於EM算法的求解,只不過鮑姆-韋爾奇算法出現的時代,EM算法還沒有被抽象出來,所以我們本文還是說鮑姆-韋爾奇(Baun-Welch)算法。
Baun-Welch算法原理
鮑姆-韋爾奇算法原理既然使用的就是EM算法的原理,那麼我們需要在E步求出聯合分佈基於條件概率的期望,其中爲當前的模型參數,然後再M步最大化這個期望,得到更新的模型參數λ。接着不停的進行EM迭代,直到模型參數的值收斂爲止。
首先來看看E步,當前模型參數爲, 聯合分佈基於條件概率的期望表達式爲:
在M步,我們極大化上式,然後得到更新後的模型參數如下:
通過不斷的E步和M步的迭代,直到收斂。下面我們來看看鮑姆-韋爾奇算法的推導過程。
Baun-Welch算法的推導
我們的訓練數據爲,其中任意一個觀測序列,其對應的未知的隱藏狀態序列表示爲:.
首先看鮑姆-韋爾奇算法的E步,我們需要先計算聯合分佈的表達式如下:
我們的E步得到的期望表達式爲:
在M步我們要極大化上式。由於,而是常數,因此我們要極大化的式子等價於:
我們將上面的表達式帶入我們的極大化式子,得到的表達式如下:
我們的隱藏模型參數,因此下面我們只需要對上式分別對A,B,Π求導即可得到我們更新的模型參數.
首先我們看看對模型參數ΠΠ的求導。由於Π只在上式中括號裏的第一部分出現,因此我們對於Π的極大化式子爲:
由於還滿足,因此根據拉格朗日子乘法,我們得到要極大化的拉格朗日函數爲:
其中,爲拉格朗日系數。上式對求偏導數並令結果爲0, 我們得到:
令i分別等於從1到N,從上式可以得到N個式子,對這N個式子求和可得:
從上兩式消去,得到的表達式爲:
由前向概率的定義可得:
因此最終我們在M步的迭代公式爲:
現在我們來看看A的迭代公式求法。方法和Π的類似。由於A只在最大化函數式中括號裏的第二部分出現,而這部分式子可以整理爲:
由於還滿足。和求解類似,我們可以用拉格朗日子乘法並對求導,並令結果爲0,可以得到的迭代表達式爲:
給定模型λ和觀測序列O,在時刻t處於狀態,且時刻t+1處於狀態的概率記爲:
而可以由前向後向概率來表示爲:
從而最終我們得到的表達式如下:
因此可得表達式:
有了的迭代公式,我們就可以迭代求解HMM模型參數了。
Baun-Welch算法流程總結
這裏我們概括總結下鮑姆-韋爾奇算法的流程。
輸入: D個觀測序列樣本
輸出:HMM模型參數
1)隨機初始化所有的
2) 對於每個樣本,用前向後向算法計算
3) 更新模型參數:
4) 如果的值已經收斂,則算法結束,否則回到第2)步繼續迭代。
以上就是Baun-Welch算法的整個過程。