隱馬爾科夫模型學習總結之一

最近學習了徐亦達老師關於隱馬爾科夫模型的教程和cs229中關於HMM的notes,把所有分散的知識點進行總結,加深自己學習的印象。(會分幾個章節寫,因為內容太多了。)

首先說明兩個備註:

  1. 目前很多博客文章中對HMM模型的介紹以及舉例其實有限定,即模型中的觀測變數的概率分布是離散型的,比如扔色子、預測天氣等比較形象的實例中,觀測狀態都是以某幾個取值分類來決定的。除了上述離散型的概率分布外,觀測變數的概率分布也有連續型的,比如預測股票的價格中,每天的股價其實是連續的值。在現實生活中,連續型的數據分布應當是更加常見的,但礙於篇幅,這次我討論離散型的數據分布,當學習了卡爾曼濾波以及高斯分布等相關知識後,再補充連續型的數據分布的HMM。
  2. 本文只討論一階馬爾科夫的情況,即當前狀態只與前一個狀態有關。還有更複雜的二階以及其他變式HMM模型,本文不做討論。

HMM模型適用於時間序列特徵的數據,在語音識別、中文分詞、詞性標註等任務中都有比較好的表現,且其模型結構和原理相較於CRF以及其他複雜模型來說較容易理解,因此在深入自然語言處理研究前,掌握該模型的原理和推導是很有必要的,下面將詳細對HMM的模型進行解析和推導。

馬爾科夫模型

首先總結一下馬爾科夫模型的知識點。何為馬爾科夫模型?對於時間序列數據來說,每個時刻t都有其獨有的狀態,本文只討論該狀態為離散的情況。即給定一組狀態列表S=left{ s_{1},s_{2},...s_{|n|} 
ight},我們可以再時間序列上觀察到這個狀態列表中的元素的序列組合。以天氣預報問題為例,假設當前 S=left{ sun,cloud,rain 
ight} ,n=3,我們觀察到近5天里的一個天氣序列: left{ z_{1}=s_{sun},z_{2}=s_{cloud},z_{3}=s_{cloud},z_{4}=s_{sun},z_{5}=s_{cloud} 
ight} 。在沒有任何假設的情況下,每一天的天氣狀態可能與任何一個變數都有關係,這樣我們就不能用統計語言去為現實問題建模了。為了簡化問題,我們引入了一階馬爾科夫假設,即時刻t的狀態概率只與前一時刻t-1的狀態有關,即

P(z_{t}|z_{t-1},z_{t-2},...,z_{1})=P(z_{t}|z_{t-1})

滿足該假設性質的概率模型,可以稱之為一階馬爾科夫模型,或者叫一階馬爾科夫鏈。若某時刻t的狀態與前一個時刻以及前兩個時刻的狀態有關,則為二階馬爾科夫鏈。以此類推。

同時上述公式無法表示第0時刻的狀態概率,因此還需要引入一個初始狀態 z_{0} 表示第0時刻的狀態。在HMM模型中,初始狀態通常用 pi 表示。

根據對樣本數據的狀態轉移統計,我們可以得到一個狀態轉移矩陣 AinRe^{n*n} ,表示某個狀態轉移到另一個狀態的概率,其中矩陣元素 A_{ij} 表示任意時刻t狀態i轉移到狀態j的概率。

由該矩陣可知,該矩陣每一行的概率和均為1,即 sum_{j}^{n}{A_{ij}}=1 (該結論在後面推導時會有用。)

馬爾科夫模型的兩個問題

結合上述我們隊馬爾科夫模型的描述,其實我們可以利用上述性質,解決時間序列特徵的數據集的兩個問題。

  1. 已知模型的狀態轉移矩陣,和初始狀態 pi ,假定在時刻t內,一個狀態序列 z_{set} 出現的概率是多少?
  2. 如何估計我們模型中的參數,即狀態轉移矩陣和初始狀態,來最大化一個觀察序列z_{set}的最大似然估計?

問題一:計算某個狀態序列的概率

可以通過鏈式法則來計算 P(z_{set})

根據我們講過的一階馬爾科夫假設,當前時刻t的狀態只與前一個時刻的狀態有關,即

P(z_{t}|z_{t-1},z_{t-2},...,z_{1})=P(z_{t}|z_{t-1}) 可以將上式進行化簡,得到:

即一個狀態序列的概率就是將每個時刻對應前一時刻狀態的狀態概率進行連乘得到。

問題二:極大似然參數估計

本問題實質上是求出模型的狀態轉移矩陣,使得觀察序列 z_{set} 似然估計最大。一般我們會對似然估計函數求對數,方便求極值。

首先這個似然函數是有約束條件的

  1. 每個概率值都應該是非負的,即 A_{ij}geq0
  2. 矩陣A的每一行的概率和應當是1(用到前面的結論。) sum_{j}^{n}{A_{ij}}=1

面對這種帶不等式和等式約束條件的優化問題,自然我們想到用拉格朗日乘子法進行優化。

注意到由於我們對A矩陣的每一行均有一個等式約束條件,因此一共有n個約束條件,所以拉格朗日乘子也有n個,用 alpha_{i} 表示。

對參數 A_{ij} 求偏導數,令偏導數為0。求得參數的值:

上式中, 1left{ z_{t-1}=s_{i}wedge z_{t}=s_{j} 
ight} 表示t-1時刻的狀態為si與t時刻的狀態為sj同時發生時對該項取1,其他項取0。

得到狀態轉移矩陣元素值為:

由於表達式中還有拉格朗日乘子,故還需要對乘子進行求偏導數,得到乘子的表達式。

將之前得到的 A_{ij} 的表達式代入上式中,即可得到 alpha_{i} 的表達式。

求得乘子後,再把乘子反代入到 A_{ij} 的表達式中,就可以得到狀態轉移矩陣的元素。

根據求得的矩陣元素表達式可以看出,其實我們是根據我們樣本數據中狀態之間的真實轉移頻率來近似模型的狀態轉移概率的,這個是屬於頻率學派的思想,即對事物本身進行真理的探討,直接對事物本身進行建模。與之相對的還有貝葉斯學派,他主張事物的不確定性,用概率分布去接近事物的本質。關於這兩個學派的區別,感覺還是有點模糊,準備在將來單獨開篇學習總結一下。

通過上述的描述,可以看到馬爾科夫模型對時間序列數據能夠有一個強力的抽象,方便我們使用統計方法對現實世界的數據進行建模分析。但是該模型具有一定的局限性,首先區別於天氣,某些事物的狀態我們是不能直接觀測到,比如股市的熊市和牛市狀態、語音識別中具體的語言語素、文本序列中的詞性等等。此時直接用馬爾科夫模型就不適用了,因此推出了隱馬爾科夫模型,通過引入隱變數來表示無法觀測的狀態變數,來解決該問題。

關於HMM模型的具體總結,見下一章節。


推薦閱讀:

關於機器學習、數據科學面試的準備
機器學習數學基礎-線性代數
Kernel PCA 原理和演示
Facebook如何利用機器演算法人工智慧教計算機閱讀
機器學習入門(2):從QQ音樂推薦系統到邏輯回歸

TAG:機器學習 | 自然語言處理 |