1. 程式人生 > >條件隨機場CRF介紹

條件隨機場CRF介紹

family play 存在 分布 als 建立 geo 捕捉 times

鏈接:https://mp.weixin.qq.com/s/BEjj5zJG3QmxvQiqs8P4-w

softmax

CRF主要用於序列標註問題,可以簡單理解為是給序列中的每一幀,既然是分類,很自然想到將這個序列用CNN或者RNN進行編碼後,接一個全連接層用softmax激活,如下圖所示

技術分享圖片

逐幀softmax並沒有直接考慮輸出的上下文關聯

條件隨機場

然而,當我們設計標簽時,比如用s、b、m、e的4個標簽來做字標註法的分詞,目標輸出序列本身會帶有一些上下文關聯,比如s後面就不能接m和e,等等。逐標簽softmax並沒有考慮這種輸出層面的上下文關聯,所以它意味著把這些關聯放到了編碼層面,希望模型能自己學到這些內容,但有時候會“強模型所難”。

而CRF則更直接一點,它將輸出層面的關聯分離了出來,這使得模型在學習上更為“從容”:

技術分享圖片

CRF在輸出端顯式地考慮了上下文關聯

數學

當然,如果僅僅是引入輸出的關聯,還不僅僅是CRF的全部,CRF的真正精巧的地方,是它以路徑為單位,考慮的是路徑的概率

模型概要

假如一個輸入有nn幀,每一幀的標簽有kk中可能性,那麽理論上就有knkn中不同的輸入。我們可以將它用如下的網絡圖進行簡單的可視化。在下圖中,每個點代表一個標簽的可能性,點之間的連線表示標簽之間的關聯,而每一種標註結果,都對應著圖上的一條完整的路徑。

技術分享圖片

4tag分詞模型中輸出網絡圖

而在序列標註任務中,我們的正確答案是一般是唯一的。比如“今天天氣不錯”,如果對應的分詞結果是“今天/天氣/不/錯”,那麽目標輸出序列就是bebess,除此之外別的路徑都不符合要求。換言之,在序列標註任務中,我們的研究的基本單位應該是路徑,我們要做的事情,是從

kn條路徑選出正確的一條,那就意味著,如果將它視為一個分類問題,那麽將是kn類中選一類的分類問題!

這就是逐幀softmax和CRF的根本不同了:前者將序列標註看成是nk分類問題,後者將序列標註看成是1kn分類問題。

具體來講,在CRF的序列標註問題中,我們要計算的是條件概率

技術分享圖片

為了得到這個概率的估計,CRF做了兩個假設:

假設一 該分布是指數族分布。

這個假設意味著存在函數f(y1,,yn;x),使得

技術分享圖片

其中Z(x)是歸一化因子,因為這個是條件分布,所以歸一化因子跟x有關。這個f函數可以視為一個打分函數,打分函數取指數並歸一化後就得到概率分布。

假設二 輸出之間的關聯僅發生在相鄰位置,並且關聯是指數加性的

這個假設意味著f(y1,,yn;x)可以更進一步簡化為

技術分享圖片

這也就是說,現在我們只需要對每一個標簽和每一個相鄰標簽對分別打分,然後將所有打分結果求和得到總分。

線性鏈CRF

管已經做了大量簡化,但一般來說,上式所表示的概率模型還是過於復雜,難以求解。於是考慮到當前深度學習模型中,RNN或者層疊CNN等模型已經能夠比較充分捕捉各個y與輸出x的聯系,因此,我們不妨考慮函數gx無關,那麽

技術分享圖片

這時候g實際上就是一個有限的、待訓練的參數矩陣而已,而單標簽的打分函數h(yi;x)我們可以通過RNN或者CNN來建模。因此,該模型是可以建立的,其中概率分布變為

技術分享圖片

這就是線性鏈CRF的概念。

歸一化因子

為了訓練CRF模型,我們用最大似然方法,也就是用

技術分享圖片

作為損失函數,可以算出它等於

技術分享圖片

其中第一項是原來概率式的分子的對數,它目標的序列的打分,雖然它看上去挺迂回的,但是並不難計算。真正的難度在於分母的對數logZ(x)這一項。

歸一化因子,在物理上也叫配分函數,在這裏它需要我們對所有可能的路徑的打分進行指數求和,而我們前面已經說到,這樣的路徑數是指數量級的(kn),因此直接來算幾乎是不可能的。

事實上,歸一化因子難算,幾乎是所有概率圖模型的公共難題。幸運的是,在CRF模型中,由於我們只考慮了臨近標簽的聯系(馬爾可夫假設),因此我們可以遞歸地算出歸一化因子,這使得原來是指數級的計算量降低為線性級別。具體來說,我們將計算到時刻t的歸一化因子記為Zt,並將它分為k個部分

技術分享圖片

其中技術分享圖片分別是截止到當前時刻t中、以標簽1,,k為終點的所有路徑的得分指數和。那麽,我們可以遞歸(DP)地計算

技術分享圖片

它可以簡單寫為矩陣形式

技術分享圖片


G是對g(yi,yj)各個元素取指數後的矩陣,即G=eg(yi,yj);而H(yt+1|x)是編碼模型h(yt+1|x)(RNN、CNN等)對位置t+1的各個標簽的打分的指數,即H(yt+1|x)=eh(yt+1|x),也是一個向量。ZtG這一步是矩陣乘法,得到一個向量,而是兩個向量的逐位對應相乘

技術分享圖片

歸一化因子的遞歸計算圖示。從tt+1時刻的計算,包括轉移概率和j+1節點本身的概率

動態規劃

寫出損失函數logP(y1,,yn|x)後,就可以完成模型的訓練了。假設現在有一句用於測試的句子,根據訓練好的模型,我們可以算出每個時刻t對應的h值,以及CRF對應的轉移概率。下面就可以進行前向動態規劃求最大概率,並保存轉移狀態。 令dp[t][y]: 表示t時刻標簽為y的路徑的最大概率,那麽dp[t][y]=max dp[t-1][y‘], y‘=1,2,3,4pre[t][y]: 表示從上一部轉移過來的最優標簽y‘

條件隨機場CRF介紹