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