每日一問6.23

問題:條件隨機場是怎麼進行學習的?

參考了知乎文章如何輕鬆愉快地理解條件隨機場(CRF)?

模型構建

條件概率:

P(y=yx)=ewF(y,x)yewF(y,x)P(y=y'|x)=\frac{e^{\mathbb{w}\cdot F(y', x)}}{\sum_{y}e^{\mathbb{w}\cdot F(y, x)}}

其中,w=(w1,,wK)\mathbb{w}=(w_1,\cdots, w_K)爲待學習的參數組,F=(f1(y,x),,fK(y,x))F=(f_1(y,x), \cdots, f_K(y,x))爲特徵函數構成的向量,特徵函數包含狀態特徵函數和轉移特徵函數兩類,每類有若干個。

特徵函數的例子

x=(x1,,xn),y=(y1,,yn)x=(x_1, \cdots, x_n),y=(y_1, \cdots,y_n)

狀態特徵函數:

  • f(yi,x,i)=1f(y_i,x,i)=1 如果xix_i以"ly"結尾,yi=y_i=副詞 (其他情況爲0),此時我們應該想到對應要學習的參數λ\lambda應該大於0,並且值越大表明訓練集中的數據越支持"ly"結尾的單詞是副詞
  • f(yi,x,i)=1f(y_i,x,i)=1 如果xx最後一個字符是"?",i=1,yi=i=1, y_i=動詞 (其他情況爲0),此時我們應該想到對應要學習的參數λ\lambda應該大於0,並且值越大表明訓練集中的數據越支持問句的第一個單詞是動詞

轉移特徵函數:

  • g(yi1,yi,x,i)=1g(y_{i-1},y_{i},x,i)=1 如果yi1=,yi=y_{i-1}=名詞,y_{i}=動詞(其他情況爲0),此時我們可以想到對應要學習的參數μ\mu應該大於0,並且值越大表明訓練集中的數據越支持名詞後面接動詞
  • g(yi1,yi,x,i)=1g(y_{i-1},y_{i},x, i)=1 如果如果yi1=,yi=y_{i-1}=動詞,y_{i}=動詞(其他情況爲0),此時我們可以想到對應要學習的參數μ\mu應該小於0,並且值越小表明訓練集中的數據越反對動詞後面接動詞

學習算法

優化目標爲:極小化負對數似然
1Ni=1NlogP(y=y(i)x=x(i))-\frac{1}{N}\sum_{i=1}^{N}logP(y=y^{(i)}|x=x^{(i)})

對參數的學習,可以使用梯度下降算法,也可以使用二階的擬牛頓算法L-BFGS,較常用的是後者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章