1.CRF簡化表示
先回顧一下線性鏈CRF參數化形式
和
都可以表示爲隨機變量
的函數,因此,可以將
和
統一成
其中,是轉移特徵
的個數,
是狀態特徵
的個數。特徵函數所代表的特徵集合一共有K個值,
。
用來表示特徵
的權重,
是
和
的集合,k=1,2,3,…,K。
所以,CRF的形式可簡化爲
對轉移特徵和狀態特徵在各位置i求和
將權重集合組合成向量w,將特徵函數包含的所有特徵
表示爲全局向量
,
可表示爲w和F(y,x)的內積w∙F(y,x)
其中
這裏,剛開始有點懵的是,前一篇舉例計算條件概率時,Y序列有5個節點,2個取值,轉移特徵一共有16個,狀態特徵有9個,條件概率的分子一共有9項相加(轉移特徵5-1項,狀態特徵5項),而這裏,w∙F(y,x)一共有K項,相當於例子中的16+9項,這就對不上了呀!
後來終於注意到
而
不滿足條件的項就是0,而對於,那種和當前狀態不滿足的,可能權重會變得接近於0.這樣一來,兩個計算方式就不衝突了。
2. CRF矩陣表示
CRF計算公式也可表示爲
令
則
令
表示序列第i-1,i位置的所有可能可能標註的概率矩陣,如果Y有m個取值,那麼
是m階方陣。
CRF可表示爲
這裏序列取n+1個,實際上是給序列添加了start和stop標誌後,序列結點個數實際上上n+2,從0到n+1。
Z(x)表示從start到stop整個序列的所有路徑的概率和,p(y│x)表示從start到stop某條路徑的概率(看到這裏才理解p(y│x)所表示的含義)。Z(x)爲規範化因子。
依然用上一篇的例子,
圖1
的取值爲y={S,O},那麼添加start和stop之後,start到stop的全部路徑爲下圖中所有路徑
圖2
而表示紅色路徑的概率。
3.概率的計算方式
從
由於序列的遞推關係,從前往後推,到位置i,i位置爲關於位置i-1爲
的條件概率爲
同時,從圖1可以看出,Y的各節點之間是無向的,也就是不僅依賴
,同時也依賴
,要確定
,那麼
和
也需要確定(個人理解)。
因此,引入前向後-後向算法,前向算法計算對
的依賴,後面算法計算
對
的依賴。
以標註序列爲例,p(y|x)是整個序列的概率,而實際標註過程中,每個位置上Y的可能取值的概率纔是決定每個位置該標註爲哪一個值的關鍵。我們的計算目標更多在於。
而根據前面的依賴關係,要計算位置i爲的概率,需要先計算位置i-1和i+1各可能標註值的概率,所以,還需要計算
(將此公式中i替換爲i+1就是
)
在前向算法中,定義
對每個指標i=0,1,2,…,n+1定義前向向量:
遞推公式
又可表示爲
表示在位置i的標記爲
並且i前面的位置確定的非規範概率,
表示位置i上Y的所有可能取值的概率,可看做是一個矩陣,如果Y的取值個數爲m,那麼它是m維向量。
同樣,定義後向向量爲:
又可表示爲
根據土遞推關係,start和stop之間所有路徑的概率和,實際上就是從start往stop推,第n位置的所有取值的概率和,因爲序列最後一個包含全部可能取值,那麼前面位置的所有可能全部包含在內,同理,也等同於從stop往後推,推到start,位置1的所有可能取值的概率和等同於start和stop之間的所有路徑概率和。因此
計算位置i-1和i的條件概率爲
4.期望計算
在學習參數時,需要用到轉移特徵的期望和狀態特徵的期望,前面已經把轉移和狀態兩特徵函數統一成特徵函數,所以,除了計算概率,還得計算特徵函數的期望。
特徵函數f_k關於條件分佈P(Y|X)的數學期望是
假設經驗分佈爲 ,特徵函數
關於聯合分佈P(Y,X)的數學期望是
其中
最重要的計算公式是第i和i-1位置的條件概率計算和特徵函數的兩個期望計算,前者在學習和預測時都要用到,後者主要用在學習參數。在學習參數,計算梯度時,需用實際的和
來替換
。
參考資料
《統計學習方法》
《統計自然語言處理》