HMM 中文分詞

隱馬爾科夫模型 HMM 通常用於處理時間序列數據,數據包含長度一樣的隱藏狀態和觀測序列,可以通過觀測數據預測出隱藏狀態。例如在分詞時,觀測序列是 ”我喜歡計算機“,其中每個字對應的隱藏狀態是 ”SBEBME“。HMM 也可以用於語音識別,給定一段音頻 (觀測序列),識別出裡面的每個文字 (隱藏狀態)。

1. 馬爾科夫模型

假設系統擁有不同的狀態,每個時刻狀態都會發生變化,我們可以用馬爾科夫模型總結出系統狀態變化的規律。以天氣變化為例,現在有三種天氣 {晴天,雨天,多雲},和很多天的天氣狀態序列 D1, D2, D3,..., DM。則我們可以根據前 n 天的天氣,預測第 M+1 個天氣狀態的概率。

HMM 中文分詞

N 階馬爾科夫模型

這也稱為 n 階馬爾科夫模型,即當前狀態僅依賴於前面 n 個狀態,通常比較常用的是一階馬爾科夫模型,即當前預測的狀態僅依賴於前一時刻的狀態。

一階馬爾科夫模型可以定義一個狀態轉移矩陣 TT 的行數和列數均等於狀態個數,T 描述了從一個狀態轉移到另一個狀態的概率,如下圖所示。

HMM 中文分詞

狀態轉移矩陣 T

即如果今天是雨天,則明天是晴天的概率是 0.3。除了狀態轉移矩陣,還需要定義一個初始概率向量 I,表示第一天時,每種天氣狀態的概率。初始概率向量如下:

HMM 中文分詞

初始概率向量 I

總的來說,定義一個一階馬爾科夫模型需要:

  • 狀態:晴天、雨天、多雲
  • 狀態轉移矩陣 T
  • 初始概率向量 I

馬爾科夫模型還有一個性質,不管今天的天氣如何,在很多天之後的狀態分佈會收斂到一個固定的概率分佈,稱為穩態分佈。例如第一天是晴天,給定的 T 如上文所示,則很多天 (n天) 之後的概率分佈 p 為:

HMM 中文分詞

這是因為 T 自乘無窮次之後,每一行的數值都是一樣的,因此不管第一天天氣如何,無窮天后的概率分佈都是穩定的。

HMM 中文分詞

2. 隱馬爾科夫模型

2.1 HMM

有的時候我們只能看到觀察的序列,而不能直接看到隱藏的狀態,此時就需要使用隱馬爾科夫模型。例如有一個被關在一個密閉的房間裡,沒辦法查看到天氣,但是可以通過一個溼度計查看溼度。

由於溼度 (觀察狀態) 和天氣 (隱藏狀態) 之間存在聯繫,HMM 可以根據給出的觀測狀態序列,估計出對應的隱藏狀態序列,同時可以對未來的隱藏狀態和觀察狀態進行預測。

隱馬爾科夫模型還需要增加一個發射概率矩陣 EE 的行數等於隱藏狀態個數,列數為觀察狀態個數,Eij 表示隱藏狀態為 i 時,觀察狀態為 j 的概率。

HMM 中文分詞

發射概率矩陣 E

總的來說,定義一個一階隱馬爾科夫模型以下參數,這些就是 HMM 的參數:

  • 隱藏狀態 S:晴天、雨天、多雲
  • 觀察狀態 O:乾燥、適中、潮溼
  • 狀態轉移矩陣 T
  • 初始概率向量 I
  • 發射概率矩陣 E

2.2 隱馬爾科夫模型的三個問題

隱馬爾科夫模型比較常見的三個問題分別是:評估問題,解碼問題和學習問題。

評估問題:我們已經知道模型的參數 (

S, O, T, I, E),給定一個觀測序列 X (例如 乾燥、乾燥、潮溼、....、適中),評估問題要計算出得到這樣一個觀測序列 X 的概率值。求解評估問題的方法有前向算法後向算法

解碼問題:已經知道模型的參數 (S, O, T, I, E),給定一個觀測序列 X,找出使觀測序列概率最大的隱藏狀態序列 Y。求解的方法有 Viterbi 算法

學習問題:學習問題是指在未知模型參數的時候,通過數據集學習出模型的參數 (S, O, T, I, E)。學習問題包監督學習方法和非監督學習方法,如果我們同時擁有觀察序列 X 和狀態序列 Y,則可以採用監督學習;如果只有觀測序列 X,則只能採用非監督學習,非監督學習的算法有 Baum-Welch 算法。

3. HMM 中文分詞

HMM 可以用於中文分詞的任務,其隱藏狀態包含 4 種,分別是 SBME,S 表示單個字的詞,而 B 表示多字詞的第一個字,M 表示多字詞中間的字,E 表示多字詞最後一個字,如下圖所示。

HMM 中文分詞

用 HMM 進行中文分詞,要通過觀察序列找出最有可能的隱藏狀態序列,主要涉及學習問題解碼問題

3.1 中文分詞學習問題

可以使用已經標註好的數據 (即有觀察序列 X 和隱藏狀態序列 Y) 的數據集進行有監督學習。數據集包含很多句子,每個句子都有 XY。那麼我們就可以通過統計得到 HMM 的狀態轉移矩陣、發射矩陣和初始概率向量。

狀態轉移矩陣 TTij 表示從狀態 i 轉移到狀態 j 的概率,需要統計數據集裡面從狀態 i 轉移到 狀態 j 的個數 Aij,然後除以狀態 i 轉移到所有狀態的個數 Ai。

HMM 中文分詞

例如我們可以用下面的公式計算從狀態 B 轉到狀態 E 的概率:

HMM 中文分詞

中文分詞的時候是不存在從狀態 B 到狀態 B 的,也不存在 B 到 S,所以 Count(BB) 和 Count(BS) 都是 0。

發射概率矩陣 EEij 表示在狀態 i 時得到觀察值 j 的概率。計算方法是統計狀態 i 且觀察值為 j 的個數 B,然後除以狀態 i 的個數。

初始概率向量 I:I 只要統計每個句子第一個狀態,得到第一個狀態的概率分佈即可。

3.2 中文分詞解碼問題

在學習得到 HMM 的參數後,可以通過 HMM 解碼算法 (Viterbi 算法) 求解出句子的隱狀態,最終分詞。具體做法可以參考《統計學習方法》。

4.參考文獻

《統計學習方法》



分享到:


相關文章: