一、說(shuō)明
根據(jù)L.R Rabiner等人[1]的說(shuō)法,隱馬爾可夫模型是一個(gè)雙重嵌入的隨機(jī)過(guò)程,其潛在的隨機(jī)過(guò)程是不可觀察的(它是隱藏的),但只能通過(guò)另一組產(chǎn)生觀察序列的隨機(jī)過(guò)程來(lái)觀察。
基本上,隱馬爾可夫模型 (HMM) 是觀察一系列排放,但不知道模型生成排放所經(jīng)歷的狀態(tài)序列的模型。我們分析隱馬爾可夫模型,以從觀察到的數(shù)據(jù)中恢復(fù)狀態(tài)序列。 聽(tīng)起來(lái)很混亂吧...
二、馬爾可夫過(guò)程
2.1 馬爾可夫模型和馬爾可夫鏈
要理解HMM,我們首先需要了解什么是馬爾可夫模型。馬爾可夫模型是一種隨機(jī)模型,用于對(duì)偽隨機(jī)變化狀態(tài)進(jìn)行建模。這意味著當(dāng)前狀態(tài)不依賴(lài)于以前的狀態(tài)。最簡(jiǎn)單的馬爾可夫模型是馬爾可夫 鏈。在這種情況下,當(dāng)前狀態(tài)僅取決于上一個(gè)狀態(tài)。
馬爾可夫鏈
2.2 什么是HMM和馬爾可夫鏈......
Rob 參加了一個(gè)游戲,在該游戲中,飛鏢擊中靶心后會(huì)頒發(fā)獎(jiǎng)品。獎(jiǎng)品保存在屏幕后面的 3 個(gè)不同的盒子(紅色、綠色和藍(lán)色)中。現(xiàn)在,分發(fā)獎(jiǎng)品的人會(huì)根據(jù)他早上是否被堵在交通中來(lái)發(fā)放獎(jiǎng)品。這些稱(chēng)為狀態(tài)。現(xiàn)在,由于 rob 知道該地區(qū)交通的總體趨勢(shì),他可以將其建模為馬爾可夫鏈。但是他沒(méi)有任何關(guān)于交通的確切信息,因?yàn)樗麩o(wú)法直接觀察它們。他們對(duì)他是隱藏的。他也知道獎(jiǎng)品將從綠色、紅色或藍(lán)色的盒子中挑選出來(lái)。這些稱(chēng)為觀察。由于他無(wú)法觀察到狀態(tài)和觀測(cè)結(jié)果之間的相關(guān)性,因此該系統(tǒng)是HMM的系統(tǒng)。
隱馬爾可夫模型
2.2.1 轉(zhuǎn)移概率
轉(zhuǎn)移概率是從一種狀態(tài)移動(dòng)到另一種狀態(tài)的概率。在這種情況下,如果今天我們有流量,明天有 55% 的可能性會(huì)有流量,明天有 45% 的可能性沒(méi)有流量。同樣,如果我們今天沒(méi)有流量,明天有 35% 的可能性沒(méi)有流量,明天有 65% 的可能性會(huì)有流量。
2.2.2 排放概率
它們是觀察者可以觀察到的輸出概率 。在這里,連接狀態(tài)和觀測(cè)值的概率是發(fā)射概率。
HMM 在 python 中的表示
三、HMM的基本結(jié)構(gòu)
正如我們之前所討論的,隱馬爾可夫模型具有以下參數(shù):
隱藏狀態(tài)集(M)
交易概率矩陣 (A)
一系列觀測(cè)值(t)
發(fā)射概率矩陣(也稱(chēng)為觀測(cè)似然)(B)
參數(shù)的初始概率分布
3.1 HMM 的核心問(wèn)題
第一個(gè)問(wèn)題是找到觀察到的序列的概率。
第二個(gè)問(wèn)題是找到最可能的隱藏狀態(tài)序列——維特比算法、正向-后向算法
第三個(gè)問(wèn)題是找到最大化觀測(cè)數(shù)據(jù)可能性的參數(shù)——鮑姆-韋爾奇算法
3.2 關(guān)于HMM的假設(shè)
馬爾可夫假設(shè)
由于HMM是馬爾可夫模型的增強(qiáng)形式,因此以下假設(shè)成立:未來(lái)狀態(tài)將僅依賴(lài)于當(dāng)前狀態(tài)。
它表示如下:
3.2.1 馬爾可夫假設(shè)
輸出獨(dú)立性
輸出觀測(cè)值 (oi) 的概率僅取決于產(chǎn)生觀測(cè)值的狀態(tài),而不取決于任何其他狀態(tài)或任何其他觀測(cè)值。它表示如下:
3.2.2 輸出獨(dú)立性
前向算法
讓我們有一個(gè)簡(jiǎn)單的HMM,我們有兩個(gè)隱藏的狀態(tài),它們代表一個(gè)城鎮(zhèn)的天氣,我們也知道一個(gè)孩子,他可以根據(jù)天氣攜帶兩樣?xùn)|西中的任何一個(gè),一頂帽子和一把雨傘。孩子的物品與天氣之間的關(guān)系由橙色和藍(lán)色箭頭顯示。黑色箭頭表示狀態(tài)的過(guò)渡。
圖片來(lái)源:作者
假設(shè)我們知道以下項(xiàng)目序列
一個(gè)序列
我們使用前向算法來(lái)查找觀察到序列的概率,給定HMM的參數(shù)是已知的,即轉(zhuǎn)移矩陣,發(fā)射矩陣和平穩(wěn)分布(π)。
具有潛在隱藏狀態(tài)的序列
我們找到了所有可能的隱藏狀態(tài),這些狀態(tài)可能導(dǎo)致我們進(jìn)入這個(gè)序列。我們找到每個(gè)序列的累積概率。我們發(fā)現(xiàn)總共有 8 個(gè)這樣的序列。現(xiàn)在計(jì)算每個(gè)序列的概率將是一項(xiàng)繁瑣的任務(wù)。直接計(jì)算聯(lián)合概率需要對(duì)所有可能的狀態(tài)序列進(jìn)行邊緣化,其數(shù)量隨著序列長(zhǎng)度的增加呈指數(shù)增長(zhǎng)。相反,前向算法利用隱馬爾可夫模型的條件獨(dú)立規(guī)則以遞歸方式執(zhí)行計(jì)算。
序列的概率
序列的概率是隱藏狀態(tài)的所有可能序列的總和,可以表示為上述。
遞歸地表示如下,其中 t 是序列的長(zhǎng)度,s 表示隱藏狀態(tài)。
概率的遞歸表達(dá)式
例如,如果 t=1,
現(xiàn)在,為了得到最終答案,我們找到每個(gè)隱藏狀態(tài)的α t并將其相加。它表示如下:
前向算法的最終表達(dá)式
在前向算法中,我們使用當(dāng)前時(shí)間步的計(jì)算概率來(lái)推導(dǎo)出下一個(gè)時(shí)間步的概率。因此,它在計(jì)算上更有效。
前向算法主要用于需要我們?cè)谥烙^察序列時(shí)確定處于特定狀態(tài)的概率的應(yīng)用程序。我們首先計(jì)算為上一個(gè)觀測(cè)值計(jì)算的狀態(tài)的概率,并將其用于當(dāng)前觀測(cè)值,然后使用轉(zhuǎn)移概率表將其擴(kuò)展到下一步。該方法緩存所有中間狀態(tài)概率,因此僅計(jì)算一次。這有助于我們計(jì)算固定狀態(tài)路徑。該過(guò)程也稱(chēng)為后驗(yàn)解碼。
3.3 逆向算法
后向算法是正向算法的時(shí)間反轉(zhuǎn)版本。在逆向算法中,我們需要找到機(jī)器在時(shí)間步 t 處處于隱藏狀態(tài)并生成序列剩余部分的概率。在數(shù)學(xué)上,它表示為:
3.4 正向-后向算法
正向-后向算法是一種推理算法,用于計(jì)算所有隱藏狀態(tài)變量(分布)。此推理任務(wù)通常稱(chēng)為平滑。該算法利用動(dòng)態(tài)規(guī)劃原理,高效計(jì)算兩次獲得后驗(yàn)邊際分布所需的值。第一遍在時(shí)間上前進(jìn),而第二遍在時(shí)間上倒退;因此得名正向-后向算法。它是上面解釋的正向和后向算法的組合。該算法計(jì)算給定 HMM 的觀察序列的概率。該概率可用于對(duì)識(shí)別應(yīng)用中的觀察序列進(jìn)行分類(lèi)。
四、維特比算法
對(duì)于包含隱藏變量的 HMM,確定哪個(gè)變量序列是某些觀察序列最有可能的基礎(chǔ)源的任務(wù)稱(chēng)為解碼任務(wù)。解碼器的任務(wù)是在有經(jīng)過(guò)訓(xùn)練的模型和一些觀察到的數(shù)據(jù)時(shí)找到最佳隱藏序列。更正式地說(shuō),給定作為輸入 a 作為 A 和 B 和一個(gè)觀察序列 O = o₁, o₂, ..., ot,找到最可能的狀態(tài)序列 S = s₁, s₂, . . . .圣。
我們當(dāng)然可以使用前向算法來(lái)找到所有可能的序列,并在最大可能性上選擇最好的序列,但這無(wú)法做到,因?yàn)榇嬖谥笖?shù)級(jí)數(shù)量的狀態(tài)序列。
與前向算法一樣,它估計(jì) vt(j) 在看到第一個(gè) t 觀測(cè)值并通過(guò)最可能的狀態(tài)序列 s₁、s₂、. .圣。每個(gè)單元格 vt( j) 的值是遞歸計(jì)算的,采用可能將我們引向該單元格的最可能路徑。形式上,每個(gè)單元格表示以下概率
我們可以通過(guò)一個(gè)例子更好地理解這一點(diǎn),
五、HMM 模型
假設(shè)我們有一個(gè) HMM 模型,如圖所示。我們總是從太陽(yáng)(x),云(y)開(kāi)始,以雪(z)結(jié)束。現(xiàn)在,您已經(jīng)觀察了前向算法問(wèn)題中的序列。生成此路徑的最可能的序列是什么?
選項(xiàng)包括:
手動(dòng)計(jì)算
在這種情況下,粗體路徑是維特比路徑。當(dāng)您從上一個(gè)狀態(tài)返回時(shí),您可以看到這一點(diǎn):0.3*0.4*0.136 > 0.7*0.4*0.024
同樣,0.4*0.5*0.4 > 0.7*0.4*0.2
因此,最可能的序列是 xxyz。
請(qǐng)注意,可以有多個(gè)可能的最佳序列。
由于每個(gè)狀態(tài)僅取決于之前的狀態(tài),因此您可以逐步獲得最可能的路徑。在每一步中,您都會(huì)計(jì)算最終進(jìn)入狀態(tài) x、狀態(tài) y、狀態(tài) z 的可能性。在那之后,你是如何到達(dá)那里的并不重要。
六、鮑姆-韋爾奇算法
該算法為“在什么參數(shù)化下觀察到的序列最有可能?
鮑姆-韋爾奇算法是期望最大化(EM)算法的一個(gè)特例。它利用前向-后向算法來(lái)計(jì)算特定步驟的統(tǒng)計(jì)信息。其目的是調(diào)整HMM的參數(shù),即狀態(tài)轉(zhuǎn)移矩陣,發(fā)射矩陣和初始狀態(tài)分布。
從過(guò)渡和發(fā)射矩陣的隨機(jī)初始估計(jì)開(kāi)始。
計(jì)算每個(gè)躍遷/發(fā)射的使用頻率的預(yù)期。我們將估計(jì)潛在變量 [ ξ, γ ]
根據(jù)這些估計(jì)值重新計(jì)算躍遷和發(fā)射矩陣的概率。
重復(fù)直到收斂
潛在變量γ的表達(dá)式
γ是給定觀察到的序列 Y 和參數(shù) theta 時(shí)處于狀態(tài) i 的概率
潛在變量 ξ 的表達(dá)式
ξ 是給定觀察到的序列 Y 和參數(shù) theta 時(shí)處于狀態(tài) i,j 的概率
參數(shù) (A, B) 更新如下
更新 A 或轉(zhuǎn)換矩陣
更新 B 或發(fā)射矩陣
七、HMM的優(yōu)勢(shì)
NLP中使用的HMM標(biāo)記器訓(xùn)練起來(lái)非常簡(jiǎn)單(只需要從訓(xùn)練語(yǔ)料庫(kù)中編譯計(jì)數(shù))。
性能相對(duì)較好(命名實(shí)體的性能超過(guò) 90%)。
它消除了標(biāo)簽偏差問(wèn)題
由于每個(gè) HMM 僅使用正數(shù)據(jù),因此它們可以很好地?cái)U(kuò)展;因?yàn)榭梢栽诓挥绊憣W(xué)習(xí)的 HMM 的情況下添加新單詞。
我們可以初始化模型,使其接近被認(rèn)為是正確的。
八、HMM的缺點(diǎn)
為了定義觀察和標(biāo)簽序列的聯(lián)合概率,HMM需要枚舉所有可能的觀察序列。
表示多個(gè)重疊要素和長(zhǎng)期依賴(lài)關(guān)系是不切實(shí)際的。
要評(píng)估的參數(shù)數(shù)量巨大。因此,它需要一個(gè)大型數(shù)據(jù)集進(jìn)行訓(xùn)練。
HMM,訓(xùn)練涉及最大化屬于類(lèi)的示例的觀察到的概率。但它并沒(méi)有最小化觀察其他類(lèi)實(shí)例的概率,因?yàn)樗皇褂谜龜?shù)據(jù)。
它采用了馬爾可夫假設(shè),該假設(shè)不能很好地映射到許多現(xiàn)實(shí)世界的域