1. 程式人生 > >條件隨機場專題(2)--CRF模型

條件隨機場專題(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正則式:

                                      

          求解時,通過梯度下降法就可以求解出來。

          在引數求解出來之後,要進行解碼操作:選擇出多種情況中概率最大的情況

                                                                                                

      常用的特徵工程技巧:

  1. 使用標籤類特徵,比如命名實體標註中的各個命名種類,會產生大規模的引數,因為有一些是不可能出現的,也就是說有的前面的係數為0。(比如說:北京和上海)這裡邊“和”是永遠不會是城市的,這種特徵叫做“unsupport feature”。雖然這種特徵可以略微提高效能,但是,它會帶來更多的引數,大大增加訓練時間。
    提出的辦法就是:
    先篩選出“unsupport feature”,對沒有“unsupport feature”進行CRF訓練;在迭代有限次之後,把那些“unsupport feature”加入到模型中訓練。
  2. 為了減少特徵的數量,我們把標籤類特徵對某些模板有效,而不是對所有模板有效。
  3. 邊界的標籤往往不同於普通位置的標籤,比如說:句子中段英語單詞大寫,一般就是名詞,而句子開始則不一定。
  4. 訓練以一些基礎的特徵開始,然後期間增加一些這些特徵之間的聯絡。
  5. 對於實值特性,它可以幫助應用標準的技巧,比如使特性歸一化,表示均值0和標準偏差1或將其轉換為本特性分類的值,表示為二進位制特徵。
  6. 在使用冗餘特性時,使用正則化是很重要的。