条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
作者:爾總的馬甲
鏈接:https://www.zhihu.com/question/53458773/answer/554436625
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
https://www.zhihu.com/question/53458773
可以按照這個順序理解:
1. 簡單了解一下概率圖模型
2. 簡單了解一下樸素貝葉斯分類器和隱馬爾可夫模型, 樸素貝葉斯模型擴展到序列問題,就是一個隱馬
3. 其實還有個最大熵馬爾可夫模型MEMM,就是結(jié)合了logistics regression地馬爾科夫網(wǎng)絡(luò)
4. CRF論文其實是拿MEMM來作比較的
5. 隱馬爾可夫可以推導(dǎo)出線性鏈CRF
其他輔助理解的擴展
6. CRF與Logistic Regression
7. 生成式和判別式模型
8. 簡單的代碼實現(xiàn)
概率圖模型
Graphical Models, 用圖的形式表示隨機變量之間條件依賴關(guān)系的概率模型,是概率論與圖論的結(jié)合。圖中的節(jié)點表示隨機變量,缺少邊表示條件獨立假設(shè)。
G = (V, E). 其中 V: vertex, 頂點/節(jié)點, 表示隨機變量. E: edge, 邊/弧. 如果兩個節(jié)點不存在邊, 則二者條件獨立.
image from: Probabilistic Graphical Models Principles and Techniques
從圖上可以看到, 貝葉斯網(wǎng)絡(luò)(Bayesian Networks, BNs)是有向圖, 每個節(jié)點的條件概率分布表示為P(當(dāng)前節(jié)點 | 父節(jié)點).
而馬爾可夫網(wǎng)絡(luò)則是無向圖. 無向圖形模型是指一整個家族的概率分布,每個概率分布都根據(jù)給定的因子集合進行因式分解。一般用random field來指代無向圖中定義的特定分布. 數(shù)學(xué)上表達無向圖, 指給定子集 , 對于所有 和任何因子選項 , , 無向圖定義的各個分布可以寫成:
Z是正則項用于保證分布 和為
Markov Net 包含了一組具有馬爾可夫性質(zhì)的隨機變量. 馬爾可夫隨機場(Markov Random Fields, MRF)是由參數(shù) 表示, 其中 是狀態(tài)的集合, 是初始狀態(tài)的概率, 是狀態(tài)間的轉(zhuǎn)移概率。一階馬爾可夫鏈就是假設(shè) 時刻的狀態(tài)只依賴于前一時刻的狀態(tài),與其他時刻的狀態(tài)和觀測無關(guān)。這個性質(zhì)可以用于簡化概率鏈的計算。使用類似性質(zhì)作為假設(shè)的模型還有Bi-gram語言模型等.
從 樸素貝葉斯 到 隱馬爾可夫模型
樸素貝葉斯分類器(NBs)假設(shè)條件獨立性(樸素貝葉斯假設(shè), Hand and Yu, 2001):
在給定目標值 y 時,x的屬性值之間相互條件獨立。這樣, 計算可以簡化為
樸素貝葉斯模型只考慮了單個輸出變量y。如果要為一個觀察序列 預(yù)測對應(yīng)的分類序列 ,一個簡單的序列模型可以表示為多個NBs的乘積。此時不考慮序列單個位置之間的相互依賴。
此時每個觀察值 僅取決于對應(yīng)序列位置的類變量 。由于這種獨立性假設(shè),從一個步驟到另一個步驟的轉(zhuǎn)換概率不包括在該模型中。然而這種假設(shè)在實踐中幾乎不會符合,這導(dǎo)致這種模型的性能很有限。
因此,比較合理的假設(shè)是觀測序列在連續(xù)相鄰位置間的狀態(tài)存在依賴。要模擬這種依賴關(guān)系, 就要引入狀態(tài)轉(zhuǎn)移概率 , 由此引出著名的隱馬爾可夫模型 Hidden Markov model, HMM, Rabiner (1989)。
HMM的參數(shù) ,其中 是隱狀態(tài)(輸出變量)的集合, 是觀察值(輸入)集合, 是初始狀態(tài)的概率, 是狀態(tài)轉(zhuǎn)移概率矩陣 , 是輸出觀察值概率矩陣 。在POS任務(wù)中, 就是觀察到的句子, 就是待推導(dǎo)的標注序列, 因為詞性待求的, 所以人們稱之為隱含狀態(tài).
概括一下HMM設(shè)定的假設(shè):
1. 假設(shè)每個狀態(tài)僅依賴于其前一個狀態(tài),
2. 假設(shè)每一個觀察值 僅依賴于當(dāng)前狀態(tài)值 ,
那么狀態(tài)序列 和觀察序列 的聯(lián)合概率可以分解為
從樸素貝葉斯, 到HMM有如下轉(zhuǎn)換關(guān)系:
Diagram of the relationship between naive Bayes, logistic regression, HMMs, linear-chain CRFs, generative models, and general CRFs. image from: An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
HMM的缺陷是其基于觀察序列中的每個元素都相互條件獨立的假設(shè)。即在任何時刻觀察值僅僅與狀態(tài)(即要標注的標簽)有關(guān)。對于簡單的數(shù)據(jù)集,這個假設(shè)倒是合理。但大多數(shù)現(xiàn)實世界中的真實觀察序列是由多個相互作用的特征和觀察序列中較長范圍內(nèi)的元素之間的依賴而形成的。而條件隨機場(conditional random fiel, CRF)恰恰就彌補了這個缺陷.
從上圖可以看到當(dāng)HMM有了條件分布后,就變成了線性條件隨機場 。
隱馬爾可夫模型與最大熵馬爾可夫模型
最大熵馬爾可夫模型(Maximum Entropy Markov Models, MEMM)跟HMM的生成式概率圖不同,MEMM對當(dāng)前狀態(tài)的判斷依賴于前一時間步的狀態(tài)和當(dāng)前觀察值的狀態(tài)。
image from McCallum, A. (1909)
所謂"熵"就是信息論中的概念:
> Entropy: the uncertainty of a distribution.
量化Entropy: surprise.
Entropy = expected surprise
Event ,
Probability ,
"Surprise" ,
Entropy:
熵最大的分布就是均勻分布,也就是每一個選項都一樣,等于什么信息都沒給。如果給了額外的信息,如約束,特征之后,熵就可以降低。
“最大熵”是指遵循最大熵原則:
> model all that is known and assume nothing about that which is unknown.
也就說, 如果給定了一組事實,我們最好選擇一個符合這些事實的模型,剩余情況則盡可能地一視同仁不做任何區(qū)別對待。最佳的模型是符合訓(xùn)練數(shù)據(jù)衍生的約束條件的模型,同時盡可能少地做假設(shè),也就是少做承諾,也就避免過擬合。
MEMM 把HMM中的轉(zhuǎn)移概率和發(fā)射概率替換為一個概率:當(dāng)前狀態(tài)s依賴于前一個狀態(tài) 和當(dāng)前觀察值o,
MEMM的訓(xùn)練思路是這樣: 對每個狀態(tài) , 將訓(xùn)練數(shù)據(jù)分為<觀察-目標狀態(tài)>對 , 也就是把 分成 個分別訓(xùn)練的exponential model , 再通過最大化熵來訓(xùn)練exponential models, 換種說法叫logistic regression classifier.
用的約束條件是學(xué)習(xí)分布中每個特征 a 的期望值與訓(xùn)練數(shù)據(jù)的觀測序列上每個特征的期望值相同. 滿足這些約束的最大熵分布(Della Pietra,Della Pietra和Lafferty,1997)是唯一的,與最大似然分布一致,對每一個位置的狀態(tài) , 具有指數(shù)形式:
其中 是待估計的參數(shù), 是歸一化因子
S是狀態(tài)集.
如果把問題簡化為線性的相鄰依賴, 那么每一個狀態(tài) 僅依賴于前一個狀態(tài) . 用Y表達標簽序列, 用X表達觀察序列, 那么
其中
則
MEMM將整體的概率分布分解為每一個時間步的分布之積,所以算loss只需要把每一步的交叉熵求和。只需要每一步單獨執(zhí)行softmax,所以MEMM是完全可以并行的,速度跟直接逐步Softmax基本一樣。
雖然MEMM能克服HMM的很多弱點, 但是MEMM自身也有一個 **label bias** 問題, 就是標簽偏差, 離開給定狀態(tài)的轉(zhuǎn)移僅相互對比,而不是與全局所有其他轉(zhuǎn)移對比。轉(zhuǎn)移分數(shù)是分別對每個狀態(tài)的歸一化, 這意味到達一個狀態(tài)的所有質(zhì)量必須在可能的后續(xù)狀態(tài)之間分配。觀察值可以影響哪個目標狀態(tài)獲得質(zhì)量,但無法影響多少質(zhì)量可以被傳遞。這會導(dǎo)致模型偏向輸出選擇較少的狀態(tài), 比如極端情況下, 在訓(xùn)練集中某個狀態(tài) 只發(fā)現(xiàn)了有一種可能的轉(zhuǎn)移 , 那么狀態(tài) 別無選擇,只能將所有質(zhì)量傳遞給它的唯一的 transition output 。
MEMM和CRF
CRF再擁有MEMM的優(yōu)點的同時, 克服了MEMM的缺點. CRF和MEMM的關(guān)鍵區(qū)別在于,MEMM使用每個狀態(tài)的指數(shù)模型來確定給定當(dāng)前狀態(tài)的下一狀態(tài)的條件概率,而CRF則使用一個指數(shù)模型來表示整個標簽序列的聯(lián)合概率, 這個概率條件依賴于給定的完整觀察序列。因此,在不同狀態(tài)下,不同特征的權(quán)重可以相互抵消。也就是說CRF是一個以觀測序列X為全局條件的隨機場.
如果把問題簡化為線性鏈, CRF把Y看成一個整體,截至每一個時間步n, 通過統(tǒng)計所有特征可以得一個總分
其中 是轉(zhuǎn)移矩陣
可以得到對應(yīng)得概率是
CRF的計算困難之處在于上式的分母項包含了所有可能路徑 的求和,搜索空間非常龐大.
線性鏈CRF和線性鏈MEMM比較, 區(qū)別僅在于分母(也就是歸一化因子)的計算方式不同,CRF的是全局歸一化的,而MEMM的是局部歸一化的.
隱馬爾可夫模型 到 Linear-Chain 條件隨機場
HMM和CRF的對應(yīng)關(guān)系類似于Naive-Bayes和Logistics regression, 都是生成式和判別式的對比. HMM則采用生成式方法進行標簽生成, CRF將各種特征組合在一起判斷標簽. HMM可以推演出特定形式的CRF. 把上式的HMM改寫成如下形式:
HMM是生成式的, 借鑒Naive Bayes 到 logistics regression的方式, 通過引入特征函數(shù)這個概念, , 對于每一個 跳轉(zhuǎn), 加入特征函數(shù) , 對于每一個(狀態(tài)-觀察值)對 , 加入特征函數(shù) . 以上特征函數(shù)統(tǒng)一表示為 , 那么可以進一步把HMM寫成:
可以得出條件概率
所以當(dāng)聯(lián)合概率 以HMM的形式因式分解, 則關(guān)聯(lián)的條件分布 就是一種特定形式的 Linear-chain CRF.
Graphical model of the HMM-like linear-chain CRF. by Sutton, C. 2010
Linear Chain CRF
隨機場, 可以看成是一組隨機變量的集合(這組隨機變量對應(yīng)同一個樣本空間)。當(dāng)給每一個位置按照某種分布隨機賦予一個值之后,其全體就叫做隨機場。這些隨機變量之間可能有依賴關(guān)系,一般來說,也只有當(dāng)這些變量之間有依賴關(guān)系的時候,我們將其單獨拿出來看成一個隨機場才有實際意義。
如果給定的馬爾科夫隨機場(MRF)中每個隨機變量下面還有觀察值,我們要確定的是給定觀察集合下,這個MRF的分布,也就是條件分布,那么這個MRF就稱為 Conditional Random Fields (CRF)。它的條件分布形式完全類似于MRF的分布形式,只不過多了一個觀察集合X。所以, CRF本質(zhì)上是給定了條件(觀察值observations)集合的MRF
1.特征函數(shù)的選擇: 特征函數(shù)的選取直接關(guān)系模型的性能。
2.參數(shù)估計: 從已經(jīng)標注好的訓(xùn)練數(shù)據(jù)集學(xué)習(xí)條件隨機場模型的參數(shù),即各特征函數(shù)的權(quán)重向量λ。
3.模型推斷: 在給定條件隨機場模型參數(shù)λ下,預(yù)測出最可能的狀態(tài)序列。
HMM的生成式概率模型是 , 它的條件概率 本質(zhì)上就是選取了特定特征函數(shù)的CRF. 直接引用(Sutton, C. 2010)的定義:
An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
CRF特征函數(shù)
在CRF中,首先需要定義特征函數(shù).
然后為每個特征函數(shù) 分配權(quán)重 , 權(quán)重是從數(shù)據(jù)中學(xué)習(xí)而來. 對 個特征方程求和, 對序列每個位置 求和:
CRF的每個特征函數(shù)都是一個輸入的函數(shù), 對應(yīng)的輸出是一個實數(shù)值(只是0或1)。例如, 選擇特征函數(shù) , 當(dāng)且僅當(dāng) , 且第i個單詞以“-ly”結(jié)尾; 否則為0. 如果與此特征相關(guān)的權(quán)重 很大且為正,那么這個特征等同于說模型傾向于把以-ly結(jié)尾的單詞標記為ADVERB。
通過指數(shù)化和歸一化把這些得分轉(zhuǎn)換為概率值:
通過恰當(dāng)?shù)卦O(shè)置特征函數(shù), 就可以從CRF中構(gòu)建出一個HMM. 在CRF的對數(shù)線性形式中, 設(shè)置權(quán)重為對應(yīng)HMM(取對數(shù)后)的二元轉(zhuǎn)換和發(fā)射概率:
- 對于每個狀態(tài) , 對應(yīng)HMM的每個狀態(tài)轉(zhuǎn)換概率 , CRF定義一組特征函數(shù)為 如果 且 , 為這些特征賦予權(quán)重
- 對于每個狀態(tài)-觀察值pair, 對應(yīng)HMM的每個發(fā)射概率 , CRF定義一組特征函數(shù)為 如果 且 , 賦予權(quán)重 .
如此, CRF計算的似然 就精確地正比于對應(yīng)的HMM, 也就是說, 任意的HMM都可以由CRF表達出來.
Linear-Chain CRF 特征函數(shù)的定義非常靈活, 不同的形式用于不同的功能. 比如對于HMM而言, 不管輸入怎么變, 狀態(tài)轉(zhuǎn)換 的分值是一樣的 ; 那么在CRF中, 我們通過增加這樣一個特征 , 使 分值依賴于當(dāng)前的觀察序列:
from: An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
這種特征常常用于文本處理中, 比如:
需要指出的是在線性鏈CRF的定義中每個feature的依賴值并不僅限于當(dāng)前和上一時間步的觀察值. 事實上, 因為CRF并不表達變量之間的依賴關(guān)系, 我們可以讓因子 依賴于整個觀察向量 并保持線性圖結(jié)構(gòu), 這時候的特征函數(shù)就是 , 可以自由檢視所有輸入變量 ,
from: An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
這個特性可以拓展到所有CRFs而不僅限于線性鏈CRF.
CRF比HMM更強大, 更泛用
CRF既具有判別式模型的優(yōu)點,又考慮到長距離上下文標記間的轉(zhuǎn)移概率,以序列化形式進行全局參數(shù)優(yōu)化和解碼的特點,解決了其他判別式模型(如MEMM)難以避免的標記偏見問題。
?
CRF與Logistic Regression
CRF的概率計算與Logistic Regression (LR)的形式類似,
在LR中, 是一個特征, 是與該特征相關(guān)的權(quán)重。提取的特征是二元特征,取值0或1,通常稱為指示函數(shù)(indicator func)。這些特征中的每一個都由與輸入x和分類y相關(guān)聯(lián)的函數(shù)計算。
實際上,CRF基本上就是邏輯回歸的序列化:與邏輯回歸是用于分類的對數(shù)線性模型不同,CRF是標簽序列的對數(shù)線性模型。
談?wù)勆墒侥P秃团袆e式模型
Diagram of the relationship between naive Bayes, logistic regression, HMMs, linear-chain CRFs, generative models, and general CRFs. image from: An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
再祭上這張圖, 第一排都是生成式的, 第二排都是判別式的.
在樸素貝葉斯與Logistic Regression, 以及HMM和CRF之間, 又有生成式和判別式的區(qū)別.
- 生成式模型描述標簽向量y如何有概率地生成特征向量x, 即嘗試構(gòu)建x和y的聯(lián)合分布 , 典型的模型有HMM,貝葉斯模型,MRF。生成式模型
- 而判別模型直接描述如何根據(jù)特征向量x判斷其標簽y, 即嘗試構(gòu)建 的條件概率分布, 典型模型如如LR, SVM,CRF,MEMM等.
原則上,任何類型的模型都可以使用貝葉斯規(guī)則轉(zhuǎn)換為另一種類型,但實際上這些方法是不同的. 生成模型和判別模型都描述了 的概率分布,但努力的方向不同。生成模型,例如樸素貝葉斯分類器和HMM,是一類可以因式分解為 的聯(lián)合分布, 也就是說,它們描述了如何為給定標簽的特征采樣或“生成”值。生成式模型從統(tǒng)計的角度表示數(shù)據(jù)的分布情況,能夠反映同類數(shù)據(jù)本身的相似度,不關(guān)心判別邊界。生成式模型的優(yōu)點是:
- 實際上帶的信息要比判別模型豐富, 研究單類問題比判別模型靈活性強
- 能更充分的利用先驗知識
- 模型可以通過增量學(xué)習(xí)得到
缺點也很明顯:
- 學(xué)習(xí)過程比較復(fù)雜;
- 在目標分類問題中準確度不高
而判別式模型, 比如 LR, 是一系列條件分布 . 也就是說,分類規(guī)則是直接建模的。原則上,判別模型也可通過為輸入提供邊際分布 來獲得聯(lián)合分布 ,但很少需要這樣。條件分布 不包括 的信息,在分類任務(wù)中無論如何也用不到。其次,對 建模的困難之處在于它通常包含很多建模難度較高的有高度依賴性的特征。判別式模型尋找不同類別之間的最優(yōu)分類面,反映的是異類數(shù)據(jù)之間的差異。優(yōu)點是:
- 分類邊界更靈活,比使用純概率方法或生產(chǎn)模型得到的更高級。
- 能清晰的分辨出多類或某一類與其他類之間的差異特征
- 在聚類、viewpoint changes, partial occlusion and scale variations中的效果較好
- 適用于較多類別的識別
缺點是:
- 不能反映訓(xùn)練數(shù)據(jù)本身的特性。
- 能力有限,可以分類, 但無法把整個場景描述出來。
用 TensorFlow 實現(xiàn) Bi-LSTM + CRF
很多序列標注問題, 如命名實體識別, 如果預(yù)先使用 Bi-LSTM 解碼序列, 經(jīng)過 Bi-LSTM 解碼后的每一步隱含狀態(tài), 包含了很多信息, 包括中長距離依賴和語法解析等, 把這些隱含狀態(tài)作為 CRF 的特征輸入 CRF 層來解碼, 可以得到一條最大概率的序列標注路徑.
比如序列經(jīng)過某個模塊(如CNN, BERT, 或者單純是Embedding層) 解碼后的 output 輸入給Bi-LSTM 層lstm_layer , 再把雙向LSTM層的每一步隱含層作為特征輸入給CRF層. TensorFlow中要使用CRF 需要用到的函數(shù)是tf.contrib.crf.crf_log_likelihood 和 tf.contrib.crf.crf_decode :
output_layer = lstm_layer(output, _true_length, is_training) with tf.variable_scope("loss"):output_layer = tf.reshape(output_layer, [-1, hidden_size])logits = tf.matmul(output_layer, output_weights, transpose_b=True)logits = tf.nn.bias_add(logits, output_bias)logits = tf.reshape(logits, [-1, FLAGS.max_seq_length, num_labels])if FLAGS.use_crf:transition_params = tf.get_variable("transition_params",shape=[num_labels, num_labels],initializer=tf.zeros_initializer())log_likelihood, transition_params = tf.contrib.crf.crf_log_likelihood(inputs=logits,tag_indices=labels,transition_params=transition_params,sequence_lengths=_true_length) # NOTE CRF decode, decode_tags [batch_size, max_seq_len] 最大概率標注路徑decode_tags, best_score = tf.contrib.crf.crf_decode(potentials=logits, transition_params=transition_params, # NOTE sequence_length: [batch_size] vector of true sequence lengths.sequence_length=_true_length)# A [batch_size] Tensor containing the -log_likelihood of each exampleper_example_loss = -log_likelihoodpredictions = decode_tagsCRF++
CRF++利用特征模板來批量自動化生成 CRF 特征, 參考 CRF++模型格式說明-碼農(nóng)場
比如
# Unigram U00:%x[-2,0] U01:%x[-1,0] U02:%x[0,0] U03:%x[1,0] U04:%x[2,0] U05:%x[-2,0]/%x[-1,0]/%x[0,0] U06:%x[-1,0]/%x[0,0]/%x[1,0] U07:%x[0,0]/%x[1,0]/%x[2,0] U08:%x[-1,0]/%x[0,0] U09:%x[0,0]/%x[1,0]# Bigram BT**: %x[#, #]中的T表示模板類型(U或B), 兩個#分別表示相對的行偏移與列偏移。
Unigram template: 用于生成 unigram features. %x[#, #]生成一個 CRF 中的點(state)函數(shù): f(s, o), 其中s為t時刻的標簽(output),o為t時刻的上下文.
- 比如 是由U02: %x[0, 0]在輸入文件的第一行生成的點函數(shù). 大致意思是, 如果第一個輸入是'今', 而且其對應(yīng)的label是'B-TIME', 那么返回1 , 也就是
Bigram template: 用于生成 bigram features, %x[#, #] 生成一個 CRF 中的邊(Edge)函數(shù) , 與 Unigram 類似, 只是還要考慮到t – 1時刻的標簽,
- 模板B默認生成 bigram 特征
?
參考資料
- http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/
- Classical probabilistic models and conditional random fields
- An Introduction to Conditional Random Fields, by Charles Sutton and Andrew McCallum
- http://www.hankcs.com/nlp/the-crf-model-format-description.html
總結(jié)
以上是生活随笔為你收集整理的条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将代码从windows移动linux上出
- 下一篇: 在notebook中如何能完整的显示长文