條件隨機場CRF(一)從隨機場到線性鏈條件隨機場

    條件隨機場CRF(一)從隨機場到線性鏈條件隨機場html

    條件隨機場CRF(二) 前向後向算法評估標記序列機率算法

    條件隨機場CRF(三) 模型學習與維特比算法解碼dom

    條件隨機場(Conditional Random Fields, 如下簡稱CRF)是給定一組輸入序列條件下另外一組輸出序列的條件機率分佈模型,在天然語言處理中獲得了普遍應用。本系列主要關注於CRF的特殊形式:線性鏈(Linear chain) CRF。本文關注與CRF的模型基礎。機器學習

1.什麼樣的問題須要CRF模型

    和HMM相似,在討論CRF以前,咱們來看看什麼樣的問題須要CRF模型。這裏舉一個簡單的例子:函數

    假設咱們有Bob一天從早到晚的一系列照片,Bob想考考咱們,要咱們猜這一系列的每張照片對應的活動,好比: 工做的照片,吃飯的照片,唱歌的照片等等。一個比較直觀的辦法就是,咱們找到Bob以前的平常生活的一系列照片,而後找Bob問清楚這些照片表明的活動標記,這樣咱們就能夠用監督學習的方法來訓練一個分類模型,好比邏輯迴歸,接着用模型去預測這一天的每張照片最可能的活動標記。post

    這種辦法雖然是可行的,可是卻忽略了一個重要的問題,就是這些照片之間的順序實際上是有很大的時間順序關係的,而用上面的方法則會忽略這種關係。好比咱們如今看到了一張Bob閉着嘴的照片,那麼這張照片咱們怎麼標記Bob的活動呢?比較難去打標記。可是若是咱們有Bob在這一張照片前一點點時間的照片的話,那麼這張照片就好標記了。若是在時間序列上前一張的照片裏Bob在吃飯,那麼這張閉嘴的照片頗有多是在吃飯咀嚼。而若是在時間序列上前一張的照片裏Bob在唱歌,那麼這張閉嘴的照片頗有多是在唱歌。學習

    爲了讓咱們的分類器表現的更好,能夠在標記數據的時候,能夠考慮相鄰數據的標記信息。這一點,是普通的分類器難以作到的。而這一塊,也是CRF比較擅長的地方。htm

    在實際應用中,天然語言處理中的詞性標註(POS Tagging)就是很是適合CRF使用的地方。詞性標註的目標是給出一個句子中每一個詞的詞性(名詞,動詞,形容詞等)。而這些詞的詞性每每和上下文的詞的詞性有關,所以,使用CRF來處理是很適合的,固然CRF不是惟一的選擇,也有不少其餘的詞性標註方法。blog

2. 從隨機場到馬爾科夫隨機場

    首先,咱們來看看什麼是隨機場。「隨機場」的名字取的很玄乎,其實理解起來不難。隨機場是由若干個位置組成的總體,當給每個位置中按照某種分佈隨機賦予一個值以後,其全體就叫作隨機場。仍是舉詞性標註的例子:假如咱們有一個十個詞造成的句子須要作詞性標註。這十個詞每一個詞的詞性能夠在咱們已知的詞性集合(名詞,動詞...)中去選擇。當咱們爲每一個詞選擇完詞性後,這就造成了一個隨機場。get

    瞭解了隨機場,咱們再來看看馬爾科夫隨機場。馬爾科夫隨機場是隨機場的特例,它假設隨機場中某一個位置的賦值僅僅與和它相鄰的位置的賦值有關,和與其不相鄰的位置的賦值無關。繼續舉十個詞的句子詞性標註的例子: 若是咱們假設全部詞的詞性只和它相鄰的詞的詞性有關時,這個隨機場就特化成一個馬爾科夫隨機場。好比第三個詞的詞性除了與本身自己的位置有關外,只與第二個詞和第四個詞的詞性有關。 

3. 從馬爾科夫隨機場到條件隨機場

    理解了馬爾科夫隨機場,再理解CRF就容易了。CRF是馬爾科夫隨機場的特例,它假設馬爾科夫隨機場中只有$X$和$Y$兩種變量,$X$通常是給定的,而$Y$通常是在給定$X$的條件下咱們的輸出。這樣馬爾科夫隨機場就特化成了條件隨機場。在咱們十個詞的句子詞性標註的例子中,$X$是詞,$Y$是詞性。所以,若是咱們假設它是一個馬爾科夫隨機場,那麼它也就是一個CRF。

    對於CRF,咱們給出準確的數學語言描述:

    設$X$與$Y$是隨機變量,$P(Y|X)$是給定$X$時$Y$的條件機率分佈,若隨機變量$Y$構成的是一個馬爾科夫隨機場,則稱條件機率分佈$P(Y|X)$是條件隨機場。

4. 從條件隨機場到線性鏈條件隨機場

    注意在CRF的定義中,咱們並無要求$X$和$Y$有相同的結構。而實現中,咱們通常都假設$X$和$Y$有相同的結構,即:$$X =(X_1,X_2,...X_n),\;\;Y=(Y_1,Y_2,...Y_n)$$

    咱們通常考慮以下圖所示的結構:$X$和$Y$有相同的結構的CRF就構成了線性鏈條件隨機場(Linear chain Conditional Random Fields,如下簡稱 linear-CRF)。

    在咱們的十個詞的句子的詞性標記中,詞有十個,詞性也是十個,所以,若是咱們假設它是一個馬爾科夫隨機場,那麼它也就是一個linear-CRF。

    咱們再來看看 linear-CRF的數學定義:

    設$X =(X_1,X_2,...X_n),\;\;Y=(Y_1,Y_2,...Y_n)$均爲線性鏈表示的隨機變量序列,在給定隨機變量序列$X$的狀況下,隨機變量$Y$的條件機率分佈$P(Y|X)$構成條件隨機場,即知足馬爾科夫性:$$P(Y_i|X,Y_1,Y_2,...Y_n) = P(Y_i|X,Y_{i-1},Y_{i+1})$$

    則稱$P(Y|X)$爲線性鏈條件隨機場。 

5. 線性鏈條件隨機場的參數化形式

    對於上一節講到的linear-CRF,咱們如何將其轉化爲能夠學習的機器學習模型呢?這是經過特徵函數和其權重係數來定義的。什麼是特徵函數呢?

    在linear-CRF中,特徵函數分爲兩類,第一類是定義在$Y$節點上的節點特徵函數,這類特徵函數只和當前節點有關,記爲:$$s_l(y_i, x,i),\;\; l =1,2,...L$$

    其中$L$是定義在該節點的節點特徵函數的總個數,$i$是當前節點在序列的位置。

    第二類是定義在$Y$上下文的局部特徵函數,這類特徵函數只和當前節點和上一個節點有關,記爲:$$t_k(y_{i-1},y_i, x,i),\;\; k =1,2,...K$$

    其中$K$是定義在該節點的局部特徵函數的總個數,$i$是當前節點在序列的位置。之因此只有上下文相關的局部特徵函數,沒有不相鄰節點之間的特徵函數,是由於咱們的linear-CRF知足馬爾科夫性。

    不管是節點特徵函數仍是局部特徵函數,它們的取值只能是0或者1。即知足特徵條件或者不知足特徵條件。同時,咱們能夠爲每一個特徵函數賦予一個權值,用以表達咱們對這個特徵函數的信任度。假設$t_k$的權重係數是$\lambda_k$,$s_l$的權重係數是$\mu_l$,則linear-CRF由咱們全部的$t_k, \lambda_k, s_l, \mu_l$共同決定。

    此時咱們獲得了linear-CRF的參數化形式以下:$$P(y|x) = \frac{1}{Z(x)}exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big) $$

    其中,$Z(x)$爲規範化因子:$$Z(x) =\sum\limits_{y} exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)$$

    回到特徵函數自己,每一個特徵函數定義了一個linear-CRF的規則,則其係數定義了這個規則的可信度。全部的規則和其可信度一塊兒構成了咱們的linear-CRF的最終的條件機率分佈。

6. 線性鏈條件隨機場實例

     這裏咱們給出一個linear-CRF用於詞性標註的實例,爲了方便,咱們簡化了詞性的種類。假設輸入的都是三個詞的句子,即$X=(X_1,X_2,X_3)$,輸出的詞性標記爲$Y=(Y_1,Y_2,Y_3)$,其中$Y \in \{1(名詞),2(動詞)\}$

    這裏只標記出取值爲1的特徵函數以下:$$t_1 =t_1(y_{i-1} = 1, y_i =2,x,i), i =2,3,\;\;\lambda_1=1 $$

$$t_2 =t_2(y_1=1,y_2=1,x,2)\;\;\lambda_2=0.5$$

$$t_3 =t_3(y_2=2,y_3=1,x,3)\;\;\lambda_3=1$$

$$t_4 =t_4(y_1=2,y_2=1,x,2)\;\;\lambda_4=1$$

$$t_5 =t_5(y_2=2,y_3=2,x,3)\;\;\lambda_5=0.2$$

$$s_1 =s_1(y_1=1,x,1)\;\;\mu_1 =1$$

$$s_2 =s_2( y_i =2,x,i), i =1,2,\;\;\mu_2=0.5$$

$$s_3 =s_3( y_i =1,x,i), i =2,3,\;\;\mu_3=0.8$$

$$s_4 =s_4(y_3=2,x,3)\;\;\mu_4 =0.5$$

    求標記(1,2,2)的非規範化機率。

    利用linear-CRF的參數化公式,咱們有:$$P(y|x) \propto exp\Big[\sum\limits_{k=1}^5\lambda_k\sum\limits_{i=2}^3t_k(y_{i-1},y_i, x,i) + \sum\limits_{l=1}^4\mu_l\sum\limits_{i=1}^3s_l(y_i, x,i) \Big]$$

    帶入(1,2,2)咱們有:$$P(y_1=1,y_2=2,y_3=2|x) \propto exp(3.2)$$

7. 線性鏈條件隨機場的簡化形式

    在上幾節裏面,咱們用$s_l$表示節點特徵函數,用$t_k$表示局部特徵函數,同時也用了不一樣的符號表示權重係數,致使表示起來比較麻煩。其實咱們能夠對特徵函數稍加整理,將其統一塊兒來。

    假設咱們在某一節點咱們有$K_1$個局部特徵函數和$K_2$個節點特徵函數,總共有$K=K_1+K_2$個特徵函數。咱們用一個特徵函數$f_k(y_{i-1},y_i, x,i)$來統一表示以下:

$$f_k(y_{i-1},y_i, x,i)= \begin{cases} t_k(y_{i-1},y_i, x,i) & {k=1,2,...K_1}\\ s_l(y_i, x,i)& {k=K_1+l,\; l=1,2...,K_2} \end{cases}$$

    對$f_k(y_{i-1},y_i, x,i)$在各個序列位置求和獲得:$$f_k(y,x) = \sum\limits_{i=1}^nf_k(y_{i-1},y_i, x,i)$$

    同時咱們也統一$f_k(y_{i-1},y_i, x,i)$對應的權重係數$w_k$以下:

$$w_k= \begin{cases} \lambda_k & {k=1,2,...K_1}\\ \mu_l & {k=K_1+l,\; l=1,2...,K_2} \end{cases}$$

    這樣,咱們的linear-CRF的參數化形式簡化爲:$$P(y|x) =  \frac{1}{Z(x)}exp\sum\limits_{k=1}^Kw_kf_k(y,x) $$

    其中,$Z(x)$爲規範化因子:$$Z(x) =\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(y,x)$$

    若是將上兩式中的$w_k$與$f_k$的用向量表示,即:$$w=(w_1,w_2,...w_K)^T\;\;\; F(y,x) =(f_1(y,x),f_2(y,x),...f_K(y,x))^T$$

    則linear-CRF的參數化形式簡化爲內積形式以下:$$P_w(y|x) = \frac{exp(w \bullet F(y,x))}{Z_w(x)} = \frac{exp(w \bullet F(y,x))}{\sum\limits_{y}exp(w \bullet F(y,x))}$$

8. 線性鏈條件隨機場的矩陣形式

    將上一節統一後的linear-CRF公式加以整理,咱們還能夠將linear-CRF的參數化形式寫成矩陣形式。爲此咱們定義一個$m \times m$的矩陣$M$,$m$爲$y$全部可能的狀態的取值個數。$M$定義以下:$$M_i(x) = \Big[ M_i(y_{i-1},y_i |x)\Big] =  \Big[  exp(W_i(y_{i-1},y_i |x))\Big] = \Big[  exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i))\Big]$$

    咱們引入起點和終點標記$y_0 =start, y_{n+1} = stop$, 這樣,標記序列$y$的規範化機率能夠經過$n+1$個矩陣元素的乘積獲得,即:$$P_w(y|x) =  \frac{1}{Z_w(x)}\prod_{i=1}^{n+1}M_i(y_{i-1},y_i |x) $$

    其中$Z_w(x)$爲規範化因子。

 

    以上就是linear-CRF的模型基礎,後面咱們會討論linear-CRF和HMM相似的三個問題的求解方法。

 

 (歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com) 

相關文章
相關標籤/搜索