1、條件隨機場的定義
條件隨機場的定義:設X與Y是隨機變量,P(Y|X)是給定條件X時Y的條件概率分布,此時若隨機變量Y構成的是一個馬爾科夫隨機場,則稱條件概率分布P(Y|X)是條件隨機場。隱馬爾科夫模型和隱馬爾科夫隨機場是屬於生成模型,因為它們都有計算聯合概率分布,而條件隨機場是判別模型,其目標就是直接構建條件概率模型P(Y|X)。
首先定義一般的條件隨機場模型,設X與Y是隨機變量。若隨機變量Y構成一個由無向圖G=(V, E)表示的馬爾科夫隨機場。則有下面的表達式
對於上面的式子若是對所有的v都成立,則稱條件概率分布P(Y|X)為條件隨機場。式子中w~v表示與結點v有邊連接的所有結點(也就是和結點v存在依賴關系的結點),而w≠v,則表示除了v之外的所有結點。對於一般的條件隨機場來說,結點v的條件概率除了和X有關還和與之有邊相連的結點有關。
再來看線性鏈條件隨機場,在一般的條件隨機場中並沒有要求X和Y具有相同的結構,而在線性鏈條件隨機場中要求X和Y具有相同的結構,具體結構如下圖
設X = (X1, X2, ..., Xn),Y = (Y1, Y2, ..., Yn)均為線性鏈表示的隨機變量序列,若在給定隨機變量序列X的條件下,隨機變量序列Y的條件概率分布P(Y|X)構成條件隨機場,即滿足馬爾科夫性,則表達式如下
從上面的表達式可以看到,當前的結點只與前后相鄰的兩個結點有關。Y的無向圖模型G可以表示為
對於線性鏈條件隨機場通常的應用就是詞性標注,將隨機變量X看作是觀測序列(即觀察到的句子),Y看作是標注序列(句子的詞性序列)
2、線性鏈條件隨機場的參數形式
對於隨機變量X和Y,線性鏈條件隨機場的參數形式如下
其中規范場因子Z
在表達式中的tk、sl 是特征函數(tk 是定義在邊上的特征函數,稱為轉移特征,依賴與當前和前一個位置;sl 是定義在結點上的特征函數,稱為狀態特征,依賴於當前的位置)。
在這里函數
sl(yi, x, i),l = 1, 2, ..., L
其中L是定義在該節點的節點特征函數的總個數,i是當前節點在序列的位置。
函數
tk(yi-1, yi, x, i),k = 1, 2, ..., K
其中K是定義在該節點的局部特征函數的總個數,i是當前節點在序列的位置。
無論是節點特征函數還是局部特征函數,它們的取值只能是0或者1。即滿足特征條件或者不滿足特征條件。同時,我們可以為每個特征函數賦予一個權值,用以表達我們對這個特征函數的信任度。假設tk的權重系數是λk, sl的權重系數是μl,則linear-CRF由我們所有的tk, λk, sl, μl共同決定。
考慮到上面的式子中同一特征(tk、sl)在各個位置(i)都有定義,可以對同一個特征在各個位置求和,將局部特征函數轉化為一個全局的特征函數。簡化線性鏈條件隨機場的表達形式,這樣就可以用權值向量和特征向量的內積來表示線性鏈條件隨機場。
首先將狀態特征和轉移特征及其權重用同一的符號表示,設有K1個轉移特征,K2個狀態特征,令K = K1 + K2,則有
然后對各個位置上的同一特征求和
用wk表示特征fk(y, x)的權值
於是,條件隨機場的表達形式可以寫成
再做進一步簡化,令
則條件隨機場可以寫成w與F(y, x)的內積形式
除了用向量的內積來表示之外,還可以用矩陣的形式來表示
首先對標記序列引入特殊的起點和終點的標記y0 = start,yn+1 = stop(該引進主要是為了讓y1和yn能和其他的點以同樣的形式表述)。引入一個m × m的矩陣M(x的每一個位置i = 1, 2, ..., n+1上都有這樣一個矩陣),m為y所有可能的狀態的取值個數。則M的定義如下
則具體的線性鏈條件隨機常表達式如下
3、條件隨機場的概率計算問題
線性鏈條件隨機場的概率計算問題:即給定線性鏈條件隨機場的條件概率分布P(y|x), 在給定輸入序列x和輸出序列y時,計算條件概率P(yi|x)和P(yi−1,yi|x)以及對應的期望。在這里我們采用前向-后向算法來處理該類問題。引入前向向量和后向向量,具體表達式如下
前向向量表達式αi(x),i = 0, 1, .., n+1:
αi(yi|x)表示在位置i的標記是yi並且到位置i的前部分標記序列的非規范化概率,yi可取的值有m個,所以αi(x)是m維列向量,可以表示為
后向向量表達式βi(x),i = 0, 1, .., n+1:
βi(yi|x)表示在位置i的標記是yi並從i+1到n的后部分標記序列的非規范化概率,yi可取的值有m個,所以βi(x)是m維列向量,可以表示為
基於給定的前向向量和后向向量我們就可以處理開頭的三個解答,首先是在位置i是標記yi的條件概率和在位置i-1與i是標記yi-1和yi的條件概率:
計算聯合分布P(x,y)與條件分布P(y|x)的期望
特征函數fk(x,y)關於條件分布P(y|x)的期望表達式是:
聯合分布P(x,y)的期望
整體來說,線性鏈條件隨機場的前向-后向算法還是比HMM中的算法要來的簡單
4、線性鏈條件隨機常的學習算法
條件隨機場的學習算法比HMM要簡單很多,因為是判別模型,可以直接用梯度下降法或者擬牛頓法來求解
給定訓練數據集,由訓練數據集可知經驗概率分布
通過極大化訓練數據的對數似然函數來求模型參數,對數似然函數表達式如下
當將Pw(y|x)用向量內積的形式展開,可以將損失函數可以寫成
現在我們就可以極小化f(w),梯度表達式如下
通過梯度下降法來更新w的值,但注意在每次更新w后都要計算當前的Pw(y|x),因為該值會出現在梯度表達式中,計算當前的Pw(y|x)是用於求下一次迭代的梯度的。
5、線性鏈條件隨機場的預測算法
預測算法的問題:給定條件隨機場的條件概率P(y|x)和一個觀測序列x,要求出滿足P(y|x)最大的序列y*。解決這類解碼問題通常用的算法都是維特比算法。在該類問題中我們的目標是
在這里我們只要求非規范化概率就可以了(因為只是求最大值,並不需要具體的概率值,這樣可以大大提高計算效率)。我們將上面的式子表示成
接下來通過維特比算法去求出序列y*,首先求出位置1的各個標記j = 1, 2, ..., m的非規范化概率:
求出對應於位置i的各個標記l = 1, 2, ..., m的非規范化概率的最大值(該值的結果是依賴於之前的所有位置的,並且用於計算的值都是之前求好的,動態規划思想),同時記錄非規范化概率最大值的路徑
當i = n時,求得非規范化概率的最大值
先獲取最優路徑的終點
接着回溯,尋找每個位置的最優序列點
當i = 1時,就可以求得最優路徑
6、總結
線性鏈條件隨機場和HMM有很多類似的地方(也只局限於線性鏈條件隨機場,而一般的條件隨機場的應用范圍是要遠大於HMM的),比如都有三個基本問題:預測問題、學習問題、概率問題。除了學習問題(主要是因為求解的結果不一樣,線性鏈條件隨機場是判別模型,而HMM是生成模型,因此線性鏈條件隨機場求的是條件概率分布,而HMM求得是聯合概率分布),其余的兩個問題處理的思路都非常相似。而且兩者都可以用在序列模型上,在自然語言處理中都有廣泛的使用。