條件随機場應該是機器學習領域比較難的一個算法模型了,難點在于其定義之多(涉及到機率圖模型、團等機率)、數學上近似完美(涉及到機率、期望計算,最優化方面的知識),但是其在自然語言處理方面應用效果比較好,是以本文結合李航老師的《統計學習方法》學習一下。
1.定義
1.1 圖
圖是由結點和連接配接結點的邊組成的集合。結點和邊分别記作v和e,結點和邊的集合分别記作V和E,圖記作G=(V,E)。無向圖是指邊沒有方向的圖。
1.2 機率圖模型(PGM)
機率圖模型是一類用圖的形式表示随機變量之間條件依賴關系的機率模型,是機率論與圖論的結合。根據圖中邊有無方向,常用的機率圖模型分為兩類:有向圖(貝葉斯網絡、信念網絡)、無向圖(馬爾可夫随機場、馬爾可夫網絡)。
(1)有向圖的聯合機率:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90TQOVTSU5UenR1T4dGVZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DO4MTNwcTM0EzNyITM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
其中,
是
的父節點。
如上圖所示,則有
(2)機率無向圖模型:
設有聯合機率分布P(Y),由無向圖G=(V,E)表示,在圖G中,結點表示随機變量,邊表示随機變量之間的依賴關系。如果聯合機率分布P(Y)滿足成對、局部或全局馬爾可夫性,就稱此聯合機率分布為機率無向圖模型或馬爾可夫随機場。
盡管在給定每個節點的條件下,配置設定給該節點一個條件機率是可能的,無向圖的無向性導緻我們不能用條件機率參數化表示聯合機率,而要從一組條件獨立的原則中找出一系列局部函數的乘積來表示聯合機率。
最簡單的局部函數是定義在圖結構中的團上的勢函數,并且是嚴格正實值的函數形式。
下面我們來看下上面出現的馬爾可夫性、團的定義
1.3 馬爾可夫性
1.4 團與最大團
無向圖G中任何兩個結點均有邊連接配接的結點子集稱為團,若C是無向圖G的一個團,并且不能再加進任何一個G的結點使其稱為一個更大的團,則稱此C為最大團。
下圖表示由4個結點組成的無向圖。圖中由2個結點組成的團有5個:
。有2個最大團:
.而
不是一個團,因為
和
沒有邊連接配接。
将機率無向圖模型的聯合機率分布表示為其最大團上的随機變量的函數的乘積形式的操作,成為機率無向圖模型的因子分解。
1.5 機率無向圖模型的聯合機率分布
給定機率無向圖模型,設其無向圖為G,C為G上的最大團,
表示C對應的随機變量。那麼機率無向圖模型的聯合機率分布P(Y)可寫作圖中所有最大團C上的函數
的乘積形式,即
其中,Z是規範化因子,由式
給出。規範化因子保證P(Y)構成一個機率分布。函數
稱為勢函數。這裡要求勢函數
是嚴格正的,通常定義為指數函數:
機率無向圖模型的因子分解由Hammersley-Clifford定理來保證。
1.6 條件随機場
設X與Y是随機變量,P(Y|X)是在給定X的條件下Y的條件機率分布。若随機變量Y構成一個由無向圖G=(V,E)表示的馬爾可夫随機場,即
對任意結點v成立,則稱條件機率分布P(Y|X)為條件随機場。式中w~v表示在圖G=(V,E)中與結點v有邊連接配接的所有結點w,w≠v表示結點v以外的所有結點,
,
與
為結點v,u與w對應的随機變量。
1.7 線性鍊條件随機場
設
均為線性連結清單示的随機變量序列,若在給定随機變量序列X的條件下,随機變量序列Y的條件機率分布P(Y|X)構成條件随機場,即滿足馬爾可夫性
則稱P(Y|X)為線性鍊條件随機場。
線性鍊條件随機場
X和Y有相同的圖結構的線性鍊條件随機場
在标注問題中,X表示輸入觀測序列,Y表示對應的輸出标記序列或狀态序列。
2.條件随機場的不同形式
2.1 條件随機場的參數化形式
設P(Y|X)為線性鍊條件随機場,則在随機變量X取值為x的條件下,随機變量Y取值為y的條件機率具有如下形式:
其中,Z(x)是規範化因子
參數解釋
(1)
是定義在邊上的特征函數,稱為轉移特征,依賴于目前和前一個位置
(2)
是定義在及結點上的特征函數,稱為狀态特征,依賴于目前位置
(3)
,
是
,
對應的權值
(4)特征函數
,
取值為1或0:當滿足特征條件時取值為1,否則為0。
下面看一個簡單的例子:
2.2 條件随機場的簡化形式
為了後續機率計算、參數估計、推斷的友善,對條件随機場形式進行簡化
首先将轉移特征和狀态特征及其權值用統一的符号表示,設有
個轉移特征,
個狀态特征,K=
+
,記
然後,對轉移與狀态特征在各個位置i求和,記作
用
表示特征
的權值,即
于是,條件随機場可表示為
若以w表示權值向量,即
以
表示全局特征向量,即
則條件随機場可以寫成向量w與
的内積的形式:
其中,
2.3 條件随機場的矩陣形式
3.機率計算問題
3.1 前向-後向算法
為了友善起見,像隐馬爾可夫模型一樣,引進前向-後向向量,遞歸地計算以上機率及期望值,這樣的算法稱為前向-後向算法
3.2 機率計算
3.3 期望值計算
4.學習算法(參數估計)
條件随機場實際上是定義在時序資料上的對數線性模型,其學習方法包括極大似然估計和正則化的極大似然估計。具體的優化實作方法有改進的疊代尺度法IIS、梯度下降以及牛頓法。
5.預測算法(推斷)
條件随機場的預測問題是給定條件随機場P(Y|X)和輸入序列(觀測序列)x,求條件機率最大的輸出序列(标記序列)
,即對觀測序列進行标注。條件随機場的預測算法是著名的維特比算法.
由上式可得:
于是,條件随機場的預測問題成為求非規範化機率最大的最優路徑問題
這裡,路徑表示标記序列。其中
注意,這時隻需計算非規範化機率,而不必計算機率,可以大大提高效率。為了求解最優路徑,将問題改寫成如下形式:
其中,
是局部變量。
下面叙述維特比算法.
6.CRF++
現在關于CRF的工具有很多,這裡簡單介紹一下CRF++
CRF++包含Windows、Linux版本,tar_gz是Linux版本,zip是Windows版本。
介紹一下Windows版本,Linux差不多,不過包含源碼,感興趣可以讀一讀
(1)doc檔案夾:官方首頁的内容
(2)example檔案夾:有四個任務的訓練資料、測試資料和魔闆檔案
(3)sdk檔案:CRF++的頭檔案和靜态連結庫
(4)crf_learn.exe:CRF++的訓練程式
(5)crf_test.ext:CRF++的預測程式
(6)libcrfpp.dll:訓練程式和預測程式需要使用靜态連結庫。
以example檔案夾下basenp為例:
編寫一個批處理檔案如下:
..\..\crf_learn -c template train.data model >> train-info.txt
..\..\crf_test -m model test.data >> test-info.txt
運作exec_basenp.bat之前:
運作exec_basenp.bat之後:
CRF++工具包使用介紹
更多詳細介紹An Introduction to Conditional Random Fields