隱馬爾科夫模型介紹

2021-06-28 14:18:56 字數 3065 閱讀 3383

這篇部落格是根據我 nlp課程 的乙個小作業整理而來的,介紹一下 nlp 領域中非常經典的乙個模型,叫做隱馬爾可夫模型,簡稱 hmm。看過吳軍老師的《數學之美》的同學應該對這個模型不感到陌生。這次的作業,老師給出一本書foundations of statistical natural language processing,讓我們自己挑選任意一部分的內容,不限字數,寫篇文章。前面部分多是介紹語言學的基礎知識,我選擇了比較偏演算法的 hmm。由於 nlp 的課程剛剛開始,遠沒有講到這裡,老師提供的參考書又是電子版的英文原版,看起來比較費勁,我更多的參考了一些其他資料,文末會列出。

分割線後是正文。

hmm(隱馬爾可夫模型)是 nlp(自然語言處理)領域中乙個基本且常用的模型,可以用在諸如詞性標註、中文分詞、語音識別等細分的研究方向,在工業中的應用也已經十分廣泛。本文將首先介紹 mm(馬爾可夫模型),然後著重介紹 hmm 的原理、涉及到的基本問題,並給出比較形象的例子。

提出:2023年由andrei a. markov提出,也因此得名。

模型描述:這裡引用網上的一段數學表示,稍後做出解釋。

通俗地解釋,隨機序列 x 在不同時刻有不同的狀態,在 t 時刻的狀態受 t 之前所有時刻(t-1,t-2…0)的狀態的影響;而在馬爾可夫模型中,我們規定,t 時刻的狀態只受 t-1時刻狀態的影響,也就是不考慮更加之前的狀態,這無疑會給我們解決問題帶來方便。另外,我們用 p 來表示狀態轉移概率,亦即從 t-1時刻到 t時刻兩個狀態轉換的可能性大小。

之所以說「一階」,是因為某狀態只受前乙個狀態的影響,這也可以被稱為2-gram;之所以說「鏈」,是因為 ai 受到 ai-1的影響,用 i 迭代,就像乙個鏈式的反應。

這個模型可以更加凝練地表示成乙個二元組,形式為(s,a)。其中,s 表示所有可能的狀態的集合;a 是乙個 n 行 n 列的狀態轉移概率矩陣,每個元素 aij 表示的是從狀態 i 轉移到狀態 j的概率。

舉個例子:

假設我們觀察天氣,通過對歷史資料的了解,我們知道只有三種天氣狀態:;同時,某天的天氣只受前一天天氣的影響,我們也從歷史資料中得到了乙個轉移概率組成的矩陣(3*3)。有了這些已知條件,我們就可以**某天的天氣了。

這裡需要注意的是,我們所關心的狀態(天氣情況)和我們觀察到的序列(天氣情況)是一致的,給定了後者,前者便得到了。之所以講這些,是為了引出 hmm,這一點正是 mm 和 hmm 的關鍵區別所在。

上面給出了馬爾可夫模型,我們可以用它來做簡單的**問題,但是還有一些複雜的問題,用 mm 就束手無策了,下面通過乙個簡單的例子給出。

假設有 n 個罈子,每個罈子表示乙個狀態;有 m 種顏色的小球,每個罈子中不確定會拿出哪種顏色的小球;現在我們依次隨記從某個罈子中拿出小球,並記錄小球的顏色,得到乙個顏色序列;現在把這個觀察得來的序列給另外乙個人,它只知道顏色的產生順序,不了解每個顏色分別是從哪個罈子裡取出的。

從這個例子看出,給出了觀察序列,我們無法直接得知狀態的序列;而上面天氣的例子中,給出觀察序列(天氣),我們直接得到狀態序列(天氣)。本例中,狀態的轉移過程對於觀察者是隱藏起來的,所以這個過程叫做「隱馬爾可夫過程」。

模型描述:

hmm可以表示為乙個五元組,我們用λ=(s,v,a,b,π)表示。

s:狀態集合,對於上例,就是罈子的集合,共 n 個元素。

v:觀察集合,對於上例,就是小球顏色的集合,共 m個元素。

a:狀態轉移矩陣,涵義同 mm 中的 a。

b:觀察值的概率分布,對於上例,就是每個罈子裡,取出每種顏色的小球的概率,可以看成乙個 n*m 的矩陣。

π:初始狀態概率分布,可以理解為每個狀態的先驗概率。

通過馬爾可夫過程,可以生成乙個符號串行(觀察序列),我們用如下方式表示:

o = (o1,o2,…ot)

該過程就是通過上述的五元組產生該序列的,可以簡單地表示成下面過程:

按照π選擇乙個初始狀態—> 按照 b 選擇乙個輸出值 o—> 按照 a 選擇下乙個狀態… 如此迭代進行,便可得出序列。

hmm 中有三個基本問題,本文將通過乙個直觀的例子,提出這三個問題。

問題描述:有三枚硬幣(1,2,3),隨機拋擲,記錄結果。

這裡,s 為;v 為(head or tail,硬幣的正反);a、b、π也給出,如下:(為了方便,這裡引用資料中的截圖)

通過這個直觀的例子,我們也能更加清晰地理解 hmm 的五元組代表的意思。

接下來,我們提出三個問題:

給定上述模型,觀察到的結果(硬幣的正反面)為o=的概率是多少?

若給定上述的觀察結果,那麼最可能的狀態序列(硬幣序號)是什麼?

a、b、π未知的情況下,如何根據 o 得到它們?

問題一是個估算問題,p(o|λ),可用向前演算法和向後演算法解決;

問題二是根據觀察序列反向找出最可能的狀態序列,是個解碼問題,p(o,q|λ),q 是某狀態,最常用的是 viterbi演算法;

問題三實際上是個引數估計或求解的問題,或者說是個學習問題,通過訓練一步步優化引數,找到使得p(o|λ)最大的那個引數,最常用的是 baum-welch演算法。

當然,具體的演算法描述和實現也是一大塊內容,這裡不另闢篇幅敘述了。

回顧一下,我們首先介紹了 hmm 的基礎—mm;然後通過例子給出了為什麼mm 是不夠的,為什麼需要 hmm;稍後給出了 hmm 的模型描述,並通過硬幣的例子,一方面形象化了 hmm,另一方面引出了 hmm的三個基本問題;至於每個問題的解答,需要研究一下上述的幾個演算法,在此基礎上就可以用來解決中文分詞、詞性標註等領域的一些問題了。尤為重要的是,我最近在研究的乙個開源中文分詞系統「結巴分詞」,在新詞**時就是使用的 viterbi 演算法,最後的效果還是很好的,這個演算法應該認真學習。

參考資料:

foundations of statistical natural language processing. christopher d.

manning, hinrich schütze.

《統計自然語言處理基礎》,參考資料條目1的中文版。

北京大學《計算語言學》第五章課件:

「結巴分詞」:

原文

馬爾科夫模型與隱馬爾科夫模型

隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...

隱馬爾科夫模型

隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...

隱馬爾科夫模型

一 介紹 introduction 我們通常都習慣尋找乙個事物在一段時間裡的變化模式 規律 這些模式發生在很多領域,比如計算機中的指令序列,句子中的詞語順序和口語單詞的因素修咧等等,事實上任何領域中的一系列事件都有可能產生有用的模式。考慮乙個簡單的例子,有人試圖通過一片海藻推斷天氣 民間傳說告訴我們...