- 說明:學習筆記,内容參考《機器學習》《數學之美》和七月線上課件
條件随機場
定義1:
條件随機場(conditional random field,簡稱CRF)是一種判别式無向圖模型。生成式模型是直接對聯合分布進行模組化,而判别式模型則是對條件分布進行模組化,隐馬爾可夫模型就是生成式模型。——周志華《機器學習》
定義2:
條件随機場模型是Lafferty于2001年,在最大熵模型和隐馬爾可夫模型的基礎上,提出的一種判别式機率無向圖學習模型,是一種用于标注和切分有序資料的條件機率模型。
普遍意義上的條件随機場:

模型解釋:
①條件随機場保留了隐含馬爾可夫模型的一些特性,比如圖中的 y1,y2,.. y 1 , y 2 , . . 等狀态的序列還是一個馬爾可夫鍊。
②在圖中,頂點 x1,y1 x 1 , y 1 代表一個個随機變量,頂點之間的弧代表他們之間的依賴關系,采用機率分布 P(x1,y1) P ( x 1 , y 1 ) 來描述。
③它的特殊性在于變量之間要遵守馬爾可夫假設,即每個狀态的轉移機率隻取決于相鄰的狀态,這一點,它和貝葉斯網絡相同。不同之處在于貝葉斯網絡是有向圖,而條件随機場是無向圖,
1.生成式模型和判别式模型
o,s分别代表觀測序列和标記序列
- 生成式模型
- 建構o和s的聯合分布p(s,o),可以根據聯合機率來生成樣本,如HMM,BNs,MRF。
- 缺點:目标分類問題中容易産生較大的錯誤率
- 優點:實際上帶的資訊比判别模型豐富;能更充分利用先驗知識;模型可以通過增量學習得到 判别式模型
- 建構o和s的條件分布p(s|o),因為沒有s的知識無法生成樣本,隻能判斷分類,如SVM,CRF,MEMM。
- 缺點:不能反映訓練資料本身的特性
- 優點:分類邊界更靈活;能清晰分辨出多類或某一類與其他類之間的差異特征;适用于較多類别的識别 二者關系
- 由生成模型可以得到判别模型,但由判别模型得不到生成模型。
2.詞性标注
除了上一章介紹的HMM進行詞性标注外,也可以使用條件随機場進行詞性标注。正如分類器所做,首先需要設定一組特征方程。
①CRF的特征函數
每個特征函數的輸入包括:
- 一個句子 s s
- 詞在句子中的位置ii
- 目前詞的标簽 li l i
- 前一個詞的标簽 li−1 l i − 1
②從特征到機率
-
為我們每個特征函數 fi f i 設定一個權重值 λj λ j (通過訓練學習得到這些權重值),給定一個句子s,可以通過累加句中所有詞權重後的特征來為s的打标結果打分:
score(l|s)=∑j=1m∑i=1nλjfj(s,i,li′,li−1′) s c o r e ( l | s ) = ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i ′ , l i − 1 ′ )
注:第一個求和是對周遊特征方程 j j 的求和,第二個球和是對句子裡面的每一個位置ii進行周遊求和。
-
最終,通過求指數與歸一的方式将得分轉化為0,1之間的機率值:
p(l|s)=exp[score(l|s)∑l′exp[score(l′|s)]=exp[∑mj=1∑ni=1λjfj(s,i,li,li−1)]∑l′exp[∑mj=1∑ni=1λjfj(s,i,li′,li−1′)] p ( l | s ) = e x p [ s c o r e ( l | s ) ∑ l ′ e x p [ s c o r e ( l ′ | s ) ] = e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) ] ∑ l ′ e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i ′ , l i − 1 ′ ) ]
注:邏輯回歸是分類問題的對數線性模型,CRF是序列标注問題的對數線性模型。
③權重學習
- 學習CRF權重,以梯度上升方法為例:
- 有一組訓練樣本(包括句子和相關的詞性标注标簽結果);先為我們的CRF模型随機初始化權重值;為了使這些随機初始的權重最終調整為正确的值,需要周遊每個訓練樣本,然後執行:
-
周遊每個特征函數 fi f i ,并為 λi λ i 計算訓練樣本的對數機率梯度值:
∂∂wjlogp(l|s)=∑j=1mfi(s,j,lj,lj−1)−∑l′p(l′|s)∑j=1mfi(s,j,lj′,lj−1′) ∂ ∂ w j l o g p ( l | s ) = ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ′ p ( l ′ | s ) ∑ j = 1 m f i ( s , j , l j ′ , l j − 1 ′ )
- 梯度公式中第一項是特征 fi f i 在正确标注下的貢獻,梯度公式中的第二項是特征 fi f i 在目前模型中的貢獻。
-
将 λi λ i 朝着梯度方向移動:
λi=λi+α[∑j=1mfi(s,j,lj,lj−1)−∑l′p(l′|s)∑j=1mfi(s,j,lj′,lj−1′)] λ i = λ i + α [ ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ′ p ( l ′ | s ) ∑ j = 1 m f i ( s , j , l j ′ , l j − 1 ′ ) ]
α α 是學習率。
重複上述步驟,直到達到某個停止條件,例如低于某一個門檻值。
總而言之就是抽取目前模型與我們想要學習到的模型的差異,将 λi λ i 朝着正确的方向移動。
④找到最佳标注
問題:假定訓練好了CRF模型,這時來了一個新的句子,應該如何标注它?
- 最直接的方法:
- 為每個可能的标注 l l 計算p(l|s)p(l|s),接着選取一種機率值最大的打标。然而對一個大小為k的标簽組和一個長度為m的句子,有 km k m 種可能的打标方式。
- 更好的方法:
- 使CRF滿足最佳子結構的屬性,使得我們可以使用一種動态規劃算法(多項式時間複雜度)找到最佳标注,類似于HMM的維特比算法。
擴充
詞性标注的方法還有許多,而CRF除了命名實體抽取的其他有趣應用:
eg.聖誕節禮物抽取
①簡單比對形如‘I want/got xxx for Christmas’的句式
②CRF變種GIFT詞标注:将其轉換為詞性标注問題,基于類似“如果上一個詞是一個GIFT-RECIVER且前一個詞是gave,那麼這個詞就是一個GIFT”或者‘如果後面緊跟兩個詞是for Christmas,那麼這個詞就是GIFT’的規則去構造特征。