NLP-隱馬爾可夫模型及使用例項

spring_willow發表於2018-04-09
  • 說明:學習筆記,內容來自周志華的‘機器學習’書籍和加號的‘七月線上’視訊。

隱馬爾可夫模型

隱馬爾可夫模型(Hidden Markov Model,簡稱HMM)是結構最簡單的動態貝葉斯網,這是一種著名的有向圖模型,主要用於時序資料建模,在語音識別、自然語言處理等領域有廣泛應用。——周志華《機器學習》

1.隱馬爾可夫模型的結構資訊:

隱馬爾可夫模型中的變數可以分為兩組,第一組是狀態變數{ y1,y2,...,yn y 1 , y 2 , . . . , y n

y_1,y_2,...,y_n
},,其中 yiy y i ∈ y
y_i\in y
表示第 i i
i
時刻的系統狀態,通常假定狀態變數是隱藏的、不可被觀測的,因此狀態變數也被稱為隱變數。第二組是觀測變數{x1,x2,..,xn
x_1,x_2,..,x_n
},其中 xix x i ∈ x
x_i\in x
表示第 i i
i
時刻的觀測值,如下圖所示:
這裡寫圖片描述
模型的圖結構看起來有點類似於我們熟知的RNN模型。圖中的箭頭表示變數之間的依賴關係。在任意時刻,觀測變數的取值僅依賴於狀態變數,與其他狀態變數和觀測變數的取值無關。同時,t
t
時刻的狀態僅依賴於 t1 t − 1
t-1
時刻的狀態,與其餘狀態無關,這就是所謂的馬爾可夫鏈
基於上述的依賴關係,我們得到所有變數的聯合概率分佈為:

P(x1,y1,...,xn,yn)=P(y1)P(x1|y1)i=2nP(yi|yi1)P(xi|yi) P ( x 1 , y 1 , . . . , x n , y n ) = P ( y 1 ) P ( x 1 | y 1 ) ∏ i = 2 n P ( y i | y i − 1 ) P ( x i | y i )
P(x_1,y_1,...,x_n,y_n)=P(y_1)P(x_1|y_1)\prod_{i=2}^n P(y_i|y_i-1)P(x_i|y_i)

2.確定一個隱馬爾可夫模型需要以下三組引數:

  • 狀態轉移概率:
    模型在各個狀態間轉換的概率,可以用矩陣 A A
    A
    表示
  • 輸出觀測概率:
    模型根據當前狀態獲得各個觀測值的概率,可以用矩陣B=[bij]NM
    B=[b_{ij}]_ {N*M}
    表示, N N
    N
    大小為隱藏狀態數,M
    M
    大小為觀測值數
  • 初始狀態概率:
    模型在初始時刻各狀態出現的概率,通常記為 π=(π1,π2,..,πn) π = ( π 1 , π 2 , . . , π n )
    \pi=(\pi_1,\pi_2,..,\pi_n)

通過 λ=[A,B,π] λ = [ A , B , π ]

\lambda=[A,B,\pi]
就可以指代一個隱馬爾可夫模型。
我們使用一個用爛了的例子來對這幾種引數進行說明,如下圖所示:
這裡寫圖片描述
說明:
①圖中start表示初始狀態,則 π=(0.6,0.4) π = ( 0.6 , 0.4 )
\pi=(0.6,0.4)

②rainy表示下雨天,sunny表示晴天,當第一天是下雨天的時候,第二天仍然是下雨天的概率是0.7,晴天的概率是0.3;當第一天是晴天時候,第二天是下雨天的概率是0.4,仍然是晴天的概率是0.6;這裡的晴天和雨天就是我們模型中所說的隱藏狀態。
狀態轉換概率矩陣 A A
A

A=[0.70.30.40.6]
A= \left[ \begin{matrix} 0.7& 0.3 \\ 0.4 & 0.6 \end{matrix} \right]

③walk、shop、clean表示在下雨天或者晴天的時候我們散步、逛街和打掃房間的可能情況,也就是模型中所說的觀測變數,在下雨天打掃房間的概率是0.5;晴天的時候更可能出去逛街,所以概率是0.6,通過該圖我們可以得到輸出觀測概率矩陣 B B
B

B=[0.10.40.50.60.30.1]
B= \left[ \begin{matrix} 0.1& 0.4& 0.5 \\ 0.6& 0.3& 0.1 \end{matrix} \right]

3.實際應用中人們常關注的HMM模型的三個基本問題:

  • 評估模型與觀測序列之間的匹配程度:
    給定模型 λ λ
    \lambda
    ,如何計算其產生觀測序列{ x1,x2,..,xn x 1 , x 2 , . . , x n
    x_1,x_2,..,x_n
    }的概率 P(x|λ) P ( x | λ )
    P(x|\lambda)
  • 根據觀測序列推斷隱藏的模型狀態:
    給定模型 λ λ
    \lambda
    以及觀測序列{ x1,x2,..,xn x 1 , x 2 , . . , x n
    x_1,x_2,..,x_n
    },如何找到與此觀測序列最匹配的狀態序列{ y1,y2,...,yn y 1 , y 2 , . . . , y n
    y_1,y_2,...,y_n
    }?
  • 訓練模型使其更好的描述觀測序列:
    給定觀測序列{ x1,x2,..,xn x 1 , x 2 , . . , x n
    x_1,x_2,..,x_n
    },如何調整引數 λ λ
    \lambda
    ,使得該序列出現的概率 P(x|λ) P ( x | λ )
    P(x|\lambda)
    最大?

針對上面的是哪個問題,分別有下面幾種解決方法:

  • 問題1:遍歷演算法、前向演算法、後向演算法
  • 問題2:Viterbi 維特比演算法
  • 問題3:Baum-Welch 鮑姆-韋爾奇演算法

相關文章