機器學習 —— 條件隨機場模型


1、背景

  有了強大的log-linear模型,連水槽都能拿來做分類特征了,當然要想辦法用一下試試了。log-linear模型的輸入是一系列幾乎接近自然語言的特征方程,這種抽象的東西拿來做語義識別自然是再好不過了。語義識別有一個重要的步驟,叫做 ”給句子貼標簽“,簡而言之,就是給定一個句子,通過識別其中一些特征:比如存在人名,地名,日期,商品名稱,從而判斷這個句子的屬性(做交易,下任務,更改設置等。) 能夠准確的識別句子中的這些 tag 可以有助於理解一個句子。但是要怎樣來確定某個單詞是不是地名或者人名呢?光靠首字母是否大小寫或者和對應的庫去匹配顯然是不夠好的。

  為了更好的完成任務,引入上下文成了一個有意義的手段。對自然語言或者大部分信號而言,在某信號之前的上個信號有着重要的意義(比如我使用了重要的,那么下個詞多半是名詞)。所以構建了以相鄰信號作為特征方程的模型,成為條件隨機場。

  普通的log-linear模型長這樣:

  如果把上下文考慮進特征方程,那么它的特征方程大概長這樣:

  (x-) 代表整個句子,(y-)代表標簽序列。一個n個詞(x的長度)的句子顯然有m個標簽(tag的容量)。因為句子的長度一般都不同,但“標簽”的集合卻可以是相同的(詞性總歸就那么幾個),所以,我們需要恆定數目的特征方程(一般情況下特征方程的數目是m*n).

  故考慮設計了上述形式的子特征方程,以 y_i-1 (這表示某標簽序列的第i-1個標簽)以及第i個標簽形成的子特征方程遍歷整個句子。最后將子特征方程遍歷的結果求和,作為總特征方程的返回值。子特征方程可以是以下形式(如果符合則返回1,否則返回0)

  f1.前面為名詞,則后面一個詞開頭為M

  f2.前面為副詞,則后面一個詞是形容詞

  f3.前面為形容詞,則后面一個詞以y結尾

  ...

  顯然對於一般情況下的句子而言,上述子特征方程求和后會給 F_j 一個比較大的值(因為符合語法規則)。注意每個 f_ 里都只能有兩個詞性。當我們有很多這樣的規則時,正確的規則(名次后面接動詞)會被訓練成較高的權重,而錯誤的規則則會被賦予較低的權重,最后得到的詞性序列會有較高的正確性。

2、CRF 模型的數學分析

  拿到CRF模型后,我們要想辦法能夠通過訓練得到 一組合適的參數w_j,以實現分類器的構造。但是在拿到參數之前,還是需要做些准備工作,比如:獲得各階導數的表達式。ok,由於我們引入了 子特征方程 f_ 並且 F_與f_ 存在求和關系,所以這里的算法會比較復雜。

  整體的表達式長這樣:

  如果把 f_j 帶入,表達式長這樣:

  (外圍部分被忽略了)

  最終目標也就變成了:

  這里做了一個乘法結合律,把wj和fj放在了一起,總結成了一個g函數。是不是   “一個”   g函數呢?這倒是不一定。。。。。。。

  對於任意一個 i ,gi 都是不同的方程。和 gi 有關的參數是兩個,這兩個參數都是tag。那么假設 tag的集合里有m個元素,則gi的總個數是 m^2(所有的tag組合都要遍歷)。也就是說,對長度為n的一個句子,都要算 n*m^2 次(此處可能有誤)。。。。

  計算次數這么多顯然有點問題。故考慮設計一種遞歸的算法,來減小計算的規模。這里不詳細講述。

 

3.模型迭代所使用的梯度

  要對 log-linear 模型進行標定,當然是要想辦法使模型參數最符合訓練集合了。最符合訓練集合的意思就是要想辦法使得在某組參數下,訓練集發生的概率達到最大。不妨對概率取對數,使得式子線性化。

  ok,到此為止,已經求出了各個參數導數的表達形式,F_j(x,y)是很容易求的,對任意訓練集這都是已知的。而后面的E求起來卻比較麻煩,它需要把所有可行的標簽帶入Fj中,並且乘以p(這里p也好求,給定wj,p就是已知的)但是這樣子梯度的計算量就非常大。相當於每一次迭代都需要對 標簽集 進行遍歷,計算量很大,不過機智的計算機科學家設計了算法通過預測p的分布,來描述E。具體的算法不再贅述,總之,條件隨機場模型是一種可考慮多因素,對物體進行多標簽分類的模型。其訓練過程需要有監督學習,對機器人視覺來說,有監督學習並不是一件簡單的事情。物體的外形也很難和物體的標簽聯系起來(圓的是杯子還是茶葉罐?)所以條件隨機場對計算機視覺會更有效,基於紋理顏色形狀等信息的二維圖像更適合去探究其意義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM