HMM,MEMM,CRF總結和比較
HMM(隱馬爾科夫)
1 HMM是產生式模型
HMM是一種產生式模型,定義了聯合概率分佈p(x,y) ,其中x和y分別表示觀察序列和相對應的標註序列的隨機變數。為了能夠定義這種聯合概率分佈,產生式模型需要枚舉出所有可能的觀察序列,這在實際運算過程中很困難,所以我們可以將觀察序列的元素看做是彼此孤立的個體, 即假設每個元素彼此獨立(和naive bayes類似),任何時刻的觀察結果只依賴於該時刻的狀態。
2 特點(兩個基本假設):
(1)後一個隱藏狀態只依賴於前一個隱藏狀態。
或者可以稱為馬爾科夫假設(Markov Assumption)或者一階馬爾科夫鏈:下一個詞的出現僅依賴於它前面的一個或幾個詞。
(2)觀測值之間相互獨立,觀測值只依賴於該時刻的馬爾科夫鏈的隱狀態。
3 兩個狀態集合
(1)隱藏狀態集合(假如是N*1維),例如是分詞任務的詞性
(2)觀測狀態集合(假如是M*1維),例如是分詞任務具體的一個單詞
4 模型的元素
(1)初始概率向量PI,是指隱藏狀態集合的初始分佈(N維)
(2)狀態轉移概率矩陣A,是指任意兩個隱藏狀態之間的轉變概率(N*N維)
(3)觀測概率矩陣(或者稱為混淆矩陣)B,是指隱藏狀態到觀測狀態的變化矩陣(N*M維)
5 三個基本問題
(1)評估問題(概率計算),已知模型引數 λ= (A, B, π)和觀測序列O,求在該模型λ下求觀測序列O出現的概率P(O|λ)
(2)學習問題(訓練),已知觀測序列O,求模型引數 λ=(π, A, B), 使得P(O|λ)最大。
(3)解碼問題(預測),已知觀測序列O和模型引數引數 λ=(π, A, B),求一個隱藏狀態序列S(s1,s2,...st),能最好的解釋觀測序列O(o1,o2,...ot)。也就是輸出最可能的隱藏序列S(s1,s2,...st)。
上面訓練的時候沒有涉及到隱狀態,所以用HMM是通過求聯合概率P(x,y),在通過貝葉斯公式求得P(y|x)的。
所以HMM是生成模型。
6 對於上面第一種問題:評估問題(概率計算)解決方案
(1)直接計算(實際不可行)
對於輸入的觀測序列O(o1,o2...ot),通過列舉所有可能長度為t的隱藏狀態序列S(s1,s2,...st)。求所有可能的狀態序列的和即可求得P(O|λ)。
(2)前向演算法 (前向遞推)
需要定義一個輔助量稱為前向概率(名字無所謂)表示到時刻t部分觀測序列(o1,o2...,ot)且此時隱狀態為qi的概率。
記作:
其實核心就是要考慮到狀態集合和觀測序列集合的資訊。
其中第二步遞推公式的由來按照如下圖來理解,此時是時刻t+1,此時的狀態是qi。前一時刻t,各種狀態都有可能q1q2...qN
(3)後向演算法 (後向遞推)
就是和前向演算法不同之處是:定義的輔助變數是t時刻之後的觀察序列,計算遞推公式的方向相反
7 對於上面第二種問題:學習問題(訓練)解決方案,就是學習模型引數
依賴於資料來源分兩種情況。如果訓練資料是包含觀測序列和隱藏狀態序列的就可以用監督學習,如果只有觀測序列那麼久無監督學習。
7.1 有監督:極大似然,其實就是先驗統計
訓練語料是n個長度相同的觀測序列和對應的隱藏狀態序列{(O1,S1),(O2,S2)...(On,Sn)}
(1)初始概率向量PI(N維)
訓練樣本中隱藏狀態的先驗概率(直接統計)
(2)狀態轉移概率矩陣A(N*N維)
(直接統計)
(3)觀測概率矩陣(或者稱為混淆矩陣)B(N*M維)
(直接統計)
7.2 無監督:Baum-Welch演算法也就是EM演算法
8 對於上面第三種問題:解碼問題(預測)【已知模型引數和觀測序列,求隱藏序列】
主要有如下兩種方法
8.1 近似演算法
每個時刻選擇在該時刻最有可能出現的狀態,該方法是貪心的保證每個時刻的最優狀態,沒有考慮時序關係,不保證全域性最優。
8.2 維特比演算法(動態規劃演算法)
用動態規劃來求概率最大的路徑即最優路徑。動態規劃兩個要素最優子結構和重疊子問題。
最優子結構:如果問題的一個最優解包含了子問題的最優解,則該問題具有最優子結構。當一個問題具有最優子結構的時候,我們就可能要用到動態規劃(貪心策略也是有可能適用的)。
重疊子問題:適用於動態規劃求解的最優化問題必須具有的第二個要素是子問題的空間要“很小”,也就是用來解原問題的遞迴演算法可以反覆的解同樣的子問題,而不是總在產生新的子問題。典型的,當一個遞迴演算法不斷的呼叫同一問題時,我們說該最優問題包含重疊子問題。
求解:
需要引入輔助變數δ和φ。δ時刻t隱藏狀態為i的所有單個路徑(i1,i2,...,it)中概率最大的路徑。
φ表示時刻t狀態為i的所有單個路徑(i1,i2,...,it)中概率最大路徑的第t-1時刻節點的隱狀態
具體求解過程