1. 程式人生 > >條件隨機場(Conditional random field,CRF)

條件隨機場(Conditional random field,CRF)

轉:https://www.cnblogs.com/Determined22/p/6915730.html

本文簡單整理了以下內容:

      (一)馬爾可夫隨機場(Markov random field,無向圖模型)簡單回顧

      (二)條件隨機場(Conditional random field,CRF)

       這篇寫的非常淺,基於 [1] 和 [5] 梳理。感覺 [1] 的講解很適合完全不知道什麼是CRF的人來入門。如果有需要深入理解CRF的需求的話,還是應該仔細讀一下幾個英文的tutorial,比如 [4] 。

 

(一)馬爾可夫隨機場簡單回顧

      概率圖模型(Probabilistic graphical model,PGM)是由圖表示的概率分佈。概率無向圖模型(Probabilistic undirected graphical model)又稱馬爾可夫隨機場(Markov random field),表示一個聯合概率分佈,其標準定義為:

      設有聯合概率分佈 P(V) 由無向圖 G=(V, E) 表示,圖 G 中的節點表示隨機變數,邊表示隨機變數間的依賴關係。如果聯合概率分佈 P(V) 滿足成對、區域性或全域性馬爾可夫性,就稱此聯合概率分佈為概率無向圖模型或馬爾可夫隨機場。

      設有一組隨機變數 Y ,其聯合分佈為 P(Y) 由無向圖 G=(V, E) 表示。圖 G 的一個節點 v∈Vv∈V 表示一個隨機變數 YvYv ,一條邊 e∈Ee∈E 就表示兩個隨機變數間的依賴關係。

      1. 成對馬爾可夫性(pairwise Markov property)

      設無向圖 G 中的任意兩個沒有邊連線的節點 u 、v ,其他所有節點為 O ,成對馬爾可夫性指:給定 YOYO 的條件下,YuYu 和 YvYv 條件獨立

 

P(Yu,Yv|YO)=P(Yu|YO)P(Yv|YO)P(Yu,Yv|YO)=P(Yu|YO)P(Yv|YO)

      2. 區域性馬爾可夫性(local)

      設無向圖 G 的任一節點 v ,W 是與 v 有邊相連的所有節點,O 是 v 、W 外的其他所有節點,區域性馬爾可夫性指:給定 YWYW 的條件下,YvYv 和 YOYO 條件獨立

 

P(Yv,YO|YW)=P(Yv|YW)P(YO|YW)P(Yv,YO|YW)=P(Yv|YW)P(YO|YW)

當 P(YO|YW)>0P(YO|YW)>0 時,等價於

 

P(Yv|YW)=P(Yv|YW,YO)P(Yv|YW)=P(Yv|YW,YO)

如果把等式兩邊的條件裡的 YWYW 遮住,P(Yv)=P(Yv|YO)P(Yv)=P(Yv|YO) 這個式子表示 YvYv 和 YOYO 獨立,進而可以理解這個等式為給定條件 YWYW 下的獨立。

      3. 全域性馬爾可夫性(global)

      設節點集合 A 、B 是在無向圖 G 中被節點集合 C 分開的任意節點集合,全域性馬爾可夫性指:給定 YCYC 的條件下,YAYA 和 YBYB 條件獨立

 

P(YA,YB|YC)=P(YA|YC)P(YB|YC)P(YA,YB|YC)=P(YA|YC)P(YB|YC)

      這幾個定義是等價的。

      4. 概率無向圖模型

     無向圖模型的優點在於其沒有隱馬爾可夫模型那樣嚴格的獨立性假設,同時克服了最大熵馬爾可夫模型等判別式模型的標記偏置問題。

      (1)有向圖的聯合概率分佈

      考慮一個有向圖 Gd=(Vd,Ed)Gd=(Vd,Ed) ,隨機變數間的聯合概率分佈可以利用條件概率來表示為

 

P(vd1,...,vdn)=∏i=1nP(vdi|vdπi)P(v1d,...,vnd)=∏i=1nP(vid|vπid)

其中 vdπivπid 表示節點 vdivid 的父節點的集合。

      (2)無向圖的因子分解(Factorization)

      不同於有向圖模型,無向圖模型的無向性很難確保每個節點在給定它的鄰節點的條件下的條件概率和以圖中其他節點為條件的條件概率一致。由於這個原因,無向圖模型的聯合概率並不是用條件概率引數化表示的,而是定義為由一組條件獨立的區域性函式的乘積形式。因子分解就是說將無向圖所描述的聯合概率分佈表達為若干個子聯合概率的乘積,從而便於模型的學習和計算。

      實現這個分解要求的方法就是使得每個區域性函式所作用的那部分節點可以在 G 中形成一個最大團(maximal clique)。這就確保了沒有一個區域性函式是作用在任何一對沒有邊直接連線的節點上的;反過來說,如果兩個節點同時出現在一個團中,則在這兩個節點所在的團上定義一個區域性函式來建立這樣的依賴。

      無向圖模型最大的特點就是易於因子分解,標準定義為:

      將無向圖模型的聯合概率分佈表示為其最大團(maximal clique,可能不唯一)上的隨機變數的函式的乘積形式。

      給定無向圖 G ,其最大團為 C ,那麼聯合概率分佈 P(Y) 可以寫作圖中所有最大團 C 上的勢函式(potential function) ψC(YC)ψC(YC) 的乘積形式:

 

P(Y)=1Z∏CψC(YC)P(Y)=1Z∏CψC(YC)

 

Z=∑Y∏CψC(YC)Z=∑Y∏CψC(YC)

其中 Z 稱為規範化因子,對 Y 的所有可能取值求和,從而保證了 P(Y) 是一個概率分佈。要求勢函式嚴格正,通常定義為指數函式

 

ψC(YC)=exp(−E[YC])ψC(YC)=exp⁡(−E[YC])

      上面的因子分解過程就是 Hammersley-Clifford 定理。

(二)條件隨機場

      條件隨機場(Conditional random field,CRF)是條件概率分佈模型 P(Y|X) ,表示的是給定一組輸入隨機變數 X 的條件下另一組輸出隨機變數 Y 的馬爾可夫隨機場,也就是說 CRF 的特點是假設輸出隨機變數構成馬爾可夫隨機場。

      條件隨機場可被看作是最大熵馬爾可夫模型在標註問題上的推廣。

      這裡介紹的是用於序列標註問題的線性鏈條件隨機場(linear chain conditional CRF),是由輸入序列來預測輸出序列的判別式模型。

圖片來源:[3]

圖片來源:[2]

 

圖片來源:[4]

 

      從問題描述上看,對於序列標註問題,X 是需要標註的觀測序列,Y 是標記序列(狀態序列)。在學習過程時,通過 MLE 或帶正則的 MLE 來訓練出模型引數;在測試過程,對於給定的觀測序列,模型需要求出條件概率最大的輸出序列。

      如果隨機變數 Y 構成一個由無向圖 G=(V, E) 表示的馬爾可夫隨機場,對任意節點 v∈Vv∈V 都成立,即

 

P(Yv|X,Yw,w≠v)=P(Yv|X,Yw,w∼v)P(Yv|X,Yw,w≠v)=P(Yv|X,Yw,w∼v)

對任意節點 vv 都成立,則稱 P(Y|X) 是條件隨機場。式中 w≠vw≠v 表示 w 是除 v 以外的所有節點,w∼vw∼v 表示 w 是與 v 相連線的所有節點。不妨把等式兩遍的相同的條件 X 都遮住,那麼式子可以用下圖示意:

很明顯,這就是馬爾可夫隨機場的定義。

      線性鏈條件隨機場

      在定義中並沒有要求 X 和 Y 具有相同的結構,而在現實中,一般假設 X 和 Y 有相同的圖結構。對於線性鏈條件隨機場來說,圖 G 的每條邊都存在於狀態序列 Y 的相鄰兩個節點,最大團 C 是相鄰兩個節點的集合,X 和 Y 有相同的圖結構意味著每個 XiXi 都與 YiYi 一一對應。

 

V={1,2,...,n},E={(i,i+1)},i=1,2,...,n−1V={1,2,...,n},E={(i,i+1)},i=1,2,...,n−1

      設兩組隨機變數 X=(X1,...,Xn),Y=(Y1,...,Yn)X=(X1,...,Xn),Y=(Y1,...,Yn) ,那麼線性鏈條件隨機場的定義為

 

P(Yi|X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi|X,Yi−1,Yi+1),i=1,...,nP(Yi|X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi|X,Yi−1,Yi+1),i=1,...,n

其中當 i 取 1 或 n 時只考慮單邊。

      一、線性鏈條件隨機場的數學表示式

      1. 線性鏈條件隨機場的引數化形式:特徵函式及例子

      此前我們知道,馬爾可夫隨機場可以利用最大團的函式來做因子分解。給定一個線性鏈條件隨機場 P(Y|X) ,當觀測序列為 x=x1x2⋯x=x1x2⋯ 時,狀態序列為 y=y1y2⋯y=y1y2⋯ 的概率可寫為(實際上應該寫為 P(Y=y|x;θ)P(Y=y|x;θ) ,引數被省略了)

 

P(Y=y|x)=1Z(x)exp(∑kλk∑itk(yi−1,yi,x,i)+∑lμl∑isl(yi,x,i))P(Y=y|x)=1Z(x)exp⁡(∑kλk∑itk(yi−1,yi,x,i)+∑lμl∑isl(yi,x,i))

 

Z(x)=∑yexp(∑kλk∑itk(yi−1,yi,x,i)+∑lμl∑isl(yi,x,i))Z(x)=∑yexp⁡(∑kλk∑itk(yi−1,yi,x,i)+∑lμl∑isl(yi,x,i))

 Z(x)Z(x) 作為規範化因子,是對 y 的所有可能取值求和。

      序列標註 vs 分類

      是不是和Softmax迴歸挺像的?它們都屬於對數線性模型(log linear model),線性鏈CRF用來解決序列標註問題,Softmax迴歸、最大熵模型都是用來解決分類問題。但需要注意,這兩類問題存在非常大的區別:

      (1)如果把序列標註問題看作分類問題,也就是為每一個待標註的位置都當作一個樣本然後進行分類,那麼將會有很大的資訊損失,因為一個序列的不同位置之間存在聯絡:比如說有一系列連續拍攝的照片,現在想在照片上打上表示照片裡的活動內容的標記,當然可以將每張照片單獨做分類,但是會損失資訊,例如當有一張照片上是一張嘴,應該分類到“吃飯”還是分類到“唱K”呢?如果這張照片的上一張照片內容是吃飯或者做飯,那麼這張照片表示“吃飯”的可能性就大一些,如果上一張照片的內容是跳舞,那這張照片就更有可能在講唱K的事情。(這個例子來自 [5] 的開頭。)

      (2)不同的序列有不同的長度,不便於表示成同一維度的向量。

      (3)狀態序列的解集隨著序列長度指數級增長,窮舉法是不可行的。

      特徵函式

      對於線性鏈CRF,特徵函式是個非常重要的概念:

      轉移特徵 tk(yi−1,yi,x,i)tk(yi−1,yi,x,i) 是定義在邊上的特徵函式(transition),依賴於當前位置 i 和前一位置 i-1 ;對應的權值為 λkλk 。

      狀態特徵 sl(yi,x,i)sl(yi,x,i) 是定義在節點上的特徵函式(state),依賴於當前位置 i ;對應的權值為 μlμl 。

      一般來說,特徵函式的取值為 1 或 0 ,當滿足規定好的特徵條件時取值為 1 ,否則為 0 。

      以詞性標註為例

      下面給出一些特徵函式的例子,參考自 [5] 。詞性標註(Part-of-Speech Tagging,POS)任務是指 the goal is to label a sentence (a sequence of words or tokens) with tags like ADJECTIVE, NOUN, PREPOSITION, VERB, ADVERB, ARTICLE. 在對英文序列進行詞性標註時可以使用以下特徵:

      (1)s1(yi,x,i)=1s1(yi,x,i)=1 ,如果 yi=ADVERByi=ADVERB 且 xixi 以“-ly”結尾;否則為 0 。如果該特徵函式有一個較大的正權重,就表明傾向於將 “-ly” 結尾的單詞標註為副詞。

      (2)s2(yi,x,i)=1s2(yi,x,i)=1,如果 i=1i=1 、yi=VERByi=VERB 且 x 以“?”結尾;否則為 0 。如果該特徵函式有一個較大的正權重,就表明傾向於將問句的首詞標註為動詞,例如“Is this a sentence beginning with a verb?”

      (3)t3(yi−1,yi,x,i)=1t3(yi−1,yi,x,i)=1,如果 yi−1=ADJECTIVEyi−1=ADJECTIVE 且 yi=NOUNyi=NOUN;否則為 0 。 如果該特徵函式有一個較大的正權重,就表明傾向於認為形容詞後面跟著名詞。

      (4)t4(yi−1,yi,x,i)=1t4(yi−1,yi,x,i)=1,如果 yi−1=PREPOSITIONyi−1=PREPOSITION 且 yi=PREPOSITIONyi=PREPOSITION;否則為 0 。 如果該特徵函式有一個較大的負權重,就表明傾向於認為介詞不會連用。

      CRF vs HMM

      [5] 中還比較了 HMM 和 CRF在序列標註的異同,作者認為CRF更加強大,理由如下:

      (1)可以為每個 HMM 都建立一個等價的 CRF(記號中的 s、l 就是本文的 x、y ):

圖片來源:[5]

      (2)CRF 的特徵可以囊括更加廣泛的資訊:HMM 基於“上一狀態to當前狀態”的轉移概率以及“當前狀態to當前觀測”的釋放概率,使得當前位置的詞(觀測)只可以利用當前的狀態(詞性)、當前位置的狀態又只能利用上一位置的狀態。但 CRF 的特徵函式中,輸入包含 (yi−1,yi,x,i)(yi−1,yi,x,i) ,對於當前位置 i 來說可以利用完整的 x 資訊。

      (3)CRF 的引數的取值沒有限制,而 HMM 的引數(轉移概率矩陣、釋放概率矩陣、初始概率向量)都需要滿足一些限制。

      2. 線性鏈條件隨機場的簡化形式

      需要注意的是,以 ∑kλk∑itk(yi−1,yi,x,i)∑kλk∑itk(yi−1,yi,x,i) 這項為例,可以看出外面那個求和號是套著裡面的求和號的,這種雙重求和就表明了對於同一個特徵(k),在各個位置(i)上都有定義。

      基於此,很直覺的想法就是把同一個特徵在各個位置 i 求和,形成一個全域性的特徵函式,也就是說讓裡面那一層求和號消失。在此之前,為了把加號的兩項合併成一項,首先將各個特徵函式 t(設其共有 K1K1 個)、s(設共 K2K2 個)都換成統一的記號 f :

 

t1=f1,t2=f2,⋯,tK1=fK1,s1=fK1+1,s2=fK1+2,⋯,sK2=fK1+K2t1=f1,t2=f2,⋯,tK1=fK1,s1=fK1+1,s2=fK1+2,⋯,sK2=fK1+K2

相應的權重同理:

 

λ1=w1,λ2=w2,⋯,λK1=wK1,μ1=wK1+1,μ2=wK1+2,⋯,μK2=wK1+K2λ1=w1,λ2=w2,⋯,λK1=wK1,μ1=wK1+1,μ2=wK1+2,⋯,μK2=wK1+K2

那麼就可以記為

 

fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i),sl(yi,x,i),k=1,2,...,K1k=K1+l;l=1,2,...,K2fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i),k=1,2,...,K1sl(yi,x,i),k=K1+l;l=1,2,...,K2

 

wk={λk,μl,k=1,2,...,K1k=K1+l;l=1,2,...,K2wk={λk,k=1,2,...,K1μl,k=K1+l;l=1,2,...,K2

然後就可以把特徵在各個位置 i 求和,即

 

fk(y,x)=∑i=1nfk(yi−1,yi,x,i),k=1,2,...,Kfk(y,x)=∑i=1nfk(yi−1,yi,x,i),k=1,2,...,K

其中 K=K1+K2K=K1+K2 。進而可以得到簡化表示形式

 

P(Y=y|x)=1Z(x)exp∑k=1Kwkfk(y,x)P(Y=y|x)=1Z(x)exp⁡∑k=1Kwkfk(y,x)

 

Z(x)=∑yexp∑k=1Kwkfk(y,x)Z(x)=∑yexp⁡∑k=1Kwkfk(y,x)

      如果進一步,記 w=(w1,w2,...,wK)⊤w=(w1,w2,...,wK)⊤ ,F(y,x)=(f1(y,x),...,fK(y,x))⊤F(y,x)=(f1(y,x),...,fK(y,x))⊤ ,那麼可得內積形式:

 

Pw(Y=y|x)=1Zw(x)exp(w⊤F(y,x))Pw(Y=y|x)=1Zw(x)exp⁡(w⊤F(y,x))

 

Zw(x)=∑yexp(w⊤F(y,x))Zw(x)=∑yexp⁡(w⊤F(y,x))

      3. 線性鏈條件隨機場的矩陣形式

      這種形式依託於線性鏈條件隨機場對應的圖模型僅在兩個相鄰節點之間存在邊。在狀態序列的兩側新增兩個新的狀態 y0=starty0=start 、yn+1=stopyn+1=stop 。

      這裡,引入一個新的量 Mi(yi−1,yi|x)Mi(yi−1,yi|x) :

 

Mi(yi−1,yi|x)=exp∑k=1Kwkfk(yi−1,yi,x,i),i=1,2,...,n+1Mi(yi−1,yi|x)=exp⁡∑k=1Kwkfk(yi−1,yi,x,i),i=1,2,...,n+1

首先,這個量融合了引數和特徵,是一個描述模型的比較簡潔的量;其次,不難發現,這個量相比於原來的非規範化概率 P(Y=y|x)∝exp∑k=1Kwkfk(y,x)P(Y=y|x)∝exp∑k=1Kwkfk(y,x) ,少了對位置的內層求和,換句話說這個量是針對於某個位置 i (及其前一個位置 i-1 )的。那麼,假設狀態序列的狀態存在 m 個可能的取值,對於任一位置 i = 1,2,...,n+1 ,定義一個 m 階方陣:

 

Mi(x)=[exp∑k=1Kfk(yi−1,yi,x,i)]m×m=[Mi(yi−1,yi|x)]m×mMi(x)=[exp⁡∑k=1Kfk(yi−1,yi,x,i)]m×m=[Mi(yi−1,yi|x)]m×m

      因為有等式 ∏i[exp∑k=1Kwkfk(yi−1,yi,x,i)]=exp(∑k=1Kwk∑ifk(yi−1,yi,x,i))∏i[exp⁡∑k=1Kwkfk(yi−1,yi,x,i)]=exp⁡(∑k=1Kwk∑ifk(yi−1,yi,x,i)) 成立,所以線性鏈條件隨機場可以表述為如下的矩陣形式:

 

Pw(Y=y|x)=1Zw(x)∏i=1n+1Mi(yi−1,yi|x)Pw(Y=y|x)=1Zw(x)∏i=1n+1Mi(yi−1,yi|x)

 

Zw(x)=(M1(x)M2(x)⋯Mn+1(x))(start,stop)Zw(x)=(M1(x)M2(x)⋯Mn+1(x))(start,stop)

其中規範化因子 Zw(x)Zw(x) 是這 n+1 個矩陣的乘積矩陣的索引為 (start,stop)(start,stop) 的元素。 Zw(x)Zw(x) 它就等於以 start 為起點、以 stop 為終點的所有狀態路徑的非規範化概率 ∏n+1i=1Mi(yi−1,yi|x)∏i=1n+1Mi(yi−1,yi|x) 之和(證明略)。

      上面的描述或多或少有些抽象,[1] 中給出了一個具體的例子:給定一個線性鏈條件隨機場,n = 3 ,狀態的可能取值為 5 和 7 。設 y0=start=5y0=start=5 、yn+1=stop=5yn+1=stop=5 ,且 M 矩陣在 i = 1,2,...,n+1 的值已知,求狀態序列以 start 為起點、以stop為終點的所有狀態路徑的非規範化及規範化概率。

 

M1(x)=(a010a010),M2(x)=(b11b21b12b22)M1(x)=(a01a0100),M2(x)=(b11b12b21b22)

 

M3(x)=(c11c21c12c22),M4(x)=(1100)M3(x)=(c11c12c21c22),M4(x)=(1010)

      所有可能的狀態路徑,共8條(沒有刻意區分 Y 和 y 這兩種記號):

      先看一下 M 矩陣的含義。以 M3(x)M3(x) 為例:行索引就是當前位置(此處為3)的上一位置(此處為2)的狀態可能取值,列索引就是當前位置的狀態可能取值。

每個 M 矩陣的行/列索引都是一致的,對應於狀態的可能取值。因此,M 矩陣的每個元素值就有點Markov chain裡的“轉移概率”的意思:以 M3(x)M3(x) 的 c12c12 為例,它的行索引是5,列索引是7,可以“看作”是上一位置(2)的狀態是5且當前位置(3)的狀態是7的“非規範化轉移概率”。

      那麼根據公式 Pw(Y=y|x)∝∏i=1n+1Mi(yi−1,yi|x)Pw(Y=y|x)∝∏i=1n+1Mi(yi−1,yi|x) ,可知狀態序列 y0y1⋯y4y0y1⋯y4 為 (5, 5, 5, 7, 5) 的非規範化概率為 a01×b11×c12×1a01×b11×c12×1 ,其中 a01a01 是位置0的狀態為5且位置1的狀態為7的“轉移概率”,其他三項亦可以看作“轉移概率”。同理,可求得其他七條路徑的非規範化概率。

      規範化因子就等於 M1(x)M2(x)M3(x)M4(x)M1(x)M2(x)M3(x)M4(x) 的行索引為5、列索引為5的值,經計算,等於所有8條路徑的非規範化概率之和。

      二、線性鏈條件隨機場的計算問題

      與隱馬爾可夫模型類似,條件隨機場也有三個基本問題:計算問題、解碼問題和學習問題,其中前兩個問題屬於inference,第三個問題當然是learning。下面簡單介紹。

      CRF的計算問題是指,給定一個條件隨機場 P(Y|X) 、觀測序列 x 和狀態序列 y ,計算P(Yi=yi|x)P(Yi=yi|x) 、P(Yi−1=yi−1,Yi=yi|x)P(Yi−1=yi−1,Yi=yi|x) 以及特徵函式關於分佈的期望。

      回顧一下HMM,當時解決這個問題使用的是前向演算法/後向演算法。這裡類似,對每個位置 i =0,1,...,n+1 ,定義前向向量 αi(x)αi(x) :

 

α0(y|x)={1,0,y=startotherwiseα0(y|x)={1,y=start0,otherwise

 

αi(yi|x)=∑yi−1αi−1(yi−1|x)Mi(yi−1,yi|x),i=1,2,...,n+1αi(yi|x)=∑yi−1αi−1(yi−1|x)Mi(yi−1,yi|x),i=1,2,...,n+1

 αi(yi|x)αi(yi|x) 的含義是在位置 i 的標記 Yi=yiYi=yi 且從起始位置到位置 i 的區域性標記序列的非規範化概率,這個遞推式子可以直觀地把 Mi(yi−1,yi|x)Mi(yi−1,yi|x) 理解為“轉移概率”,求和號表示對 yi−1yi−1 的所有可能取值求和。寫成矩陣的形式就是下式

 

α⊤i(x)=α⊤i−1(x)Mi(x)αi⊤(x)=αi−1⊤(x)Mi(x)

這裡的 αi(x)αi(x) 是 m 維列向量,因為每個位置的標記都有 m 種可能取值,每一個維度都對應一個 αi(yi|x)αi(yi|x) 。

      類似地,可以定義後向向量 βi(x)βi(x) :

 

βn+1(yn+1|x)={1,0,yn+1=stopotherwiseβn+1(yn+1|x)={1,yn+1=stop0,otherwise

 

βi(yi|x)=∑yi+1Mi+1(yi,yi+1|x)βi+1(yi+1|x),i=0,1,...,nβi(yi|x)=∑yi+1Mi+1(yi,yi+1|x)βi+1(yi+1|x),i=0,1,...,n

 βi(yi|x)βi(yi|x) 的含義是在位置 i 的標記 Yi=yiYi=yi 且從位置 i+1 到位置 n 的區域性標記序列的非規範化概率。寫成矩陣的形式就是

 

β⊤i(x)=Mi+1(x)βi+1(x)βi⊤(x)=Mi+1(x)βi+1(x)

      另外,規範化因子 Z(x)=α⊤n(x)1=1⊤β1(x)Z(x)=αn⊤(x)1=1⊤β1(x) 。

      1. 概率值的計算

      給定一個CRF模型,那麼 P(Yi=yi|x)P(Yi=yi|x) 、P(Yi−1=yi−1,Yi=yi|x)P(Yi−1=yi−1,Yi=yi|x) 可以利用前向向量和後向向量計算為

 

P(Yi=yi|x)=αi(yi|x)βi(yi|x)Z(x)P(Yi=yi|x)=αi(yi|x)βi(yi|x)Z(x)

 

P(Yi−1=yi−1,Yi=yi|x)=αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)P(Yi−1=yi−1,Yi=yi|x)=αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)

      2. 期望值的計算

      (1)特徵函式 fkfk 關於條件分佈 P(Y|X) 的期望:

 

EP(Y|x)[fk]=∑yP(Y=y|x)fk(y,x)=∑yP(Y=y|x)∑i=1n+1fk(yi−1,yi,x,i)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)P(Yi−1=yi−1,Yi=yi|x)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)EP(Y|x)[fk]=∑yP(Y=y|x)fk(y,x)=∑yP(Y=y|x)∑i=1n+1fk(yi−1,yi,x,i)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)P(Yi−1=yi−1,Yi=yi|x)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)

第一個等號,可以看出計算代價非常大,但轉化為第二個等號後,便可利用前向向量和後向向量來高效計算。

      (2)特徵函式 fkfk 關於聯合分佈 P(X,Y) 的期望:

      這裡假設已知邊緣分佈 P(X) 的經驗分佈為 P˜(X)P~(X) ,經驗分佈就是根據訓練資料,用頻數估計的方式得到 P˜(X=x)=#xNP~(X=x)=#xN。

 

EP(X,Y)[fk]=∑x,yP(x,y)fk(y,x)=∑xP˜(x)∑yP(Y=y|x)∑i=1n+1fk(yi−1,yi,x,i)=∑xP˜(x)∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)EP(X,Y)[fk]=∑x,yP(x,y)fk(y,x)=∑xP~(x)∑yP(Y=y|x)∑i=1n+1fk(yi−1,yi,x,i)=∑xP~(x)∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)

第二個等號那裡類似於最大熵模型的條件熵的定義。

      對於給定的觀測序列 x 和標記序列 y ,通過一次前向掃描計算 αiαi 及 Z(x)Z(x) ,一次後向掃描計算 βiβi ,進而計算所有的概率值,以及特徵的期望。

      三、線性鏈條件隨機場的解碼問題

      解碼問題即預測問題,給定條件隨機場 P(Y|X) 和觀測序列 x ,求最有可能的狀態序列 y* 。與 HMM 類似,使用維特比演算法求解。

      四、線性鏈條件隨機場的學習問題

      CRF是定義在時序資料上的對數線性模型,使用 MLE 和帶正則的 MLE 來訓練。類似於最大熵模型,可以用改進的迭代尺度法(IIS)和擬牛頓法(如BFGS演算法)來訓練。

      訓練資料 {(x(j),y(j))}Nj=1{(x(j),y(j))}j=1N 的對數似然函式為

 

L(w)=LP˜(Pw)=ln∏j=1NPw(Y=y(j)|x(j))=∑j=1NlnPw(Y=y(j)|x(j))=∑j=1Nlnexp∑Kk=1wkfk(y(j),x(j))Zw(x(j))=∑j=1N(∑k=1Kwkfk(y(j),x(j))−lnZw(x(j)))L(w)=LP~(Pw)=ln⁡∏j=1NPw(Y=y(j)|x(j))=∑j=1Nln⁡Pw(Y=y(j)|x(j))=∑j=1Nln⁡exp⁡∑k=1Kwkfk(y(j),x(j))Zw(x(j))=∑j=1N(∑k=1Kwkfk(y(j),x(j))−ln⁡Zw(x(j)))

      或者可以這樣寫:

 

L(w)=LP˜(Pw)=ln∏x,yPw(Y=y|x)P˜(x,y)=∑x,yP˜(x,y)lnPw(Y=y|x)=∑x,yP˜(x,y)lnexp∑Kk=1wkfk(y,x)Zw(x)=∑x,yP˜(x,y)∑k=1Kwkfk(y,x)−∑x,yP˜(x,y)lnZw(x)=∑x,yP˜(x,y)∑k=1Kwkfk(y,x)−∑xP˜(x)lnZw(x)L(w)=LP~(Pw)=ln⁡∏x,yPw(Y=y|x)P~(x,y)=∑x,yP~(x,y)ln⁡Pw(Y=y|x)=∑x,yP~(x,y)ln⁡exp⁡∑k=1Kwkfk(y,x)Zw(x)=∑x,yP~(x,y)∑k=1Kwkfk(y,x)−∑x,yP~(x,y)ln⁡Zw(x)=∑x,yP~(x,y)∑k=1Kwkfk(y,x)−∑xP~(x)ln⁡Zw(x)

最後一個等號是因為 ∑yP(Y=y|x)=1∑yP(Y=y|x)=1 。順便求個導:

 

∂L(w)∂wi=∑x,yP˜(x,y)fi(x,y)−∑x,yP˜(x)Pw(Y=y|x)fi(x,y)=EP˜(X,Y)[fi]−∑x,yP˜(x)Pw(Y=y|x)fi(x,y)∂L(w)∂wi=∑x,yP~(x,y)fi(x,y)−∑x,yP~(x)Pw(Y=y|x)fi(x,y)=EP~(X,Y)[fi]−∑x,yP~(x)Pw(Y=y|x)fi(x,y)

      似然函式中的 lnZw(x)ln⁡Zw(x) 項是一個指數函式的和的對數的形式。關於這一項在程式設計過程中需要注意的地方可以參考這篇部落格

 

 

參考:

[1] 統計學習方法

[2] Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data 

[3] Conditional Random Fields: An Introduction

[4] An Introduction to Conditional Random Fields for Relational Learning

[5] Introduction to Conditional Random Fields

[6] Log-Linear Models, MEMMs, and CRFs  

[7] 基於條件隨機場的中文命名實體識別(向曉雯,2006 thesis)

[8] CRF++: CRF++程式碼分析 CRF++中文分詞 CRF++詞性標註

[9] 數值優化:理解L-BFGS演算法  牛頓法與擬牛頓法學習筆記(五)L-BFGS 演算法

[10] 漫步條件隨機場系列文章

 

對於原創博文:如需轉載請註明出處http://www.cnblogs.com/Determined22/