60分鐘看懂HMM的基本原理
HMM模型,韓梅梅的中文拼音的縮寫,所以又叫韓梅梅模型,由于這個模型的作者是韓梅梅的粉絲,所以給這個模型取名為HMM。開玩笑!
HMM模型,也叫做隱馬爾科夫模型,是一種經(jīng)典的機器學習序列模型,實現(xiàn)簡單,計算快速,廣泛用于語音識別,中文分詞等序列標注領(lǐng)域。
公眾號后臺回復關(guān)鍵字:源碼,獲取本文包含全部公式和插圖的md源文件。
下面通過一個村民看病的故事理解什么是HMM模型。
想象一個鄉(xiāng)村診所,村民的身體狀況要么健康要么發(fā)燒,他們只有問診所的醫(yī)生才能知道是否發(fā)燒。
醫(yī)生通過詢問村民的感覺去診斷他們是否發(fā)燒。村民自身的感覺有正常、頭暈或冷。
假設(shè)一個村民每天來到診所并告訴醫(yī)生他的感覺。村民的感覺只由他當天的健康狀況決定。
村民的健康狀態(tài)有兩種:健康和發(fā)燒,但醫(yī)生不能直接觀察到,這意味著健康狀態(tài)對醫(yī)生是不可見的。
每天村民會告訴醫(yī)生自己有以下幾種由他的健康狀態(tài)決定的感覺的一種:正常、冷或頭暈。
于是醫(yī)生會得到一個村民的感覺的觀測序列,例如這樣:{正常,冷,冷,頭暈,冷,頭暈,冷,正常,正常}。
但是村民的健康狀態(tài)這個序列是需要由醫(yī)生根據(jù)模型來推斷的,是不可直接觀測的。
這個村民看病的故事中由村民的健康狀態(tài)序列和村民的感覺序列構(gòu)成的系統(tǒng)就是一個隱馬爾科夫模型(HMM)。
其中村民的健康狀態(tài)序列構(gòu)成一個馬爾科夫鏈。其每個序列值只和前一個值有關(guān),和其它值無關(guān)。由于這個馬爾科夫鏈是隱藏的,不可以被直接觀測到,只能由其關(guān)聯(lián)的村民的感覺序列來進行推斷,因此叫做隱馬爾科夫模型(HMM)。
一,HMM模型的上帝視角
HMM模型是一個生成模型,描述了兩個相關(guān)序列的依賴關(guān)系。
這兩個相關(guān)序列稱為狀態(tài)序列 和 觀測序列 .
其中狀態(tài)序列在t時刻的值只和t-1時刻狀態(tài)序列的取值有關(guān),觀測序列在t時刻的值只和t時刻觀測序列的取值有關(guān)。

其聯(lián)合概率函數(shù)如下:

如果能夠確定聯(lián)合概率函數(shù)中的各個參數(shù),那么HMM模型也就完全地確定了,我們就擁有了HMM模型描述的這個體系的上帝視角,可以用來計算任何關(guān)心的事件的概率,從而解決我們感興趣的問題。
二,HMM的三大假設(shè)
1,馬爾科夫性假設(shè):t時刻的狀態(tài)出現(xiàn)的概率只和t-1時刻的狀態(tài)有關(guān)。

2,齊次性假設(shè):可以理解為時間平移不變性
3,觀測獨立性假設(shè):某個時刻t的觀測值只依賴于該時刻的狀態(tài)值,與任何其它時刻的觀測值和狀態(tài)值無關(guān)。

上述HMM的聯(lián)合概率函數(shù)中,實際上就用到了HMM的三大假設(shè)。

三,HMM的三要素
觀察HMM的聯(lián)合概率函數(shù):
可以看到只依賴于三種概率值參數(shù)
, ,
分別是初始狀態(tài)概率,狀態(tài)值轉(zhuǎn)移概率,觀測值輸出概率(發(fā)射概率)
這就是HMM的三要素,也就是HMM的全部參數(shù),確定了這三種概率,HMM模型就完全確定下來了。
對于狀態(tài)值取值和觀測值取值為離散值的情況下,這三種概率可以表示為矩陣。
假定狀態(tài)值可能的取值為 ,一共有M種可能取值。觀測值可能的取值為 ,一共有N種可能取值。
則HMM的全部參數(shù)可以表示為三個矩陣
其中 叫做初始概率矩陣,是一個M維向量,
叫做轉(zhuǎn)移概率矩陣,是一個M×M維矩陣,
叫做發(fā)射概率矩陣,是一個M×N維矩陣,
以上面村民看病的例子為例,假設(shè)這三個矩陣分別為:
pi = {'Healthy': 0.6, 'Fever': 0.4} #初始狀態(tài)矩陣
A = {
'Healthy' : {'Healthy': 0.7, 'Fever': 0.3},
'Fever' : {'Healthy': 0.4, 'Fever': 0.6},
} #狀態(tài)矩陣
B = {
'Healthy' : {'normal': 0.5, 'cold': 0.4, 'dizzy': 0.1},
'Fever' : {'normal': 0.1, 'cold': 0.3, 'dizzy': 0.6},
} # 發(fā)射矩陣

四,HMM的三個基本問題
HMM模型相關(guān)的應(yīng)用問題一般可以歸結(jié)為這三個基本問題中的一個:
1,評估問題:已知模型參數(shù) ,和觀測序列 , 計算觀測序列出現(xiàn)的概率。以村民看病問題為例, 計算一個村民連續(xù)出現(xiàn) {正常,冷,頭暈} 感覺的概率。評估問題一般使用前向算法或者后向算法進行解決,其中前向算法相對簡單,容易理解一些。后向算法較難理解。設(shè)想有兩個描述兩人語音的HMM模型,那么給一個新的語音序列,利用前向算法或者后向算法就可以計算這個語音序列更可能是哪個人的。
2,預測問題:也叫做解碼問題。已知模型參數(shù) ,和觀測序列 , 計算該觀測序列對應(yīng)的最可能的狀態(tài)序列。以村民看病問題為例,假設(shè)一個病人連續(xù)出現(xiàn) {正常,冷,頭暈} 的感覺,計算病人對應(yīng)的最可能的健康狀態(tài)序列。預測問題一般使用貪心近似算法或者維特比算法解決。其中貪心近似算法相對簡單一些,但不一定能找到全局最優(yōu)解。維特比算法可以找到全局最優(yōu),是一種動態(tài)規(guī)劃算法。
3,學習問題:模型參數(shù) 未知,推斷模型參數(shù)。有兩種可能的場景,一種是監(jiān)督學習的場景,已知諸多觀測序列和對應(yīng)的狀態(tài)序列,推斷模型參數(shù),第二種是非監(jiān)督學習的場景,只知道諸多觀測序列,推斷模型參數(shù)。監(jiān)督學習的場景,學習方法相對簡單。非監(jiān)督學習的場景,一般使用EM期望最大化方法進行迭代求解。
五, 三個基本問題的簡單解法
1,評估問題的簡單解法
已知模型參數(shù) ,和觀測序列 , 計算觀測序列出現(xiàn)的概率。
評估問題一般使用前向算法或者后向算法進行解決,其中前向算法相對簡單。
如果暴力求解,這個概率可以計算如下:

計算復雜度大約為
前向算法是一種遞推算法,可以大大減少重復計算,降低計算復雜度。
構(gòu)造序列
則初始值如下:

而:

不難發(fā)現(xiàn)存在遞推公式如下:

通過 , 我們可以計算

計算復雜度已經(jīng)降低為
2,預測問題的簡單解法
已知模型參數(shù) ,和觀測序列 , 計算該觀測序列對應(yīng)的最可能的狀態(tài)序列。
預測問題一般使用貪心近似算法或者維特比算法解決。較常用的是維特比算法。但貪心近似算法更加簡單,很多時候就已經(jīng)足夠使用。
其基本思想是貪心思想,每一個步驟都取相應(yīng)的 , 使得對應(yīng)輸出的概率最大。

3, 學習問題的簡單解法
模型參數(shù) 未知,推斷模型參數(shù)。監(jiān)督學習的場景,學習方法相對簡單。已知諸多觀測序列和對應(yīng)的狀態(tài)序列,推斷模型參數(shù)。
這種情況下可以統(tǒng)計相應(yīng)的頻率作為 , , 中各個概率的估計值。
六, 三個基本問題的復雜解法
1,評估問題的復雜解法
已知模型參數(shù) ,和觀測序列 , 計算觀測序列出現(xiàn)的概率。
除了前向算法,還有一種后向算法,功能和前向算法相當,也是使用遞推法實現(xiàn)的,但沒有前向算法那么直觀。
構(gòu)造序列
我們規(guī)定 對任何 都成立。
類似地我們可以發(fā)現(xiàn)后向遞推關(guān)系:

通過 , 我們可以計算

2,預測問題的復雜解法
已知模型參數(shù) ,和觀測序列 , 計算該觀測序列對應(yīng)的最可能的狀態(tài)序列。
解決這一預測問題較常用的方法是維特比算法,是一種動態(tài)規(guī)劃算法,也可以理解成一種搜索空間的剪枝方法,可以保證找到全局最優(yōu)路徑。
不同于貪心近似算法在每個步驟只保留一條當前最優(yōu)路徑,維特比算法在每個步驟會保留若干條當前最優(yōu)路徑,這些最優(yōu)路徑和每個步驟的最后一個隱含狀態(tài)值的可能取值相對應(yīng),如果狀態(tài)值有M個可能取值,則每個步驟保留M條當前最優(yōu)路徑。
由于HMM的馬爾科夫性質(zhì),之后的概率計算只和最后一個隱藏狀態(tài)取值相關(guān),因此全局的最優(yōu)路徑必定在這M條當前最優(yōu)路徑中,如此遞推不斷向前尋找M個隱狀態(tài)值對應(yīng)的M條當前最優(yōu)路徑,最后取最終得到的M條當前最優(yōu)路徑中概率最大的那條作為全局最優(yōu)路徑。

3,學習問題的復雜解法
模型參數(shù) 未知,推斷模型參數(shù)。
這是一個存在隱變量的概率模型的參數(shù)估計問題,一般使用EM期望最大化算法進行求解。
原始問題可以定義為

根據(jù)期望最大化算法的算法原理,可以得到迭代條件如下:

于是可以得到三個參數(shù) 的 迭代條件:

其中 不含待優(yōu)化參數(shù),求導為0,考慮概率之和為1的約束,可以構(gòu)造拉格朗日乘子法進行求解,過程較為繁瑣,從略。
參考文章:
《一站式解決:隱馬爾可夫模型(HMM)全過程推導及實現(xiàn)》:https://zhuanlan.zhihu.com/p/85454896
《機器學習:HMM原理及其實踐》:https://www.cnblogs.com/zhangxinying/p/12071061.html
《概率圖模型體系:HMM、MEMM、CRF》:https://zhuanlan.zhihu.com/p/33397147
