1. 程式人生 > >條件隨機場 conditional random fields 及程式碼實現

條件隨機場 conditional random fields 及程式碼實現

條件隨機場模型是由Lafferty在2001年提出的一種典型的判別式模型。它在觀測序列的基礎上對目標序列進行建模,重點解決序列化標註的問題條件隨機場模型既具有判別式模型的優點,又具有產生式模型考慮到上下文標記間的轉移概率,以序列化形式進行全域性引數優化和解碼的特點,解決了其他判別式模型(如最大熵馬爾科夫模型)難以避免的標記偏置問題。

    條件隨機場理論(CRFs)可以用於序列標記、資料分割、組塊分析等自然語言處理任務中。在中文分詞、中文人名識別、歧義消解等漢語自然語言處理任務中都有應用,表現很好。

目前基於 CRFs 的主要系統實現有 CRF,FlexCRF,CRF++

缺點:訓練代價大、複雜度高

—預備知識—產生式模型和判別式模型(Generative model vs. Discriminative model)—概率圖模型—隱馬爾科夫模型—最大熵模型

機器學習方法的兩種分類:產生式模型和判別式模型

假定輸入x, 類別標籤y

—產生式模型(生成模型)估計聯合概率 P(x, y), 因可以根據聯合概率來生成樣本 —: HMMs—判別式模型(判別模型)估計條件概率 P(y|x), 因為沒有x的知識,無法生成樣本,只能判斷分類: SVMs,CRF,MEM一個舉例:(1,0), (1,0), (2,0), (2, 1)產生式模型:

p(x, y):P(1, 0) = 1/2, P(1, 1) = 0, P(2, 0) = 1/4, P(2, 1) = 1/4.

判別式模型:P(y|x):P(0|1) = 1, P(1|1) = 0, P(0|2) = 1/2, P(1|2) = 1/2—o和s分別代表觀察序列和標記序列—產生式模型—     構建o和s的聯合分佈p(s,o)—判別式模型—     構建o和s的條件分佈p(s|o)—產生式模型中,觀察序列作為模型的一部分;—判別式模型中,觀察序列只作為條件,因此可以針對觀察序列設計靈活的特徵。產生式模型:無窮樣本==》概率密度模型 = 產生模型==》預測判別式模型:有限樣本==》判別函式 = 預測模型==》預測    一般認為判別型模型要好於生成型模型,因為它是直接根據資料對概率建模,而生成型模型還要先求兩個難度相當的概率概率圖模型—用圖的形式表示概率分佈—基於概率論中貝葉斯規則建立起來的,解決不確定性問題,可以用於人工智慧、 資料探勘、 語言處理文字分類等領域    圖模型是表示隨機變數之間的關係的圖,圖中的節點表示隨機變數,缺少邊表示條件獨立假設。因此可以對聯合分佈提供一種緊緻表示—根據邊是否有方向,有兩種主要的圖模型◦無向圖:亦稱馬爾科夫隨機場(Markov Random Fields, MRF’s)或馬爾科夫網路(Markov Networks)◦有向圖:亦稱貝葉斯網路(Bayesian Networks)或信念網路(Belief Networks, BN’s).◦還有混合圖模型,有時稱為鏈圖(chain graphs)—我們不妨拿種地來打個比方。其中有兩個概念:位置(site),相空間(phase space)。“位置”好比是一畝畝農田;“相空間”好比是種的各種莊稼。我們可以給不同的地種上不同的莊稼,這就好比給隨機場的每個“位置”,賦予相空間裡不同的值。所以,俗氣點說,隨機場就是在哪塊地裡種什麼莊稼的事情。—簡單地講,隨機場可以看成是一組隨機變數的集合(這組隨機變數對應同一個樣本空間)。當給每一個位置中按照某種分佈隨機賦予相空間的一個值之後,其全體就叫做隨機場。—當然,這些隨機變數之間可能有依賴關係,一般來說,也只有當這些變數之間有依賴關係的時候,我們將其單獨拿出來看成一個隨機場才有實際意義。—具有馬爾科夫性質—體現了一個思想:離當前因素比較遙遠(這個遙遠要根據具體情況自己定義)的因素對當前因素的性質影響不大。    條件隨機場模型是一種無向圖模型,它是在給定需要標記的觀察序列的條件下,計算整個標記序列的聯合概率分佈,而不是在給定當前狀態條件下,定義下一個狀態的狀態分佈。即給定觀察序列O,求最佳序列S。

CRF其實就是一種在生產模型基礎上的判別模型?

    條件隨機場模型是由Lafferty在2001年提出的一種典型的判別式模型。它在觀測序列的基礎上對目標序列進行建模,重點解決序列化標註的問題條件隨機場模型既具有判別式模型的優點,又具有產生式模型考慮到上下文標記間的轉移概率,以序列化形式進行全域性引數優化和解碼的特點,解決了其他判別式模型(如最大熵馬爾科夫模型)難以避免的標記偏置問題。

    條件隨機場理論(CRFs)可以用於序列標記、資料分割、組塊分析等自然語言處理任務中。在中文分詞、中文人名識別、歧義消解等漢語自然語言處理任務中都有應用,表現很好。

目前基於 CRFs 的主要系統實現有 CRF,FlexCRF,CRF++

缺點:訓練代價大、複雜度高

———————————

    條件隨機場模型是一種無向圖模型,它是在給定需要標記的觀察序列的條件下,計算整個標記序列的聯合概率分佈,而不是在給定當前狀態條件下,定義下一個狀態的狀態分佈。即給定觀察序列O,求最佳序列S。與最大熵模型相似,條件隨機場(Conditional random fields,CRFs)是一種機器學習模型,在自然語言處理的許多領域(如詞性標註、中文分詞、命名實體識別等)都有比較好的應用效果。條件隨機場最早由John D. Lafferty提出,其也是Brown90的作者之一,和賈里尼克相似,在離開IBM後他去了卡耐基梅隆大學繼續搞學術研究,2001年以第一作者的身份發表了CRF的經典論文 “Conditional random fields: Probabilistic models for segmenting and labeling sequence data”。

    關於條件隨機場的參考文獻及其他資料,Hanna Wallach在05年整理和維護的這個頁面“conditional random fields”非常不錯,其中涵蓋了自01年CRF提出以來的很多經典論文(不過似乎只到05年,之後並未更新)以及幾個相關的工具包(不過也沒有包括CRF++),但是仍然非常值得入門條件隨機場的讀者參考。

——————————————–

    一般序列分類模型常常採用隱馬模型(HMM), 像基於類的中文分詞, 但隱馬模型中存在兩個假設: 輸出獨立性假設和馬爾可夫性假設. 其中, 輸出獨立性假設要求序列資料嚴格相互獨立才能保證推導的正確性, 而事實上大多數序列資料不能 被表示成一系列獨立事件. 而條件隨機場則使用一種概率圖模型, 具有表達長距離依賴性和交疊性特徵的能力, 能夠較好地解決標註(分類)偏置等問題的優點, 而且所有特徵可以進行全域性歸一化, 能夠求得全域性的最優解.

    條件隨機場是一個無向圖上概率分佈的學習框架, 由Lafferty 等首先引入到自然語言處理的串標引學習任務中來. 最常用的一類CRF是線性鏈CRF, 適用於我們的分詞學習. 記觀測串為W=w1w2…wn, 標記串(狀態)序列 Y=y1y2…yn, 線性鏈CRF對一個給定串的標註, 其概率定義為:

。。。 。。。

    其中, Y是串的標註序列, W是待標記的字元, fk是特徵函式, λk是對應的特徵函式的權值, 而t是標記, Z(W)是歸一化因子, 使得上式成為概率分佈.

    CRF模型的引數估計通常使用L-BFGS演算法來完成. CRF的解碼過程, 也就是求解未知串標註的過程, 需要搜尋計算該串上的一個最大聯合概率, 即:

Y* = arg max(y)P(Y|W)

    線上性鏈CRF上, 這個計算任務可以用一般的Viterbi演算法來有效地完成.

目前我發現的關於CRF的實現有:

* CRF++(http://crfpp.sourceforge.net/)

Justin's Graphical Models / Conditional Random Field Toolbox