Motivation
學習CRF的過程中,我發現很多資料,教程上來就給一堆公式,並不知道這些公式是怎么來的。 所以我想以面向問題的形式,分享一下自己對CRF用於序列標注問題的理解
問題定義
給定觀測序列\(X=(X_1,X_2,X_3,...X_n)\),
應該注意以下幾點:
- 輸入\(X=(X_1,X_2,X_3,...X_n)\)是觀測序列,是先驗條件
- 輸出\(Y=(Y_1,Y_2,Y_3,...Y_n)\)是標注序列,也稱為狀態序列, 與觀測序列具有相同的結構
我們舉個例子:
設有一標注問題:輸入觀測序列為\(X=(X_1,X_2,X_3,X_3)=(Dog caught the cat)\),輸出標記序列為\(Y=(Y_1,Y_2,Y_3,Y_3)\),\(Y_1,Y_2,Y_3,Y_3\)取值於\(\gamma=\{verb, article, noun\}\)
我們可以得到以下模型圖:
當模型輸入句子 ”Dog caught the cat“ 時,我們希望模型能夠輸出標注序列:“n v a n”的概率最大
那么如何根據這個狀態圖計算出序列”n v a n“的出現的概率呢?
這里就引出了概率無向圖模型:(注:個人認為條件隨機場模型是一個概率無向圖模型,而線性鏈條件隨機場是一個有向圖模型)
條件隨機場
這里我們對於上圖中的圖模型,我們定義兩種特征: 狀態特征和轉移特征
- 狀態特征: 定義在結點上,表示這個結點是否擁有某個屬性
- 轉移特征: 定義在邊上,表示兩個狀態是否會因為某個特征而轉移
對於上面的問題中,我們可以直覺性地定義一些特征,例如:狀態特征可以是\(\{脊椎動物,哺乳動物,爬行動物,地點, 時間,動作\}\),轉移特征可以理解有\(\{動物后面接動詞jump,人后面接動詞love,名詞后面接代詞,動詞后面接代詞,形容詞后面接名詞\}\),這些就是我們對於一些直觀特征,當然還有很多隱藏特征我們無法用語言來解釋,也沒有必要解釋。
因此我們用數學語言來表達這些特征:
假設我們定義了\(K_1\) 個轉移特征 $ {t_1,t_2,...,t_{K_1}} $ ,定義了\(K_2\)個狀態特征 \(\{s_1,s_2,...,s_{K_2}\}\) ,當一個結點擁有狀態特征\(s_j\)時,\(s_j=1\),否則,\(s_j=0\)
例如:dog 擁有狀態特征:{脊椎動物,哺乳動物}
一個結點\(y_i\)的狀態特征只與這個結點和觀測序列有關,其他結點無關,同理,轉移特征可以表示如下:
當然,這些特征所起到的重要性應該是有差異的,例如單詞:train,它作為動詞時有“訓練,瞄准”的意思。 當我們一篇關於機器學習的論文(觀測序列\(x\))中觀測到了單詞train時
在train被模型標注為verb的過程中,特征\(s_1\)比\(s_2\)應該起到更高的重要性,理應擁有更大的權重,同理對於每個轉移特征,利用也有對應的權重,
這里,我們定義轉移特征的權值為\(\lambda_k\),狀態特征的權值為\(\mu_l\),則當我們得到觀測序列\(X=(x_1,x_2,...x_n)\),狀態序列為\(Y=(y_1,y_2,...y_n)\)時的所有結點的的特征之和為
由此,我們用這個特征和來計算:
當觀測序列\(X=(x_1,x_2,...x_n)\),狀態序列為\(Y=(y_1,y_2,...y_n)\)的概率
首先概率值不能是負的,所以我們將這個特征和變換為正值,還必須保證各個狀態序列特征和大小關系不變,所以我們使用指數函數exp進行變換得到,再把這個結果規范化后就得到了概率函數了,也是線性鏈條件隨機場的參數化形式定義(《統計學習方法》定理11.2)
設 \(P(Y|X)\)為線性鏈條件隨機場, 則在隨機變量 取值為x的條件下, 隨機變量Y的取值為 y的條件概率具有如下形式:
其中
\(t_k\)和\(s_l\)是特征函數,\(\lambda_k\)和\(\mu_l\)是對應的權值, 是規范化因子,\(Z(x)\)求和是在所有可能的輸出序列上進行的
Reference
《統計學習方法》 李航