條件隨機場專題(2)--CRF模型
CRF是一種典型的判別式模型,它是根據模板,得到相應的特徵函式,再通過這些特徵函式進行引數的優化計算,那麼在介紹CRF模型前,就有必要先介紹判別式模型和生成式模型。
判別式模型和生成式模型的區別:
從流程上看:
生成模型:無窮樣本-->概率密度模型 = 產生模型-->預測
判別模型:有限樣本-->判別函式 = 預測模型-->預測
也就是說,如果我根據訓練集,統計出一個概率密度模型,然後通過這個模型進行預測,那麼就是一個生成模型;如果我寫出一個判別函式,通過訓練集,尋求出模型的各個引數的最優解,從而得到一個模型,再通過這個模型的各個引數預測,那麼就是一個判別模型。
舉個栗子:
生成模型:樸素貝葉斯、馬爾科夫隨機場
判別模型:支援向量機、邏輯迴歸、條件隨機場
線性CRF模型:
在這裡介紹一種CRF模型,即線性CRF模型。
我們現在有一群這樣的訓練集:D={x1,y1},{x2,y2},...,{xn,yn},需要預測的結果:O={y1',y2',...,yn'},然後我們有一堆特徵模板。我們需要求的是P(y|x),如果說詞性標註問題上,我們一句話中有8個位置,有5個標籤(名詞,動詞,介詞,形容詞,代詞),那麼我們需要求8的5次方個概率。
其中:
下標介紹:
函式f:在給定觀察序列X時,某個特定的序列Y的概率函式,包括轉移函式和狀態函式
K:f函式總共的個數
T:序列中總共的位置個數
t:在序列中的位置
最大對數似然表示式:
下標介紹:
N:訓練集中訓練資料的個數
我們的目標就是最大化對數似然函式時,求解各個引數的最優解。
為了避免過擬合,我們增加了L2正則式:
求解時,通過梯度下降法就可以求解出來。
在引數求解出來之後,要進行解碼操作:選擇出多種情況中概率最大的情況
常用的特徵工程技巧:
- 使用標籤類特徵,比如命名實體標註中的各個命名種類,會產生大規模的引數,因為有一些是不可能出現的,也就是說有的前面的係數為0。(比如說:北京和上海)這裡邊“和”是永遠不會是城市的,這種特徵叫做“unsupport feature”。雖然這種特徵可以略微提高效能,但是,它會帶來更多的引數,大大增加訓練時間。
提出的辦法就是:
先篩選出“unsupport feature”,對沒有“unsupport feature”進行CRF訓練;在迭代有限次之後,把那些“unsupport feature”加入到模型中訓練。 - 為了減少特徵的數量,我們把標籤類特徵對某些模板有效,而不是對所有模板有效。
- 邊界的標籤往往不同於普通位置的標籤,比如說:句子中段英語單詞大寫,一般就是名詞,而句子開始則不一定。
- 訓練以一些基礎的特徵開始,然後期間增加一些這些特徵之間的聯絡。
- 對於實值特性,它可以幫助應用標準的技巧,比如使特性歸一化,表示均值0和標準偏差1或將其轉換為本特性分類的值,表示為二進位制特徵。
- 在使用冗餘特性時,使用正則化是很重要的。