CRF學習筆記

2021-09-19 07:03:02 字數 2733 閱讀 9029

**:

到條件隨機場(crf),就不得不提最大熵(me),可以說這兩是最常見的概率無向圖模型,並且同時都在nlp很多問題中大顯身手,比如,在nlp中最基礎的詞性標註任務中,就經常使用me和crf。由於me和crf建模思想不同,也就導致me和crf是從不同角度來解決詞性標註問題的,me是將這一問題看作是分類問題的(即,輸入當前詞的特徵,然後由me模型給出乙個類別標籤),而crf則是將其視為序列標註問題(crf會對整個輸出序列進行建模)。就這一問題而言,crf效果一般會好於me,但相應的計算量也會大一些。其實在後續內容中,我們還會看到crf模型的表示和me的表示在形式上非常相似,但是需要注意的是由於兩者建模思想完全不同,所以實質是有很多區別,後續內容會詳細介紹。更具體的,me和crf的關係可以從下圖中看出,

本文主要參考了李航的《統計學習方法》、周志華的《機器學習》和daphne koller的《probabilistic graphical models》這三本書。

首先,我們先簡單了解一下什麼是概率圖模型以及什麼是概率無向圖模型:

有了上面的概念後,我們來看看什麼是條件隨機場(crf):如果給定的mrf中每個隨機變數下面還有觀察值,我們要確定的是給定觀察集合下mrf的分布,也就是條件分布,那麼這個mrf就稱為crf(conditional random field)。它的條件分布形式完全類似於mrf的分布形式,只不過多了乙個觀察集合x=(x1,x2,…,xn)x=(x1,x2,…,xn)。

接下來的問題,就是如何引數化這個條件概率分布。根據上述定義,給定觀察集合xx後,輸出集合yy實質是乙個mrf,所以引數化這個條件概率的方法和mrf模型的引數化方法是一樣的。然而,由於圖中的互動影響是無向的,所以無法使用在給定其他節點時在乙個節點上表示分布的標準cpd(注:這是貝葉斯網路的引數化方法),相反,我們需要更加對稱的引數化方法。同時,也正是由於這種對稱性存在,使得mrf模型的引數化更加困難,也更加難於理解(不像貝葉斯網路那樣直觀)。

在進一步介紹mrf引數化形式之前,先介紹一種分布——吉布斯分布(gibbs distribution)

然後再介紹乙個定理:hammersley-clifford 定理

hammersley-clifford 定理指出:馬爾科夫隨機場和gibbs分布是一致的,即概率無向圖模型的聯合概率分布p(y)可以表示為如下形式:

p(y)=1z∏cψc(yc)p(y)=1z∏cψc(yc)

z=∑y∏cψc(yc)z=∑y∏cψc(yc)

其中,cc是無向圖的最大團,ycyc是cc的結點對應的隨機變數,ψc(yc)ψc(yc)(勢函式)是cc上定義的嚴格正函式,乘積是在無向圖所有的最大團上進行的。

周志華的《機器學習》一書中給出了hammersley-clifford 定理必要性證明(即gibbs分布是馬爾科夫隨機場),感興趣的可以推導一下充分性。

既然mrf可以拆分成多個因子的乘積的形式,那麼同樣的crf中的條件概率分布p(y|x)p(y|x)也可以由多個因子相乘來表示。更具體的,我們這裡只研究線性鏈crf,因為目前序列標註問題主要用的就是線性鏈crf。什麼是線性鏈crf以及線性鏈crf和其他模型的關係可以見下圖,

根據上述mrf引數化的方法,我們只需要在最大團上定義勢函式ψc(yc)ψc(yc)即可。同時由於線性鏈crf是線性的,隨意最大團實際上就是相鄰兩個節點,因此,線性鏈crf可以表示成如下形式,

p(y│x)=1z(x)exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))p(y│x)=1z(x)exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))

其中,z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))

式子中,tktk和slsl是特徵函式(tktk是轉移特徵,slsl是狀態特徵),λkλk和μlμl是對應的權值。z(x)z(x)是規範化因子,求和是在所有可能的輸出序列上進行的。需要額外說明一下,這只是線性鏈crf的一種形式,相當於我們用ef(x)ef(x)來作為勢函式,而f(x)f(x)用的是特徵函式(特徵函式同最大熵的特徵函式一樣,∈0,1∈0,1)的線性求和的形式,所以這算是比較******的模型。事實上,很多crf的公升級版,比如將深度神經網路學到的特徵表示替代上述式子中的特徵函式(e.g,ma et al., 2016),由於引入了神經網路,所以這裡的f(x)f(x)不再是線性的了。因而,勢函式的形式可以是多樣的,但後續討論中我們只對這種簡單的定義形式進行研究。

上述crf表示形式只是為了方便理解,我們將特徵函式拆分成了兩部分——轉移特徵tktk和狀態特徵slsl,接下來我們對這一表示形式進行簡化。

為了方便起見,首先將轉移特徵和狀態特徵及其權重用統一的符號表示,設有k1k1個轉移特徵,k2k2個狀態特徵,k=k1+k2k=k1+k2,記

fk(y(i−1),yi,x,i)=,l=1,2,..,m=argmax1≤j≤m,l=1,2,..,mδi(l)=max1≤j≤m,l=1,2,..,mψi(l)=argmax1≤j≤m,l=1,2,..,m

(3) 終止

maxy(w⋅f(y,x))y∗n=max1≤j≤mδn(j)=argmax1≤j≤mδn(j)maxy⁡(w⋅f(y,x))=max1≤j≤mδn(j)yn∗=arg⁡max1≤j≤m⁡δn(j)

(4) 返回路徑

y∗i=ψi+1(y∗i+1),i=n−1,n−2,…,1yi∗=ψi+1(yi+1∗),i=n−1,n−2,…,1

ps:想對crf有更深入研究的可以參考一下這份資料《an introduction to conditional random fields》

CRF 及CRF 安裝與解釋

conditional random field 條件隨機場,一種機器學習技術 模型 crf由john lafferty最早用於nlp技術領域,其在nlp技術領域中主要用於文字標註,並有多種應用場景,例如 本文主要描述如何使用crf技術來進行中文分詞。1.crf把分詞當做字的詞位分類問題,通常定義字...

CRF原理和CRF 安裝與使用

普通的分類問題是把 x,y 看做乙個樣本,序列分類問題是把 x1,xt,y1,yt 整體看做乙個樣本。比如以前用 svm,輸入x輸出y是標量,表示類別 現在用crf,輸入x輸出y是個序列,表示不同位置 時刻的類別。通過訓練迭代出各個特徵函式的類別。crf通過迭代各特徵函式的權重使得對狀態序列的所有位...

條件隨機場(CRF)及CRF 安裝使用

這個,終於到了要解決命名實體識別的問題,搞自然語言處理,貌似這個繞不開的。crf,傳統的幹這活的利器,聽名字就是高大上。既然繞不開,那就整整吧。crf是用來標註和劃分序列結構資料的概率化結構模型。言下之意,就是對於給定的輸出,標識序列y和觀測序列x,條件隨機場通過定義條件概率p y x 而不是聯合概...